浏览代码

EditToolbar: move to MediaCategoryViewController

as a view this needs to be managed by a viewcontrolker to adjust to turning and alike
Carola Nitz 6 年之前
父节点
当前提交
f454157149

+ 33 - 4
Sources/MediaCategories/MediaCategoryViewController.swift

@@ -14,12 +14,19 @@
 import Foundation
 
 class VLCMediaCategoryViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout, UISearchResultsUpdating, UISearchControllerDelegate, IndicatorInfoProvider {
-    
+
+    var category: MediaLibraryBaseModel
+
     private var services: Services
     private var searchController: UISearchController?
     private let searchDataSource = VLCLibrarySearchDisplayDataSource()
-    var category: MediaLibraryBaseModel
     private lazy var editController = VLCEditController(collectionView: self.collectionView!, category: self.category)
+    private lazy var editToolbar: VLCEditToolbar = {
+        let editToolbar = VLCEditToolbar(category: category)
+        editToolbar.delegate = editController
+        return editToolbar
+    }()
+    private var editToolbarConstraint: NSLayoutConstraint?
     private var cachedCellSize = CGSize.zero
 
 //    @available(iOS 11.0, *)
@@ -74,6 +81,7 @@ class VLCMediaCategoryViewController: UICollectionViewController, UICollectionVi
         super.viewDidLoad()
         setupCollectionView()
         setupSearchController()
+        setupEditToolbar()
         _ = (MLMediaLibrary.sharedMediaLibrary() as! MLMediaLibrary).libraryDidAppear()
     }
 
@@ -89,6 +97,7 @@ class VLCMediaCategoryViewController: UICollectionViewController, UICollectionVi
 
     @objc func themeDidChange() {
         collectionView?.backgroundColor = PresentationTheme.current.colors.background
+        editToolbar.backgroundColor = PresentationTheme.current.colors.background
         setNeedsStatusBarAppearanceUpdate()
     }
 
@@ -108,6 +117,19 @@ class VLCMediaCategoryViewController: UICollectionViewController, UICollectionVi
         }
     }
 
+    func setupEditToolbar() {
+        editToolbar.translatesAutoresizingMaskIntoConstraints = false
+        view.addSubview(editToolbar)
+        editToolbarConstraint = editToolbar.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 50)
+        NSLayoutConstraint.activate([
+            editToolbarConstraint!,
+            editToolbar.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+            editToolbar.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+            editToolbar.heightAnchor.constraint(equalToConstant: 50)
+        ])
+
+    }
+
     override func viewDidAppear(_ animated: Bool) {
         super.viewDidAppear(animated)
         reloadData()
@@ -157,8 +179,8 @@ class VLCMediaCategoryViewController: UICollectionViewController, UICollectionVi
         collectionView?.dataSource = editing ? editController : self
         collectionView?.delegate = editing ? editController : self
 
-        editController.toolbarNeedsUpdate(editing: editing)
-
+        editController.resetSelections()
+        displayEditToolbar()
         let layoutToBe = editing ? editCollectionViewLayout : UICollectionViewFlowLayout()
         collectionView?.setCollectionViewLayout(layoutToBe, animated: false, completion: {
             [weak self] finished in
@@ -170,6 +192,13 @@ class VLCMediaCategoryViewController: UICollectionViewController, UICollectionVi
         })
     }
 
+    private func displayEditToolbar() {
+        UIView.animate(withDuration: 0.3) { [weak self] in
+            self?.editToolbarConstraint?.constant = self?.isEditing == true ? 0 : 50
+            self?.view.layoutIfNeeded()
+        }
+    }
+
     // MARK: - Search
 
     func updateSearchResults(for searchController: UISearchController) {

+ 3 - 26
Sources/VLCEditController.swift

@@ -9,30 +9,19 @@
  * Refer to the COPYING file of the official project for license.
  *****************************************************************************/
 
-protocol VLCEditControllerDataSource {
-    func toolbarNeedsUpdate(editing: Bool)
-}
-
 class VLCEditController: NSObject {
     private var selectedCellIndexPaths = Set<IndexPath>()
     private let collectionView: UICollectionView
     private let category: MediaLibraryBaseModel
 
-//    private lazy var editToolbar: VLCEditToolbar = {
-//        let editToolbar = VLCEditToolbar(frame: CGRect(x: 0, y: 400,
-//                                                       width: collectionView.frame.width, height: 50))
-//        editToolbar.isHidden = true
-//        editToolbar.delegate = self
-//        return editToolbar
-//    }()
-
     init(collectionView: UICollectionView, category: MediaLibraryBaseModel) {
         self.collectionView = collectionView
         self.category = category
         super.init()
+    }
 
-//        collectionView.addSubview(editToolbar)
-//        collectionView.bringSubview(toFront: editToolbar)
+    func resetSelections() {
+        selectedCellIndexPaths.removeAll(keepingCapacity: false)
     }
 }
 
@@ -94,18 +83,6 @@ private extension VLCEditController {
     }
 }
 
-// MARK: - VLCEditControllerDataSource
-
-extension VLCEditController: VLCEditControllerDataSource {
-    func toolbarNeedsUpdate(editing: Bool) {
-//        editToolbar.isHidden = !editing
-        if !editing {
-            // not in editing mode anymore should reset
-            selectedCellIndexPaths.removeAll(keepingCapacity: false)
-        }
-    }
-}
-
 // MARK: - VLCEditToolbarDelegate
 
 extension VLCEditController: VLCEditToolbarDelegate {

+ 3 - 2
Sources/VLCEditToolbar.swift

@@ -32,8 +32,9 @@ class VLCEditToolbar: UIView {
         delegate?.rename()
     }
 
-    override init(frame: CGRect) {
-        super.init(frame: frame)
+    init(category: MediaLibraryBaseModel) {
+        super.init(frame: .zero)
+        //depending on category show edit buttons
     }
 
     required init?(coder aDecoder: NSCoder) {