Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
bd0df9c8 by Felix Paul Kühne at 2026-04-16T06:36:57+02:00
macosx: use vlc_ml_list_favorite_media for all-favorites list

Use the media library API to fetch all favorites in a single sorted
query instead of merging two separate lists and re-sorting in the UI.
Removes the sortMediaItems method which performed database lookups
inside the sort comparator.

- - - - -


1 changed file:

- modules/gui/macosx/library/VLCLibraryModel.m


Changes:

=====================================
modules/gui/macosx/library/VLCLibraryModel.m
=====================================
@@ -965,10 +965,13 @@ static void libraryCallback(void *p_data, const 
vlc_ml_event_t *p_event)
     switch(parentType) {
     case VLCMediaLibraryParentGroupTypeAllFavorites:
     {
-        NSMutableArray<VLCMediaLibraryMediaItem *> *allFavorites = 
[NSMutableArray array];
-        [allFavorites addObjectsFromArray:self.listOfFavoriteVideoMedia];
-        [allFavorites addObjectsFromArray:self.listOfFavoriteAudioMedia];
-        return [self sortMediaItems:allFavorites];
+        const vlc_ml_query_params_t queryParams = [self queryParams];
+        vlc_ml_media_list_t * const p_media_list = 
vlc_ml_list_favorite_media(_p_mediaLibrary, &queryParams);
+        NSArray * const mediaArray = [NSArray 
arrayFromVlcMediaList:p_media_list];
+        if (p_media_list) {
+            vlc_ml_media_list_release(p_media_list);
+        }
+        return mediaArray ?: @[];
     }
     case VLCMediaLibraryParentGroupTypeArtist:
         return self.listOfArtists;
@@ -1000,74 +1003,6 @@ static void libraryCallback(void *p_data, const 
vlc_ml_event_t *p_event)
     return mediaItems.copy;
 }
 
-- (NSArray<VLCMediaLibraryMediaItem *> 
*)sortMediaItems:(NSArray<VLCMediaLibraryMediaItem *> *)items
-{
-    if (items.count == 0) {
-        return items;
-    }
-
-    const BOOL descending = _sortDescending;
-
-    return [items 
sortedArrayUsingComparator:^NSComparisonResult(VLCMediaLibraryMediaItem *item1, 
VLCMediaLibraryMediaItem *item2) {
-        NSComparisonResult result = NSOrderedSame;
-
-        switch (self->_sortCriteria) {
-            case VLC_ML_SORTING_DEFAULT:
-            case VLC_ML_SORTING_ALPHA:
-                result = [item1.title 
localizedCaseInsensitiveCompare:item2.title];
-                break;
-            case VLC_ML_SORTING_DURATION:
-                result = [@(item1.duration) compare:@(item2.duration)];
-                break;
-            case VLC_ML_SORTING_INSERTIONDATE:
-            case VLC_ML_SORTING_LASTMODIFICATIONDATE:
-                result = NSOrderedSame;
-                break;
-            case VLC_ML_SORTING_RELEASEDATE:
-                result = [@(item1.year) compare:@(item2.year)];
-                break;
-            case VLC_ML_SORTING_FILESIZE:
-                result = NSOrderedSame;
-                break;
-            case VLC_ML_SORTING_ARTIST:
-            {
-                VLCMediaLibraryAlbum *album1 = [VLCMediaLibraryAlbum 
albumWithID:item1.albumID];
-                VLCMediaLibraryAlbum *album2 = [VLCMediaLibraryAlbum 
albumWithID:item2.albumID];
-                if (album1 && album2) {
-                    result = [album1.artistName 
localizedCaseInsensitiveCompare:album2.artistName];
-                } else {
-                    result = NSOrderedSame;
-                }
-                break;
-            }
-            case VLC_ML_SORTING_PLAYCOUNT:
-                result = [@(item1.playCount) compare:@(item2.playCount)];
-                break;
-            case VLC_ML_SORTING_ALBUM:
-            {
-                VLCMediaLibraryAlbum *album1 = [VLCMediaLibraryAlbum 
albumWithID:item1.albumID];
-                VLCMediaLibraryAlbum *album2 = [VLCMediaLibraryAlbum 
albumWithID:item2.albumID];
-                if (album1 && album2) {
-                    result = [album1.title 
localizedCaseInsensitiveCompare:album2.title];
-                } else {
-                    result = NSOrderedSame;
-                }
-                break;
-            }
-            case VLC_ML_SORTING_FILENAME:
-                result = [item1.title 
localizedCaseInsensitiveCompare:item2.title];
-                break;
-            case VLC_ML_SORTING_TRACKNUMBER:
-                result = [@(item1.trackNumber) compare:@(item2.trackNumber)];
-                break;
-            default:
-                result = NSOrderedSame;
-                break;
-        }
-
-        return descending ? -result : result;
-    }];
-}
 
 - (void)sortByCriteria:(enum vlc_ml_sorting_criteria_t)sortCriteria 
andDescending:(bool)descending
 {



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/commit/bd0df9c8b455797e0722df820ddeb689242e6263

-- 
View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/commit/bd0df9c8b455797e0722df820ddeb689242e6263
You're receiving this email because of your account on code.videolan.org.


_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to