Просмотр исходного кода

MediaCategoryViewController: Handle new category model

Soomin Lee 7 лет назад
Родитель
Сommit
ae806c56c9

+ 25 - 17
Sources/MediaCategories/MediaCategory.swift

@@ -10,50 +10,58 @@
  * Refer to the COPYING file of the official project for license.
  *****************************************************************************/
 
-class VLCMovieCategoryViewController: VLCMediaCategoryViewController<MLFile> {
+class VLCMovieCategoryViewController: VLCMediaCategoryViewController<VLCMLMedia, VideoModel> {
     init(_ services: Services) {
-        super.init(services: services, category: VLCMediaSubcategories.movies)
+        let model = VideoModel(medialibrary: services.medialibraryManager)
+        super.init(services: services, category: model)
     }
 }
 
-class VLCShowEpisodeCategoryViewController: VLCMediaCategoryViewController<MLShowEpisode> {
+class VLCShowEpisodeCategoryViewController: VLCMediaCategoryViewController<MLShowEpisode, VideoModel> {
     init(_ services: Services) {
-        super.init(services: services, category: VLCMediaSubcategories.episodes)
+        let model = VideoModel(medialibrary: services.medialibraryManager)
+        super.init(services: services, category: model)
     }
 }
 
-class VLCVideoPlaylistCategoryViewController: VLCMediaCategoryViewController<MLLabel> {
+class VLCVideoPlaylistCategoryViewController: VLCMediaCategoryViewController<MLLabel, VideoModel> {
     init(_ services: Services) {
-        super.init(services: services, category: VLCMediaSubcategories.videoPlaylists)
-    }
+        let model = VideoModel(medialibrary: services.medialibraryManager)
+        super.init(services: services, category: model)
+ }
 }
 
-class VLCTrackCategoryViewController: VLCMediaCategoryViewController<MLFile> {
+class VLCTrackCategoryViewController: VLCMediaCategoryViewController<MLFile, VideoModel> {
     init(_ services: Services) {
-        super.init(services: services, category: VLCMediaSubcategories.tracks)
+        let model = VideoModel(medialibrary: services.medialibraryManager)
+        super.init(services: services, category: model)
     }
 }
 
-class VLCGenreCategoryViewController: VLCMediaCategoryViewController<String> {
+class VLCGenreCategoryViewController: VLCMediaCategoryViewController<String, VideoModel> {
     init(_ services: Services) {
-        super.init(services: services, category: VLCMediaSubcategories.genres)
+        let model = VideoModel(medialibrary: services.medialibraryManager)
+        super.init(services: services, category: model)
     }
 }
 
-class VLCArtistCategoryViewController: VLCMediaCategoryViewController<String> {
+class VLCArtistCategoryViewController: VLCMediaCategoryViewController<String, VideoModel> {
     init(_ services: Services) {
-        super.init(services: services, category: VLCMediaSubcategories.artists)
+        let model = VideoModel(medialibrary: services.medialibraryManager)
+        super.init(services: services, category: model)
     }
 }
 
-class VLCAlbumCategoryViewController: VLCMediaCategoryViewController<MLAlbum> {
+class VLCAlbumCategoryViewController: VLCMediaCategoryViewController<MLAlbum, VideoModel> {
     init(_ services: Services) {
-        super.init(services: services, category: VLCMediaSubcategories.albums)
+        let model = VideoModel(medialibrary: services.medialibraryManager)
+        super.init(services: services, category: model)
     }
 }
 
-class VLCAudioPlaylistCategoryViewController: VLCMediaCategoryViewController<MLLabel> {
+class VLCAudioPlaylistCategoryViewController: VLCMediaCategoryViewController<MLLabel, VideoModel> {
     init(_ services: Services) {
-        super.init(services: services, category: VLCMediaSubcategories.audioPlaylists)
+        let model = VideoModel(medialibrary: services.medialibraryManager)
+        super.init(services: services, category: model)
     }
 }

+ 16 - 15
Sources/MediaCategories/MediaCategoryViewController.swift

@@ -13,18 +13,17 @@
 
 import Foundation
 
-class VLCMediaCategoryViewController<T>: UICollectionViewController, UICollectionViewDelegateFlowLayout, UISearchResultsUpdating, UISearchControllerDelegate, IndicatorInfoProvider {
+class VLCMediaCategoryViewController<T, ModelType: MediaLibraryBaseModel>: UICollectionViewController, UICollectionViewDelegateFlowLayout, UISearchResultsUpdating, UISearchControllerDelegate, IndicatorInfoProvider {
     let cellPadding: CGFloat = 5.0
     private var services: Services
     private var searchController: UISearchController?
     private let searchDataSource = VLCLibrarySearchDisplayDataSource()
-    var category: VLCMediaSubcategoryModel<T>
+    var category: ModelType
 
-    @available(iOS 11.0, *)
-    lazy var dragAndDropManager: VLCDragAndDropManager = { () -> VLCDragAndDropManager<T> in
-        VLCDragAndDropManager<T>(subcategory: category)
-
-    }()
+//    @available(iOS 11.0, *)
+//    lazy var dragAndDropManager: VLCDragAndDropManager = { () -> VLCDragAndDropManager<T> in
+//        VLCDragAndDropManager<T>(subcategory: VLCMediaSubcategories<>)
+//    }()
 
     lazy var emptyView: VLCEmptyLibraryView = {
         let name = String(describing: VLCEmptyLibraryView.self)
@@ -38,13 +37,12 @@ class VLCMediaCategoryViewController<T>: UICollectionViewController, UICollectio
         fatalError()
     }
 
-    init(services: Services, category: VLCMediaSubcategoryModel<T>) {
+    init(services: Services, category: ModelType) {
         self.services = services
         self.category = category
-
         super.init(collectionViewLayout: UICollectionViewFlowLayout())
         NotificationCenter.default.addObserver(self, selector: #selector(themeDidChange), name: .VLCThemeDidChangeNotification, object: nil)
-        NotificationCenter.default.addObserver(self, selector: #selector(reloadData), name: category.changeNotificationName, object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(reloadData), name: category.notificaitonName, object: nil)
     }
 
     override var preferredStatusBarStyle: UIStatusBarStyle {
@@ -52,8 +50,11 @@ class VLCMediaCategoryViewController<T>: UICollectionViewController, UICollectio
     }
 
     @objc func reloadData() {
-        collectionView?.reloadData()
-        updateUIForContent()
+        DispatchQueue.main.async {
+            [weak self] in
+            self?.collectionView?.reloadData()
+            self?.updateUIForContent()
+        }
     }
 
     @available(*, unavailable)
@@ -89,8 +90,8 @@ class VLCMediaCategoryViewController<T>: UICollectionViewController, UICollectio
         collectionView?.backgroundColor = PresentationTheme.current.colors.background
         collectionView?.alwaysBounceVertical = true
         if #available(iOS 11.0, *) {
-            collectionView?.dragDelegate = dragAndDropManager
-            collectionView?.dropDelegate = dragAndDropManager
+//            collectionView?.dragDelegate = dragAndDropManager
+//            collectionView?.dropDelegate = dragAndDropManager
         }
     }
 
@@ -150,7 +151,7 @@ class VLCMediaCategoryViewController<T>: UICollectionViewController, UICollectio
     }
 
     func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {
-        return IndicatorInfo(title:category.indicatorInfoName)
+        return IndicatorInfo(title:category.indicatorName)
     }
 
     // MARK: - UICollectionViewDataSource