[vlc-commits] [Git][videolan/vlc][master] 5 commits: macosx: Add groups search provider

Steve Lhomme (@robUx4) gitlab at videolan.org
Wed Aug 19 23:55:55 UTC 2026



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
3bac96f3 by Claudio Cambra at 2026-08-19T23:44:33+00:00
macosx: Add groups search provider

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
2f210fc7 by Claudio Cambra at 2026-08-19T23:44:33+00:00
macosx: Fix query parameters for groups fetch in library model

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
079c3ca4 by Claudio Cambra at 2026-08-19T23:44:33+00:00
macosx: Reset groups list when all caches dropped

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
ad39b569 by Claudio Cambra at 2026-08-19T23:44:33+00:00
macosx: Prevent setting empty string on collection view item labels

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
b5757a20 by Claudio Cambra at 2026-08-19T23:44:33+00:00
macosx: Use media item list supplementary detail view for groups in search view

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -


5 changed files:

- modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
- modules/gui/macosx/library/VLCLibraryModel.m
- modules/gui/macosx/library/groups-library/VLCLibraryGroupsDataSource.m
- modules/gui/macosx/library/search-library/VLCLibrarySearchDataSource.m
- modules/gui/macosx/library/search-library/VLCLibrarySearchProvider.m


Changes:

=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
=====================================
@@ -135,8 +135,8 @@ NSString *VLCLibraryCollectionViewItemIdentifier = @"VLCLibraryCollectionViewIte
     }
     id<VLCMediaLibraryItemProtocol> const actualItem = libraryItem.item;
 
-    self.mediaTitleTextField.stringValue = actualItem.displayString;
-    self.secondaryInfoTextField.stringValue = actualItem.primaryDetailString;
+    self.mediaTitleTextField.stringValue = actualItem.displayString ?: @"";
+    self.secondaryInfoTextField.stringValue = actualItem.primaryDetailString ?: @"";
     self.secondaryInfoTextField.hidden = NO;
 
     __weak typeof(self) weakSelf = self;


=====================================
modules/gui/macosx/library/VLCLibraryModel.m
=====================================
@@ -951,7 +951,9 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
 - (void)resetCachedListOfGroups
 {
     dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), ^{
-        vlc_ml_group_list_t * const p_group_list = vlc_ml_list_groups(self->_p_mediaLibrary, NULL);
+        const vlc_ml_query_params_t queryParams = [self queryParams];
+        vlc_ml_group_list_t * const p_group_list =
+            vlc_ml_list_groups(self->_p_mediaLibrary, &queryParams);
         if (p_group_list == NULL) {
             return;
         }


=====================================
modules/gui/macosx/library/groups-library/VLCLibraryGroupsDataSource.m
=====================================
@@ -44,6 +44,10 @@
                            selector:@selector(libraryModelGroupsListReset:)
                                name:VLCLibraryModelListOfGroupsReset
                              object:nil];
+    [notificationCenter addObserver:self
+                           selector:@selector(libraryModelGroupsListReset:)
+                               name:VLCLibraryModelAllCachesDropped
+                             object:nil];
     [notificationCenter addObserver:self
                            selector:@selector(libraryModelGroupDeleted:)
                                name:VLCLibraryModelGroupDeleted


=====================================
modules/gui/macosx/library/search-library/VLCLibrarySearchDataSource.m
=====================================
@@ -484,7 +484,8 @@ viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
 
     const id<VLCMediaLibraryItemProtocol> item =
         [self libraryItemAtIndexPath:selectedIndexPath forCollectionView:self.collectionView];
-    if ([item isKindOfClass:VLCMediaLibraryAlbum.class]) {
+    if ([item isKindOfClass:VLCMediaLibraryAlbum.class] ||
+        [item isKindOfClass:VLCMediaLibraryGroup.class]) {
         return VLCLibraryCollectionViewMediaItemListSupplementaryDetailViewKind;
     } else if ([item conformsToProtocol:@protocol(VLCMediaLibraryAudioGroupProtocol)]) {
         return VLCLibraryCollectionViewAudioGroupSupplementaryDetailViewKind;


=====================================
modules/gui/macosx/library/search-library/VLCLibrarySearchProvider.m
=====================================
@@ -77,6 +77,7 @@ static NSArray<id<VLCMediaLibraryItemProtocol>> *name(const vlc_ml_query_params_
 FETCH_TYPED_LIST(fetchAlbums, album, Album, vlc_ml_list_albums(p_ml, params))
 FETCH_TYPED_LIST(fetchArtists, artist, Artist, vlc_ml_list_artists(p_ml, params, false))
 FETCH_TYPED_LIST(fetchGenres, genre, Genre, vlc_ml_list_genres(p_ml, params))
+FETCH_TYPED_LIST(fetchGroups, group, Group, vlc_ml_list_groups(p_ml, params))
 FETCH_TYPED_LIST(fetchPlaylists, playlist, Playlist, vlc_ml_list_playlists(p_ml, params, VLC_ML_PLAYLIST_TYPE_ALL))
 
 @implementation VLCLibrarySearchProvider
@@ -147,6 +148,13 @@ FETCH_TYPED_LIST(fetchPlaylists, playlist, Playlist, vlc_ml_list_playlists(p_ml,
                       fetchBlock:^(const vlc_ml_query_params_t *params) {
                           return fetchGenres(params);
                       }],
+        [[VLCLibrarySearchProvider alloc]
+            initWithDisplayTitle:_NS("Groups")
+                    displayImage:[self imageWithSymbolName:@"rectangle.3.group"
+                                             fallbackImage:[NSImage imageNamed:NSImageNameTouchBarTagIconTemplate]]
+                      fetchBlock:^(const vlc_ml_query_params_t *params) {
+                          return fetchGroups(params);
+                      }],
         [[VLCLibrarySearchProvider alloc]
             initWithDisplayTitle:_NS("Playlists")
                     displayImage:[self imageWithSymbolName:@"list.triangle"



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/3b6d1b0bd87cc1aa8bda5b6599a58e4688e20072...b5757a20da2ac20e3c6a24f43dc3684a0d5edacb

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/3b6d1b0bd87cc1aa8bda5b6599a58e4688e20072...b5757a20da2ac20e3c6a24f43dc3684a0d5edacb
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list