[vlc-commits] macosx: merge both audio library data sources

Felix Paul Kühne git at videolan.org
Wed Aug 14 11:46:22 CEST 2019


vlc | branch: master | Felix Paul Kühne <felix at feepk.net> | Wed Aug 14 11:42:20 2019 +0200| [3417d4eb604b9c174640b8354c89327029910671] | committer: Felix Paul Kühne

macosx: merge both audio library data sources

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3417d4eb604b9c174640b8354c89327029910671
---

 .../package/macosx/VLC.xcodeproj/project.pbxproj   |   6 -
 modules/gui/macosx/Makefile.am                     |   2 -
 .../gui/macosx/library/VLCLibraryAudioDataSource.h |   1 +
 .../gui/macosx/library/VLCLibraryAudioDataSource.m | 174 +++++++++++++++------
 .../library/VLCLibraryTiledAudioViewController.h   |  40 -----
 .../library/VLCLibraryTiledAudioViewController.m   | 174 ---------------------
 modules/gui/macosx/library/VLCLibraryWindow.m      |  12 +-
 po/POTFILES.in                                     |   2 -
 8 files changed, 134 insertions(+), 277 deletions(-)

diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
index 99ade54dc1..3e28d52b18 100644
--- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
@@ -162,7 +162,6 @@
 		7DE2F0442282C84A0040DD0A /* VLCLibraryAudioDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DE2F0432282C84A0040DD0A /* VLCLibraryAudioDataSource.m */; };
 		7DE2F0472282D5D10040DD0A /* VLCLibraryTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DE2F0462282D5D10040DD0A /* VLCLibraryTableCellView.m */; };
 		7DE7232E22A51F8D00D72616 /* VLCPositionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DE7232D22A51F8D00D72616 /* VLCPositionFormatter.m */; };
-		7DE7E72F228C795B00D6EA38 /* VLCLibraryTiledAudioViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DE7E72E228C795B00D6EA38 /* VLCLibraryTiledAudioViewController.m */; };
 		7DE82E7922843781002D341A /* VLCLibraryAlbumTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DE82E7822843781002D341A /* VLCLibraryAlbumTableCellView.m */; };
 		7DE9C7DD220728420089108F /* VLCPlayerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DE9C7DC220728420089108F /* VLCPlayerController.m */; };
 		7DFBDCA82269E77500B700A5 /* VLCLibraryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DFBDCA72269E77500B700A5 /* VLCLibraryController.m */; };
@@ -565,8 +564,6 @@
 		7DE2F0482282D7980040DD0A /* VLCLibraryTableCellView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VLCLibraryTableCellView.xib; sourceTree = "<group>"; };
 		7DE7232C22A51F8C00D72616 /* VLCPositionFormatter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCPositionFormatter.h; sourceTree = "<group>"; };
 		7DE7232D22A51F8D00D72616 /* VLCPositionFormatter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCPositionFormatter.m; sourceTree = "<group>"; };
-		7DE7E72D228C795B00D6EA38 /* VLCLibraryTiledAudioViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryTiledAudioViewController.h; sourceTree = "<group>"; };
-		7DE7E72E228C795B00D6EA38 /* VLCLibraryTiledAudioViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryTiledAudioViewController.m; sourceTree = "<group>"; };
 		7DE82E7722843781002D341A /* VLCLibraryAlbumTableCellView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryAlbumTableCellView.h; sourceTree = "<group>"; };
 		7DE82E7822843781002D341A /* VLCLibraryAlbumTableCellView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryAlbumTableCellView.m; sourceTree = "<group>"; };
 		7DE82E7A228437AA002D341A /* VLCLibraryAlbumTableCellView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VLCLibraryAlbumTableCellView.xib; sourceTree = "<group>"; };
@@ -1026,8 +1023,6 @@
 				7DBB7638227F3FBC002649E1 /* VLCLibraryCollectionViewSupplementaryElementView.m */,
 				7D713D302201AE350042BEB7 /* VLCLibraryWindow.h */,
 				7D713D312201AE350042BEB7 /* VLCLibraryWindow.m */,
-				7DE7E72D228C795B00D6EA38 /* VLCLibraryTiledAudioViewController.h */,
-				7DE7E72E228C795B00D6EA38 /* VLCLibraryTiledAudioViewController.m */,
 				7DFBDCA62269E77400B700A5 /* VLCLibraryController.h */,
 				7DFBDCA72269E77500B700A5 /* VLCLibraryController.m */,
 				7DFBDCA92269E77F00B700A5 /* VLCLibraryModel.h */,
@@ -1767,7 +1762,6 @@
 				1C3113D31E508C6900D4DD76 /* VLCResumeDialogController.m in Sources */,
 				7D2FFA40227B8A5B0085D649 /* VLCLinearProgressIndicator.m in Sources */,
 				7DFBDCB1226A518400B700A5 /* VLCLibraryMenuController.m in Sources */,
-				7DE7E72F228C795B00D6EA38 /* VLCLibraryTiledAudioViewController.m in Sources */,
 				1C3113D51E508C6900D4DD76 /* VLCTextfieldPanelController.m in Sources */,
 				7DFBDCAE2269ED0C00B700A5 /* VLCLibraryVideoDataSource.m in Sources */,
 				1C3113D71E508C6900D4DD76 /* VLCPopupPanelController.m in Sources */,
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index 216eed4923..ef6db51d54 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -72,8 +72,6 @@ libmacosx_plugin_la_SOURCES = \
 	gui/macosx/library/VLCLibrarySortingMenuController.m \
 	gui/macosx/library/VLCLibraryTableCellView.h \
 	gui/macosx/library/VLCLibraryTableCellView.m \
-	gui/macosx/library/VLCLibraryTiledAudioViewController.h \
-	gui/macosx/library/VLCLibraryTiledAudioViewController.m \
 	gui/macosx/library/VLCLibraryVideoDataSource.h \
 	gui/macosx/library/VLCLibraryVideoDataSource.m \
 	gui/macosx/library/VLCLibraryWindow.h \
diff --git a/modules/gui/macosx/library/VLCLibraryAudioDataSource.h b/modules/gui/macosx/library/VLCLibraryAudioDataSource.h
index e90a0c8714..75071f2e4b 100644
--- a/modules/gui/macosx/library/VLCLibraryAudioDataSource.h
+++ b/modules/gui/macosx/library/VLCLibraryAudioDataSource.h
@@ -35,6 +35,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (readwrite, assign) NSSegmentedControl *segmentedControl;
 @property (readwrite, assign) NSTableView *collectionSelectionTableView;
 @property (readwrite, assign) NSTableView *groupSelectionTableView;
+ at property (readwrite, assign) NSCollectionView *collectionView;
 
 - (void)setupAppearance;
 - (void)reloadAppearance;
diff --git a/modules/gui/macosx/library/VLCLibraryAudioDataSource.m b/modules/gui/macosx/library/VLCLibraryAudioDataSource.m
index bb0701e11c..9db88f9637 100644
--- a/modules/gui/macosx/library/VLCLibraryAudioDataSource.m
+++ b/modules/gui/macosx/library/VLCLibraryAudioDataSource.m
@@ -26,12 +26,20 @@
 #import "library/VLCLibraryDataTypes.h"
 #import "library/VLCLibraryTableCellView.h"
 #import "library/VLCLibraryAlbumTableCellView.h"
+#import "library/VLCLibraryCollectionViewItem.h"
 
 #import "extensions/NSString+Helpers.h"
 #import "views/VLCImageView.h"
 
 static NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier";
 
+ at interface VLCLibraryAudioDataSource () <NSCollectionViewDelegate, NSCollectionViewDataSource>
+{
+    NSArray *_displayedCollection;
+    enum vlc_ml_parent_type _currentParentType;
+}
+ at end
+
 @implementation VLCLibraryAudioDataSource
 
 - (instancetype)init
@@ -49,6 +57,15 @@ static NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier
         [self.segmentedControl setLabel:availableCollections[x] forSegment:x];
     }
 
+    _collectionView.dataSource = self;
+    _collectionView.delegate = self;
+    [_collectionView registerClass:[VLCLibraryCollectionViewItem class] forItemWithIdentifier:VLCLibraryCellIdentifier];
+    NSCollectionViewFlowLayout *flowLayout = _collectionView.collectionViewLayout;
+    flowLayout.itemSize = CGSizeMake(214., 260.);
+    flowLayout.sectionInset = NSEdgeInsetsMake(20., 20., 20., 20.);
+    flowLayout.minimumLineSpacing = 20.;
+    flowLayout.minimumInteritemSpacing = 20.;
+
     [self reloadAppearance];
 }
 
@@ -60,40 +77,45 @@ static NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier
 
     [self.collectionSelectionTableView reloadData];
     [self.groupSelectionTableView reloadData];
-}
 
-- (IBAction)segmentedControlAction:(id)sender
-{
-    [self.collectionSelectionTableView reloadData];
-    [self.groupSelectionTableView reloadData];
+    [self.collectionView reloadData];
 }
 
-- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
+- (IBAction)segmentedControlAction:(id)sender
 {
-    NSInteger ret = 0;
-
     switch (_segmentedControl.selectedSegment) {
-        case 0: // artists
-            ret = _libraryModel.numberOfArtists;
+        case 0:
+            _displayedCollection = [self.libraryModel listOfArtists];
+            _currentParentType = VLC_ML_PARENT_ARTIST;
             break;
-
-        case 1: // albums
-            ret = _libraryModel.numberOfAlbums;
+        case 1:
+            _displayedCollection = [self.libraryModel listOfAlbums];
+            _currentParentType = VLC_ML_PARENT_ALBUM;
             break;
-
-        case 2: // songs
-            ret = _libraryModel.numberOfAudioMedia;
+        case 2:
+            _displayedCollection = [self.libraryModel listOfAudioMedia];
+            _currentParentType = VLC_ML_PARENT_UNKNOWN;
             break;
-
-        case 3: // genres
-            ret = _libraryModel.numberOfGenres;
+        case 3:
+            _displayedCollection = [self.libraryModel listOfGenres];
+            _currentParentType = VLC_ML_PARENT_GENRE;
             break;
 
         default:
+            NSAssert(1, @"reached the unreachable");
             break;
     }
+    [self.collectionView reloadData];
 
-    return ret;
+    [self.collectionSelectionTableView reloadData];
+    [self.groupSelectionTableView reloadData];
+}
+
+#pragma mark - table view data source and delegation
+
+- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
+{
+    return _displayedCollection.count;
 }
 
 - (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
@@ -118,11 +140,10 @@ static NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier
         cellView.identifier = VLCAudioLibraryCellIdentifier;
     }
 
-    switch (self.segmentedControl.selectedSegment) {
-        case 0: // artists
+    switch (_currentParentType) {
+        case VLC_ML_PARENT_ARTIST:
         {
-            NSArray *listOfArtists = [_libraryModel listOfArtists];
-            VLCMediaLibraryArtist *artist = listOfArtists[row];
+            VLCMediaLibraryArtist *artist = _displayedCollection[row];
 
             cellView.singlePrimaryTitleTextField.hidden = NO;
             cellView.singlePrimaryTitleTextField.stringValue = artist.name;
@@ -137,10 +158,9 @@ static NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier
             cellView.representedImageView.image = image;
             break;
         }
-        case 1: // albums
+        case VLC_ML_PARENT_ALBUM:
         {
-            NSArray *listOfAlbums = [_libraryModel listOfAlbums];
-            VLCMediaLibraryAlbum *album = listOfAlbums[row];
+            VLCMediaLibraryAlbum *album = _displayedCollection[row];
 
             cellView.primaryTitleTextField.hidden = NO;
             cellView.secondaryTitleTextField.hidden = NO;
@@ -157,10 +177,9 @@ static NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier
             cellView.representedImageView.image = image;
             break;
         }
-        case 2: // songs
+        case VLC_ML_PARENT_UNKNOWN:
         {
-            NSArray *listOfAudioMedia = [_libraryModel listOfAudioMedia];
-            VLCMediaLibraryMediaItem *mediaItem = listOfAudioMedia[row];
+            VLCMediaLibraryMediaItem *mediaItem = _displayedCollection[row];
 
             NSImage *image;
             if (mediaItem.smallArtworkGenerated) {
@@ -196,10 +215,9 @@ static NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier
             }
             break;
         }
-        case 3: // genres
+        case VLC_ML_PARENT_GENRE:
         {
-            NSArray *listOfGenres = [_libraryModel listOfGenres];
-            VLCMediaLibraryGenre *genre = listOfGenres[row];
+            VLCMediaLibraryGenre *genre = _displayedCollection[row];
 
             cellView.primaryTitleTextField.hidden = NO;
             cellView.secondaryTitleTextField.hidden = NO;
@@ -211,6 +229,7 @@ static NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier
             break;
         }
         default:
+            NSAssert(1, @"reached the unreachable");
             break;
     }
 
@@ -219,43 +238,110 @@ static NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier
 
 - (void)tableViewSelectionDidChange:(NSNotification *)notification
 {
-    switch (self.segmentedControl.selectedSegment) {
-        case 0: // artists
+    switch (_currentParentType) {
+        case VLC_ML_PARENT_ARTIST:
         {
-            NSArray *listOfArtists = [_libraryModel listOfArtists];
-            VLCMediaLibraryArtist *artist = listOfArtists[self.collectionSelectionTableView.selectedRow];
+            VLCMediaLibraryArtist *artist = _displayedCollection[self.collectionSelectionTableView.selectedRow];
             NSArray *albumsForArtist = [_libraryModel listAlbumsOfParentType:VLC_ML_PARENT_ARTIST forID:artist.artistID];
             _groupDataSource.representedListOfAlbums = albumsForArtist;
             break;
         }
-        case 1: // albums
+        case VLC_ML_PARENT_ALBUM:
         {
-            NSArray *listOfAlbums = [_libraryModel listOfAlbums];
-            VLCMediaLibraryAlbum *album = listOfAlbums[self.collectionSelectionTableView.selectedRow];
+            VLCMediaLibraryAlbum *album = _displayedCollection[self.collectionSelectionTableView.selectedRow];
             _groupDataSource.representedListOfAlbums = @[album];
             break;
         }
-        case 2: // songs
+        case VLC_ML_PARENT_UNKNOWN:
         {
             // FIXME: we have nothing to show here
             _groupDataSource.representedListOfAlbums = nil;
             break;
         }
-        case 3: // genres
+        case VLC_ML_PARENT_GENRE:
         {
-            NSArray *listOfGenres = [_libraryModel listOfGenres];
-            VLCMediaLibraryGenre *genre = listOfGenres[self.collectionSelectionTableView.selectedRow];
+            VLCMediaLibraryGenre *genre = _displayedCollection[self.collectionSelectionTableView.selectedRow];
             NSArray *albumsForGenre = [_libraryModel listAlbumsOfParentType:VLC_ML_PARENT_GENRE forID:genre.genreID];
             _groupDataSource.representedListOfAlbums = albumsForGenre;
             break;
         }
         default:
+            NSAssert(1, @"reached the unreachable");
             break;
     }
 
     [self.groupSelectionTableView reloadData];
 }
 
+#pragma mark - collection view data source and delegation
+
+- (NSInteger)collectionView:(NSCollectionView *)collectionView
+     numberOfItemsInSection:(NSInteger)section
+{
+    return _displayedCollection.count;
+}
+
+- (NSInteger)numberOfSectionsInCollectionView:(NSCollectionView *)collectionView
+{
+    return 1;
+}
+
+- (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView
+     itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath
+{
+    VLCLibraryCollectionViewItem *viewItem = [collectionView makeItemWithIdentifier:VLCLibraryCellIdentifier forIndexPath:indexPath];
+    switch (_currentParentType) {
+        case VLC_ML_PARENT_ARTIST:
+        {
+            VLCMediaLibraryArtist *artist = _displayedCollection[indexPath.item];
+            viewItem.mediaTitleTextField.stringValue = artist.name;
+            viewItem.durationTextField.stringValue = [NSString stringWithFormat:_NS("%u albums, %u songs"), artist.numberOfAlbums, artist.numberOfTracks];
+            NSImage *image;
+            if (artist.artworkMRL.length > 0) {
+                image = [[NSImage alloc] initWithContentsOfURL:[NSURL URLWithString:artist.artworkMRL]];
+            }
+            if (!image) {
+                image = [NSImage imageNamed: @"noart.png"];
+            }
+            viewItem.mediaImageView.image = image;
+            break;
+        }
+        case VLC_ML_PARENT_ALBUM:
+        {
+            VLCMediaLibraryAlbum *album = _displayedCollection[indexPath.item];
+            viewItem.mediaTitleTextField.stringValue = album.title;
+            viewItem.durationTextField.stringValue = [NSString stringWithFormat:_NS("%u songs"), album.numberOfTracks];
+            NSImage *image;
+            if (album.artworkMRL.length > 0) {
+                image = [[NSImage alloc] initWithContentsOfURL:[NSURL URLWithString:album.artworkMRL]];
+            }
+            if (!image) {
+                image = [NSImage imageNamed: @"noart.png"];
+            }
+            viewItem.mediaImageView.image = image;
+            break;
+        }
+        case VLC_ML_PARENT_UNKNOWN:
+        {
+            VLCMediaLibraryMediaItem *mediaItem = _displayedCollection[indexPath.item];
+            viewItem.representedMediaItem = mediaItem;
+            break;
+        }
+        case VLC_ML_PARENT_GENRE:
+        {
+            VLCMediaLibraryGenre *genre = _displayedCollection[indexPath.item];
+            viewItem.mediaTitleTextField.stringValue = genre.name;
+            viewItem.durationTextField.stringValue = [NSString stringWithFormat:_NS("%u items"), genre.numberOfTracks];
+            viewItem.mediaImageView.image = [NSImage imageNamed: @"noart.png"];
+        }
+
+        default:
+            break;
+    }
+
+    return viewItem;
+}
+
 @end
 
 @implementation VLCLibraryGroupDataSource
diff --git a/modules/gui/macosx/library/VLCLibraryTiledAudioViewController.h b/modules/gui/macosx/library/VLCLibraryTiledAudioViewController.h
deleted file mode 100644
index 94a5b00957..0000000000
--- a/modules/gui/macosx/library/VLCLibraryTiledAudioViewController.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*****************************************************************************
- * VLCLibraryTiledAudioViewController.h: MacOS X interface module
- *****************************************************************************
- * Copyright (C) 2019 VLC authors and VideoLAN
- *
- * Authors: Felix Paul Kühne <fkuehne # videolan -dot- org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#import <Cocoa/Cocoa.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
- at class VLCLibraryModel;
-
- at interface VLCLibraryTiledAudioViewController : NSObject
-
- at property (readwrite, assign) NSCollectionView *collectionView;
- at property (readwrite, assign) NSSegmentedControl *segmentedControl;
- at property (readwrite, assign) VLCLibraryModel *libraryModel;
-
-- (void)setupAppearance;
-- (void)reloadAppearance;
-
- at end
-
-NS_ASSUME_NONNULL_END
diff --git a/modules/gui/macosx/library/VLCLibraryTiledAudioViewController.m b/modules/gui/macosx/library/VLCLibraryTiledAudioViewController.m
deleted file mode 100644
index f0fe181c87..0000000000
--- a/modules/gui/macosx/library/VLCLibraryTiledAudioViewController.m
+++ /dev/null
@@ -1,174 +0,0 @@
-/*****************************************************************************
- * VLCLibraryTiledAudioViewController.m: MacOS X interface module
- *****************************************************************************
- * Copyright (C) 2019 VLC authors and VideoLAN
- *
- * Authors: Felix Paul Kühne <fkuehne # videolan -dot- org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#import "VLCLibraryTiledAudioViewController.h"
-
-#import "library/VLCLibraryModel.h"
-#import "library/VLCLibraryCollectionViewItem.h"
-#import "library/VLCLibraryDataTypes.h"
-
-#import "extensions/NSString+Helpers.h"
-#import "views/VLCImageView.h"
-
- at interface VLCLibraryTiledAudioViewController () <NSCollectionViewDelegate, NSCollectionViewDataSource>
-{
-    NSArray *_displayedCollection;
-    enum vlc_ml_parent_type _currentParentType;
-}
- at end
-
- at implementation VLCLibraryTiledAudioViewController
-
-- (void)setupAppearance
-{
-    NSArray *availableCollections = [VLCLibraryModel availableAudioCollections];
-    NSUInteger availableCollectionsCount = availableCollections.count;
-    self.segmentedControl.segmentCount = availableCollectionsCount;
-    for (NSUInteger x = 0; x < availableCollectionsCount; x++) {
-        [self.segmentedControl setLabel:availableCollections[x] forSegment:x];
-    }
-
-    _collectionView.dataSource = self;
-    _collectionView.delegate = self;
-    [_collectionView registerClass:[VLCLibraryCollectionViewItem class] forItemWithIdentifier:VLCLibraryCellIdentifier];
-    NSCollectionViewFlowLayout *flowLayout = _collectionView.collectionViewLayout;
-    flowLayout.itemSize = CGSizeMake(214., 260.);
-    flowLayout.sectionInset = NSEdgeInsetsMake(20., 20., 20., 20.);
-    flowLayout.minimumLineSpacing = 20.;
-    flowLayout.minimumInteritemSpacing = 20.;
-
-    [self.segmentedControl setTarget:self];
-    [self.segmentedControl setAction:@selector(segmentedControlAction:)];
-    [self segmentedControlAction:nil];
-}
-
-- (void)reloadAppearance
-{
-    [self.segmentedControl setTarget:self];
-    [self.segmentedControl setAction:@selector(segmentedControlAction:)];
-    [self segmentedControlAction:nil];
-
-    [self.collectionView reloadData];
-}
-
-- (IBAction)segmentedControlAction:(id)sender
-{
-    // FIXME: this relies on knowledge internal to VLCLibraryModel
-    switch (_segmentedControl.selectedSegment) {
-        case 0:
-            _displayedCollection = [self.libraryModel listOfArtists];
-            _currentParentType = VLC_ML_PARENT_ARTIST;
-            break;
-        case 1:
-            _displayedCollection = [self.libraryModel listOfAlbums];
-            _currentParentType = VLC_ML_PARENT_ALBUM;
-            break;
-        case 2:
-            _displayedCollection = [self.libraryModel listOfAudioMedia];
-            _currentParentType = VLC_ML_PARENT_UNKNOWN;
-            break;
-        case 3:
-            _displayedCollection = [self.libraryModel listOfGenres];
-            _currentParentType = VLC_ML_PARENT_GENRE;
-            break;
-
-        default:
-            NSAssert(1, @"reached the unreachable");
-            break;
-    }
-    [self.collectionView reloadData];
-}
-
-- (NSInteger)collectionView:(NSCollectionView *)collectionView
-     numberOfItemsInSection:(NSInteger)section
-{
-    return _displayedCollection.count;
-}
-
-- (NSInteger)numberOfSectionsInCollectionView:(NSCollectionView *)collectionView
-{
-    return 1;
-}
-
-- (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView
-     itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath
-{
-    VLCLibraryCollectionViewItem *viewItem = [collectionView makeItemWithIdentifier:VLCLibraryCellIdentifier forIndexPath:indexPath];
-    switch (_currentParentType) {
-        case VLC_ML_PARENT_ARTIST:
-        {
-            VLCMediaLibraryArtist *artist = _displayedCollection[indexPath.item];
-            viewItem.mediaTitleTextField.stringValue = artist.name;
-            viewItem.durationTextField.stringValue = [NSString stringWithFormat:_NS("%u albums, %u songs"), artist.numberOfAlbums, artist.numberOfTracks];
-            NSImage *image;
-            if (artist.artworkMRL.length > 0) {
-                image = [[NSImage alloc] initWithContentsOfURL:[NSURL URLWithString:artist.artworkMRL]];
-            }
-            if (!image) {
-                image = [NSImage imageNamed: @"noart.png"];
-            }
-            viewItem.mediaImageView.image = image;
-            break;
-        }
-        case VLC_ML_PARENT_ALBUM:
-        {
-            VLCMediaLibraryAlbum *album = _displayedCollection[indexPath.item];
-            viewItem.mediaTitleTextField.stringValue = album.title;
-            viewItem.durationTextField.stringValue = [NSString stringWithFormat:_NS("%u songs"), album.numberOfTracks];
-            NSImage *image;
-            if (album.artworkMRL.length > 0) {
-                image = [[NSImage alloc] initWithContentsOfURL:[NSURL URLWithString:album.artworkMRL]];
-            }
-            if (!image) {
-                image = [NSImage imageNamed: @"noart.png"];
-            }
-            viewItem.mediaImageView.image = image;
-            break;
-        }
-        case VLC_ML_PARENT_UNKNOWN:
-        {
-            VLCMediaLibraryMediaItem *mediaItem = _displayedCollection[indexPath.item];
-            viewItem.representedMediaItem = mediaItem;
-            break;
-        }
-        case VLC_ML_PARENT_GENRE:
-        {
-            VLCMediaLibraryGenre *genre = _displayedCollection[indexPath.item];
-            viewItem.mediaTitleTextField.stringValue = genre.name;
-            viewItem.durationTextField.stringValue = [NSString stringWithFormat:_NS("%u items"), genre.numberOfTracks];
-            viewItem.mediaImageView.image = [NSImage imageNamed: @"noart.png"];
-        }
-
-        default:
-            break;
-    }
-
-    return viewItem;
-}
-
-- (void)collectionView:(NSCollectionView *)collectionView didSelectItemsAtIndexPaths:(NSSet<NSIndexPath *> *)indexPaths
-{
-    NSLog(@"library selection changed: %@", indexPaths);
-}
-
-
- at end
diff --git a/modules/gui/macosx/library/VLCLibraryWindow.m b/modules/gui/macosx/library/VLCLibraryWindow.m
index 060695b768..b9990cb3bf 100644
--- a/modules/gui/macosx/library/VLCLibraryWindow.m
+++ b/modules/gui/macosx/library/VLCLibraryWindow.m
@@ -38,7 +38,6 @@
 #import "library/VLCLibraryCollectionViewItem.h"
 #import "library/VLCLibraryModel.h"
 #import "library/VLCLibraryCollectionViewSupplementaryElementView.h"
-#import "library/VLCLibraryTiledAudioViewController.h"
 #import "library/VLCLibrarySortingMenuController.h"
 
 #import "media-source/VLCMediaSourceBaseDataSource.h"
@@ -72,7 +71,6 @@ const CGFloat VLCLibraryWindowDefaultPlaylistWidth = 340.;
     VLCLibraryGroupDataSource *_libraryAudioGroupDataSource;
     VLCLibrarySortingMenuController *_librarySortingMenuController;
     VLCMediaSourceBaseDataSource *_mediaSourceDataSource;
-    VLCLibraryTiledAudioViewController *_gridAudioViewController;
     VLCPlaylistSortingMenuController *_playlistSortingMenuController;
 
     VLCPlaylistController *_playlistController;
@@ -224,6 +222,8 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
     _libraryAudioDataSource.collectionSelectionTableView = _audioCollectionSelectionTableView;
     _libraryAudioDataSource.groupSelectionTableView = _audioGroupSelectionTableView;
     _libraryAudioDataSource.segmentedControl = self.audioSegmentedControl;
+    _libraryAudioDataSource.collectionView = self.audioLibraryCollectionView;
+    [_libraryAudioDataSource setupAppearance];
     _audioCollectionSelectionTableView.dataSource = _libraryAudioDataSource;
     _audioCollectionSelectionTableView.delegate = _libraryAudioDataSource;
     _audioCollectionSelectionTableView.rowHeight = VLCLibraryWindowLargeRowHeight;
@@ -248,12 +248,6 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
     [self updateColorsBasedOnAppearance];
     self.openMediaButton.title = _NS("Open media...");
 
-    _gridAudioViewController = [[VLCLibraryTiledAudioViewController alloc] init];
-    _gridAudioViewController.collectionView = self.audioLibraryCollectionView;
-    _gridAudioViewController.segmentedControl = self.audioSegmentedControl;
-    _gridAudioViewController.libraryModel = mainInstance.libraryController.libraryModel;
-    [_gridAudioViewController setupAppearance];
-
     _mainSplitView.delegate = self;
     _lastPlaylistWidthBeforeCollaps = VLCLibraryWindowDefaultPlaylistWidth;
 
@@ -417,7 +411,7 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
     if (self.gridVsListSegmentedControl.selectedSegment == 0) {
         _audioLibrarySplitView.hidden = YES;
         _audioCollectionViewScrollView.hidden = NO;
-        [_gridAudioViewController reloadAppearance];
+        [_libraryAudioDataSource reloadAppearance];
     } else {
         _audioLibrarySplitView.hidden = NO;
         _audioLibrarySplitView.wantsLayer = YES;
diff --git a/po/POTFILES.in b/po/POTFILES.in
index adc2700530..6552e071a2 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -478,8 +478,6 @@ modules/gui/macosx/library/VLCLibrarySortingMenuController.h
 modules/gui/macosx/library/VLCLibrarySortingMenuController.m
 modules/gui/macosx/library/VLCLibraryTableCellView.h
 modules/gui/macosx/library/VLCLibraryTableCellView.m
-modules/gui/macosx/library/VLCLibraryTiledAudioViewController.h
-modules/gui/macosx/library/VLCLibraryTiledAudioViewController.m
 modules/gui/macosx/library/VLCLibraryVideoDataSource.h
 modules/gui/macosx/library/VLCLibraryVideoDataSource.m
 modules/gui/macosx/library/VLCLibraryWindow.h



More information about the vlc-commits mailing list