Felix Paul Kühne pushed to branch master at VideoLAN / VLC


Commits:
e87f3ac0 by Claudio Cambra at 2025-07-20T08:57:26+00:00
macosx: Add ability for collection view data sources to set expected item sizes 
on section basis

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
dbadc381 by Claudio Cambra at 2025-07-20T08:57:26+00:00
macosx: Implement aspectRatioForSection in favorites data source

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -


3 changed files:

- modules/gui/macosx/library/VLCLibraryCollectionViewDataSource.h
- modules/gui/macosx/library/VLCLibraryCollectionViewDelegate.m
- modules/gui/macosx/library/favorites-library/VLCLibraryFavoritesDataSource.m


Changes:

=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewDataSource.h
=====================================
@@ -23,6 +23,7 @@
 #import <Cocoa/Cocoa.h>
 
 #import "library/VLCLibraryDataSource.h"
+#import "library/VLCLibraryUIUnits.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -41,6 +42,10 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)reloadData;
 
+@optional
+- (VLCLibraryCollectionViewItemAspectRatio)collectionView:(NSCollectionView 
*)collectionView
+                                    aspectRatioForSection:(NSInteger)section;
+
 @end
 
 NS_ASSUME_NONNULL_END


=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewDelegate.m
=====================================
@@ -73,11 +73,23 @@
         return _staticItemSize;
     }
     
-    VLCLibraryCollectionViewFlowLayout * const collectionViewFlowLayout = 
(VLCLibraryCollectionViewFlowLayout*)collectionViewLayout;
+    VLCLibraryCollectionViewFlowLayout * const collectionViewFlowLayout = 
(VLCLibraryCollectionViewFlowLayout *)collectionViewLayout;
     if (collectionViewLayout) {
+        VLCLibraryCollectionViewItemAspectRatio aspectRatio = 
_itemsAspectRatio;
+        
+        if ([collectionView.dataSource 
conformsToProtocol:@protocol(VLCLibraryCollectionViewDataSource)]) {
+            id<VLCLibraryCollectionViewDataSource> libraryDataSource =
+                
(id<VLCLibraryCollectionViewDataSource>)collectionView.dataSource;
+
+            if ([libraryDataSource 
respondsToSelector:@selector(collectionView:aspectRatioForSection:)]) {
+                aspectRatio = [libraryDataSource collectionView:collectionView
+                                          
aspectRatioForSection:indexPath.section];
+            }
+        }
+        
         return [VLCLibraryUIUnits 
adjustedCollectionViewItemSizeForCollectionView:collectionView
                                                                        
withLayout:collectionViewFlowLayout
-                                                             
withItemsAspectRatio:_itemsAspectRatio];
+                                                             
withItemsAspectRatio:aspectRatio];
     }
 
     return NSZeroSize;


=====================================
modules/gui/macosx/library/favorites-library/VLCLibraryFavoritesDataSource.m
=====================================
@@ -462,6 +462,15 @@ 
viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
 
 #pragma mark - VLCLibraryCollectionViewDataSource
 
+- (VLCLibraryCollectionViewItemAspectRatio)collectionView:(NSCollectionView 
*)collectionView
+                                    aspectRatioForSection:(NSInteger)section
+{    
+    if ([self sectionForVisibleIndex:section] == 
VLCLibraryFavoritesSectionVideoMedia) {
+        return VLCLibraryCollectionViewItemAspectRatioVideoItem;
+    }
+    return VLCLibraryCollectionViewItemAspectRatioDefaultItem;
+}
+
 - (id<VLCMediaLibraryItemProtocol>)libraryItemAtIndexPath:(NSIndexPath 
*)indexPath
                                         forCollectionView:(NSCollectionView 
*)collectionView
 {



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/b73fe9ec098c0a2e8a6ffaafe9033723b7c5c5de...dbadc38128b5d301ebfa7935dc4dafbf29b20c5a

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


VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to