Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
8713bcd3 by Claudio Cambra at 2023-01-12T10:47:29+00:00
macosx: Add VLCLibraryMediaSourceViewController class
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
2243fb6a by Claudio Cambra at 2023-01-12T10:47:29+00:00
macosx: Move media source components into library folder
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
7c71d98e by Claudio Cambra at 2023-01-12T10:47:29+00:00
macosx: Add init that pulls required components from library window in
VLCLibraryMediaSourceViewController
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
6ed09487 by Claudio Cambra at 2023-01-12T10:47:29+00:00
macosx: Move media source data source and its configuration into
VLCLibraryMediaSourceViewController
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
e7d67ddf by Claudio Cambra at 2023-01-12T10:47:29+00:00
macosx: Make VLCLibraryMediaSourceViewController responsible for presenting the
media source views
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
0b00a23b by Claudio Cambra at 2023-01-12T10:47:29+00:00
macosx: Add dynamic item sizing to media source collection views
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
f1cf6977 by Claudio Cambra at 2023-01-12T10:47:29+00:00
macosx: Add dynamic collection view item sizing calculating method to
VLCLibraryUIUnits
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
2502c0e2 by Claudio Cambra at 2023-01-12T10:47:29+00:00
macosx: Remove duplicate dynamic collection view item sizing calculation from
various collection view delegates, use VLCLibraryUIUnits method instead
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
027cf369 by Claudio Cambra at 2023-01-12T10:47:29+00:00
macosx: Fix moved media-source file paths in POTFILES
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
24 changed files:
- extras/package/macosx/VLC.xcodeproj/project.pbxproj
- modules/gui/macosx/Makefile.am
- modules/gui/macosx/library/VLCLibraryCollectionViewDelegate.m
- modules/gui/macosx/library/VLCLibraryNavigationStack.m
- modules/gui/macosx/library/VLCLibraryNavigationState.m
- modules/gui/macosx/library/VLCLibraryUIUnits.h
- modules/gui/macosx/library/VLCLibraryUIUnits.m
- modules/gui/macosx/library/VLCLibraryWindow.h
- modules/gui/macosx/library/VLCLibraryWindow.m
- +
modules/gui/macosx/library/media-source/VLCLibraryMediaSourceViewController.h
- +
modules/gui/macosx/library/media-source/VLCLibraryMediaSourceViewController.m
- modules/gui/macosx/media-source/VLCMediaSource.h →
modules/gui/macosx/library/media-source/VLCMediaSource.h
- modules/gui/macosx/media-source/VLCMediaSource.m →
modules/gui/macosx/library/media-source/VLCMediaSource.m
- modules/gui/macosx/media-source/VLCMediaSourceBaseDataSource.h →
modules/gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.h
- modules/gui/macosx/media-source/VLCMediaSourceBaseDataSource.m →
modules/gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.m
- modules/gui/macosx/media-source/VLCMediaSourceCollectionViewItem.h →
modules/gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.h
- modules/gui/macosx/media-source/VLCMediaSourceCollectionViewItem.m →
modules/gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.m
- modules/gui/macosx/media-source/VLCMediaSourceDataSource.h →
modules/gui/macosx/library/media-source/VLCMediaSourceDataSource.h
- modules/gui/macosx/media-source/VLCMediaSourceDataSource.m →
modules/gui/macosx/library/media-source/VLCMediaSourceDataSource.m
- modules/gui/macosx/media-source/VLCMediaSourceDeviceCollectionViewItem.h →
modules/gui/macosx/library/media-source/VLCMediaSourceDeviceCollectionViewItem.h
- modules/gui/macosx/media-source/VLCMediaSourceDeviceCollectionViewItem.m →
modules/gui/macosx/library/media-source/VLCMediaSourceDeviceCollectionViewItem.m
- modules/gui/macosx/media-source/VLCMediaSourceProvider.h →
modules/gui/macosx/library/media-source/VLCMediaSourceProvider.h
- modules/gui/macosx/media-source/VLCMediaSourceProvider.m →
modules/gui/macosx/library/media-source/VLCMediaSourceProvider.m
- po/POTFILES.in
Changes:
=====================================
extras/package/macosx/VLC.xcodeproj/project.pbxproj
=====================================
@@ -78,6 +78,7 @@
1CCC89062078A3D500E5626F /* TimeSelectionPanel.xib in Sources
*/ = {isa = PBXBuildFile; fileRef = 6B8224161E4D2A9000833BE1 /*
TimeSelectionPanel.xib */; };
1CFE8D591EA0D42A00E94451 /* VLCErrorWindowController.m in
Sources */ = {isa = PBXBuildFile; fileRef = 1CFE8D581EA0D42A00E94451 /*
VLCErrorWindowController.m */; };
5307A6F52967859F001E0C6A /* NSImage+VLCAdditions.m in Sources
*/ = {isa = PBXBuildFile; fileRef = 5307A6F42967859F001E0C6A /*
NSImage+VLCAdditions.m */; };
+ 5307A6F82969904D001E0C6A /*
VLCLibraryMediaSourceViewController.m in Sources */ = {isa = PBXBuildFile;
fileRef = 5307A6F72969904D001E0C6A /* VLCLibraryMediaSourceViewController.m */;
};
5317FE04294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.m
in Sources */ = {isa = PBXBuildFile; fileRef = 5317FE03294E3DD3001702F0 /*
VLCLibraryCollectionViewDelegate.m */; };
5325C57D29302E6800B2B63A /* VLCLibraryAudioViewController.m in
Sources */ = {isa = PBXBuildFile; fileRef = 5325C57B29302E6800B2B63A /*
VLCLibraryAudioViewController.m */; };
5362550D293FD639005D64FA /* VLCLibraryWindowController.m in
Sources */ = {isa = PBXBuildFile; fileRef = 5362550C293FD639005D64FA /*
VLCLibraryWindowController.m */; };
@@ -242,6 +243,8 @@
1CFE8D581EA0D42A00E94451 /* VLCErrorWindowController.m */ =
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.c.objc; path = VLCErrorWindowController.m; sourceTree = "<group>"; };
5307A6F32967859F001E0C6A /* NSImage+VLCAdditions.h */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.c.h; path =
"NSImage+VLCAdditions.h"; sourceTree = "<group>"; };
5307A6F42967859F001E0C6A /* NSImage+VLCAdditions.m */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path =
"NSImage+VLCAdditions.m"; sourceTree = "<group>"; };
+ 5307A6F62969904D001E0C6A /*
VLCLibraryMediaSourceViewController.h */ = {isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h; path =
VLCLibraryMediaSourceViewController.h; sourceTree = "<group>"; };
+ 5307A6F72969904D001E0C6A /*
VLCLibraryMediaSourceViewController.m */ = {isa = PBXFileReference;
lastKnownFileType = sourcecode.c.objc; path =
VLCLibraryMediaSourceViewController.m; sourceTree = "<group>"; };
5317FE02294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.h
*/ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path =
VLCLibraryCollectionViewDelegate.h; sourceTree = "<group>"; };
5317FE03294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.m
*/ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path =
VLCLibraryCollectionViewDelegate.m; sourceTree = "<group>"; };
5317FE05294E8D1A001702F0 /*
VLCLibraryCollectionViewDataSource.h */ = {isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h; path =
VLCLibraryCollectionViewDataSource.h; sourceTree = "<group>"; };
@@ -837,7 +840,6 @@
1C1ED5122204B0B500811EC0 /* imported */,
1C1ED5132204B0CB00811EC0 /* library */,
1C1ED50E2204B01C00811EC0 /* main */,
- 7DFBDCB8226CED3700B700A5 /* media-source */,
1C1ED50F2204B04A00811EC0 /* menus */,
1C1ED50C2204AFD900811EC0 /* os-integration */,
1C1ED5032204A99400811EC0 /* panels */,
@@ -1126,6 +1128,7 @@
children = (
53B447EB293BB47A00857588 /* video-library */,
5325C5742930026600B2B63A /* audio-library */,
+ 7DFBDCB8226CED3700B700A5 /* media-source */,
7DFBDCBF226DC16200B700A5 /* VLCInputItem.h */,
7DFBDCC0226DC16200B700A5 /* VLCInputItem.m */,
536283ED291146BC00640C15 /*
VLCLibraryCollectionViewFlowLayout.h */,
@@ -1605,6 +1608,8 @@
7D67318422C8F4050000AD40 /*
VLCMediaSourceCollectionViewItem.m */,
7D2554C422C8E8B500F2D9C2 /*
VLCMediaSourceDeviceCollectionViewItem.h */,
7D2554C322C8E8B400F2D9C2 /*
VLCMediaSourceDeviceCollectionViewItem.m */,
+ 5307A6F62969904D001E0C6A /*
VLCLibraryMediaSourceViewController.h */,
+ 5307A6F72969904D001E0C6A /*
VLCLibraryMediaSourceViewController.m */,
);
path = "media-source";
sourceTree = "<group>";
@@ -1880,6 +1885,7 @@
536283F7291146BC00640C15 /*
VLCLibraryNavigationState.m in Sources */,
1CCC89052078A3D500E5626F /* TextfieldPanel.xib
in Sources */,
1CCC89062078A3D500E5626F /*
TimeSelectionPanel.xib in Sources */,
+ 5307A6F82969904D001E0C6A /*
VLCLibraryMediaSourceViewController.m in Sources */,
6B81662C1EBFC38100C26F1B /* VLCUIWidgets.m in
Sources */,
6B0AB0F11F1AC8B3003A1B4E /* VLCSliderCell.m in
Sources */,
6B8166291EBFC34300C26F1B /*
VLCDefaultValueSlider.m in Sources */,
=====================================
modules/gui/macosx/Makefile.am
=====================================
@@ -132,6 +132,20 @@ libmacosx_plugin_la_SOURCES = \
gui/macosx/library/audio-library/VLCLibrarySongTableCellView.m \
gui/macosx/library/audio-library/VLCLibrarySongsTableViewSongPlayingTableCellView.h
\
gui/macosx/library/audio-library/VLCLibrarySongsTableViewSongPlayingTableCellView.m
\
+ gui/macosx/library/media-source/VLCLibraryMediaSourceViewController.h \
+ gui/macosx/library/media-source/VLCLibraryMediaSourceViewController.m \
+ gui/macosx/library/media-source/VLCMediaSource.h \
+ gui/macosx/library/media-source/VLCMediaSource.m \
+ gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.h \
+ gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.m \
+ gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.h \
+ gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.m \
+ gui/macosx/library/media-source/VLCMediaSourceDataSource.h \
+ gui/macosx/library/media-source/VLCMediaSourceDataSource.m \
+
gui/macosx/library/media-source/VLCMediaSourceDeviceCollectionViewItem.h \
+
gui/macosx/library/media-source/VLCMediaSourceDeviceCollectionViewItem.m \
+ gui/macosx/library/media-source/VLCMediaSourceProvider.h \
+ gui/macosx/library/media-source/VLCMediaSourceProvider.m \
gui/macosx/main/CompatibilityFixes.h \
gui/macosx/main/CompatibilityFixes.m \
gui/macosx/main/VLCApplication.h \
@@ -141,18 +155,6 @@ libmacosx_plugin_la_SOURCES = \
gui/macosx/main/VLCMain.h \
gui/macosx/main/VLCMain.m \
gui/macosx/main/macosx.m \
- gui/macosx/media-source/VLCMediaSource.h \
- gui/macosx/media-source/VLCMediaSource.m \
- gui/macosx/media-source/VLCMediaSourceBaseDataSource.h \
- gui/macosx/media-source/VLCMediaSourceBaseDataSource.m \
- gui/macosx/media-source/VLCMediaSourceCollectionViewItem.h \
- gui/macosx/media-source/VLCMediaSourceCollectionViewItem.m \
- gui/macosx/media-source/VLCMediaSourceDataSource.h \
- gui/macosx/media-source/VLCMediaSourceDataSource.m \
- gui/macosx/media-source/VLCMediaSourceDeviceCollectionViewItem.h \
- gui/macosx/media-source/VLCMediaSourceDeviceCollectionViewItem.m \
- gui/macosx/media-source/VLCMediaSourceProvider.h \
- gui/macosx/media-source/VLCMediaSourceProvider.m \
gui/macosx/menus/VLCMainMenu.h \
gui/macosx/menus/VLCMainMenu.m \
gui/macosx/menus/VLCStatusBarIcon.h \
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewDelegate.m
=====================================
@@ -77,59 +77,13 @@
VLCLibraryCollectionViewFlowLayout *collectionViewFlowLayout =
(VLCLibraryCollectionViewFlowLayout*)collectionViewLayout;
if (collectionViewLayout) {
VLCLibraryCollectionViewFlowLayout *collectionViewFlowLayout =
(VLCLibraryCollectionViewFlowLayout*)collectionViewLayout;
- return [self adjustedItemSizeForCollectionView:collectionView
-
withLayout:collectionViewFlowLayout];
+ return [VLCLibraryUIUnits
adjustedCollectionViewItemSizeForCollectionView:collectionView
+
withLayout:collectionViewFlowLayout];
}
return NSZeroSize;
}
-- (NSSize)adjustedItemSizeForCollectionView:(NSCollectionView *)collectionView
-
withLayout:(VLCLibraryCollectionViewFlowLayout *)collectionViewLayout
-{
- static uint numItemsInRow = 5;
-
- NSSize itemSize = [self itemSizeForCollectionView:collectionView
- withLayout:collectionViewLayout
- withNumberOfItemsInRow:numItemsInRow];
-
- while (itemSize.width > [VLCLibraryUIUnits
dynamicCollectionViewItemMaximumWidth]) {
- ++numItemsInRow;
- itemSize = [self itemSizeForCollectionView:collectionView
- withLayout:collectionViewLayout
- withNumberOfItemsInRow:numItemsInRow];
- }
- while (itemSize.width < [VLCLibraryUIUnits
dynamicCollectionViewItemMinimumWidth]) {
- --numItemsInRow;
- itemSize = [self itemSizeForCollectionView:collectionView
- withLayout:collectionViewLayout
- withNumberOfItemsInRow:numItemsInRow];
- }
-
- return itemSize;
-}
-
-- (NSSize)itemSizeForCollectionView:(NSCollectionView *)collectionView
- withLayout:(VLCLibraryCollectionViewFlowLayout
*)collectionViewLayout
- withNumberOfItemsInRow:(uint)numItemsInRow
-{
- NSParameterAssert(numItemsInRow > 0);
- NSParameterAssert(collectionView);
- NSParameterAssert(collectionViewLayout);
-
- const NSEdgeInsets sectionInsets = collectionViewLayout.sectionInset;
- const CGFloat interItemSpacing =
collectionViewLayout.minimumInteritemSpacing;
-
- const CGFloat rowOfItemsWidth = collectionView.bounds.size.width -
- (sectionInsets.left +
- sectionInsets.right +
- (interItemSpacing * (numItemsInRow - 1)) +
- 1);
-
- const CGFloat itemWidth = rowOfItemsWidth / numItemsInRow;
- return NSMakeSize(itemWidth, itemWidth + [VLCLibraryCollectionViewItem
bottomTextViewsHeight]);
-}
-
- (BOOL)collectionView:(NSCollectionView *)collectionView
canDragItemsAtIndexPaths:(NSSet<NSIndexPath *> *)indexPaths
withEvent:(NSEvent *)event
=====================================
modules/gui/macosx/library/VLCLibraryNavigationStack.m
=====================================
@@ -28,6 +28,7 @@
#import "library/audio-library/VLCLibraryAudioViewController.h"
+#import "media-source/VLCLibraryMediaSourceViewController.h"
#import "media-source/VLCMediaSourceBaseDataSource.h"
#import "media-source/VLCMediaSourceDataSource.h"
#import "media-source/VLCMediaSource.h"
@@ -177,12 +178,12 @@
[_delegate.segmentedTitleControl
setSelectedSegment:state.libraryWindowSelectedSegment];
[_delegate.audioSegmentedControl
setSelectedSegment:state.audioLibraryViewSelectedSegment];
[_delegate.gridVsListSegmentedControl
setSelectedSegment:state.viewModeSelectedSegment];
- [_delegate.mediaSourceDataSource
setChildDataSource:state.currentMediaSource];
- [_delegate.mediaSourceDataSource.childDataSource
setNodeToDisplay:state.currentNodeDisplayed];
+ [_delegate.libraryMediaSourceViewController.baseDataSource
setChildDataSource:state.currentMediaSource];
+ [_delegate.libraryMediaSourceViewController.baseDataSource.childDataSource
setNodeToDisplay:state.currentNodeDisplayed];
[_delegate segmentedControlAction:self];
[_delegate.libraryAudioViewController segmentedControlAction:self];
- [_delegate.mediaSourceDataSource setGridOrListMode:self];
+ [_delegate.libraryMediaSourceViewController.baseDataSource
setGridOrListMode:self];
[self updateDelegateNavigationButtons];
}
=====================================
modules/gui/macosx/library/VLCLibraryNavigationState.m
=====================================
@@ -23,6 +23,8 @@
#import "VLCLibraryNavigationState.h"
#import "VLCLibraryWindow.h"
+
+#import "media-source/VLCLibraryMediaSourceViewController.h"
#import "media-source/VLCMediaSourceBaseDataSource.h"
#import "media-source/VLCMediaSourceDataSource.h"
@@ -36,8 +38,8 @@
_libraryWindowSelectedSegment =
libraryWindow.segmentedTitleControl.selectedSegment;
_viewModeSelectedSegment =
libraryWindow.gridVsListSegmentedControl.selectedSegment;
_audioLibraryViewSelectedSegment =
libraryWindow.audioSegmentedControl.selectedSegment;
- _currentMediaSource =
libraryWindow.mediaSourceDataSource.childDataSource;
- _currentNodeDisplayed =
libraryWindow.mediaSourceDataSource.childDataSource.nodeToDisplay;
+ _currentMediaSource =
libraryWindow.libraryMediaSourceViewController.baseDataSource.childDataSource;
+ _currentNodeDisplayed =
libraryWindow.libraryMediaSourceViewController.baseDataSource.childDataSource.nodeToDisplay;
}
return navState;
=====================================
modules/gui/macosx/library/VLCLibraryUIUnits.h
=====================================
@@ -22,6 +22,8 @@
#import <Cocoa/Cocoa.h>
+@class VLCLibraryCollectionViewFlowLayout;
+
NS_ASSUME_NONNULL_BEGIN
@interface VLCLibraryUIUnits : NSObject
@@ -44,6 +46,9 @@ NS_ASSUME_NONNULL_BEGIN
+ (const CGFloat)dynamicCollectionViewItemMinimumWidth;
+ (const CGFloat)dynamicCollectionViewItemMaximumWidth;
++ (const
NSSize)adjustedCollectionViewItemSizeForCollectionView:(NSCollectionView
*)collectionView
+
withLayout:(VLCLibraryCollectionViewFlowLayout *)collectionViewLayout;
+
@end
NS_ASSUME_NONNULL_END
=====================================
modules/gui/macosx/library/VLCLibraryUIUnits.m
=====================================
@@ -22,6 +22,9 @@
#import "VLCLibraryUIUnits.h"
+#import "library/VLCLibraryCollectionViewFlowLayout.h"
+#import "library/VLCLibraryCollectionViewItem.h"
+
@implementation VLCLibraryUIUnits
+ (const CGFloat)largeSpacing
@@ -79,4 +82,50 @@
return 280;
}
++ (const
NSSize)adjustedCollectionViewItemSizeForCollectionView:(NSCollectionView
*)collectionView
+
withLayout:(VLCLibraryCollectionViewFlowLayout *)collectionViewLayout
+{
+ static uint numItemsInRow = 5;
+
+ NSSize itemSize = [self itemSizeForCollectionView:collectionView
+ withLayout:collectionViewLayout
+ withNumberOfItemsInRow:numItemsInRow];
+
+ while (itemSize.width > [VLCLibraryUIUnits
dynamicCollectionViewItemMaximumWidth]) {
+ ++numItemsInRow;
+ itemSize = [self itemSizeForCollectionView:collectionView
+ withLayout:collectionViewLayout
+ withNumberOfItemsInRow:numItemsInRow];
+ }
+ while (itemSize.width < [VLCLibraryUIUnits
dynamicCollectionViewItemMinimumWidth]) {
+ --numItemsInRow;
+ itemSize = [self itemSizeForCollectionView:collectionView
+ withLayout:collectionViewLayout
+ withNumberOfItemsInRow:numItemsInRow];
+ }
+
+ return itemSize;
+}
+
++ (const NSSize)itemSizeForCollectionView:(NSCollectionView *)collectionView
+ withLayout:(VLCLibraryCollectionViewFlowLayout
*)collectionViewLayout
+ withNumberOfItemsInRow:(uint)numItemsInRow
+{
+ NSParameterAssert(numItemsInRow > 0);
+ NSParameterAssert(collectionView);
+ NSParameterAssert(collectionViewLayout);
+
+ const NSEdgeInsets sectionInsets = collectionViewLayout.sectionInset;
+ const CGFloat interItemSpacing =
collectionViewLayout.minimumInteritemSpacing;
+
+ const CGFloat rowOfItemsWidth = collectionView.bounds.size.width -
+ (sectionInsets.left +
+ sectionInsets.right +
+ (interItemSpacing * (numItemsInRow - 1)) +
+ 1);
+
+ const CGFloat itemWidth = rowOfItemsWidth / numItemsInRow;
+ return NSMakeSize(itemWidth, itemWidth + [VLCLibraryCollectionViewItem
bottomTextViewsHeight]);
+}
+
@end
=====================================
modules/gui/macosx/library/VLCLibraryWindow.h
=====================================
@@ -28,9 +28,9 @@ NS_ASSUME_NONNULL_BEGIN
@class VLCRoundedCornerTextField;
@class VLCLibraryNavigationStack;
@class VLCLibraryAudioViewController;
+@class VLCLibraryMediaSourceViewController;
@class VLCLibraryVideoViewController;
@class VLCLibrarySortingMenuController;
-@class VLCMediaSourceBaseDataSource;
@class VLCPlaylistDataSource;
@class VLCPlaylistController;
@class VLCPlaylistSortingMenuController;
@@ -122,9 +122,9 @@ extern const NSUserInterfaceItemIdentifier
VLCLibraryWindowIdentifier;
@property (readwrite) BOOL nonembedded;
@property (readwrite) VLCLibraryNavigationStack *navigationStack;
@property (readonly) VLCLibraryAudioViewController *libraryAudioViewController;
+@property (readonly) VLCLibraryMediaSourceViewController
*libraryMediaSourceViewController;
@property (readonly) VLCLibraryVideoViewController *libraryVideoViewController;
@property (readonly) VLCLibrarySortingMenuController
*librarySortingMenuController;
-@property (readonly) VLCMediaSourceBaseDataSource *mediaSourceDataSource;
@property (readonly) VLCPlaylistDataSource *playlistDataSource;
@property (readonly) VLCPlaylistSortingMenuController
*playlistSortingMenuController;
@property (readonly) VLCPlaylistController *playlistController;
=====================================
modules/gui/macosx/library/VLCLibraryWindow.m
=====================================
@@ -49,6 +49,7 @@
#import "library/audio-library/VLCLibraryAudioViewController.h"
#import "media-source/VLCMediaSourceBaseDataSource.h"
+#import "media-source/VLCLibraryMediaSourceViewController.h"
#import "views/VLCCustomWindowButton.h"
#import "views/VLCDragDropView.h"
@@ -233,15 +234,8 @@ static void addShadow(NSImageView *__unsafe_unretained
imageView)
_audioLibraryGridModeSplitViewListTableView.rowHeight = [VLCLibraryUIUnits
mediumTableViewRowHeight];
_audioGroupSelectionTableView.rowHeight = [VLCLibraryAlbumTableCellView
defaultHeight];
- _mediaSourceDataSource = [[VLCMediaSourceBaseDataSource alloc] init];
- _mediaSourceDataSource.collectionView = _mediaSourceCollectionView;
- _mediaSourceDataSource.collectionViewScrollView =
_mediaSourceCollectionViewScrollView;
- _mediaSourceDataSource.homeButton = _mediaSourceHomeButton;
- _mediaSourceDataSource.pathControl = _mediaSourcePathControl;
- _mediaSourceDataSource.gridVsListSegmentedControl =
_gridVsListSegmentedControl;
+ _libraryMediaSourceViewController = [[VLCLibraryMediaSourceViewController
alloc] initWithLibraryWindow:self];
_mediaSourceTableView.rowHeight = [VLCLibraryUIUnits
mediumTableViewRowHeight];
- _mediaSourceDataSource.tableView = _mediaSourceTableView;
- [_mediaSourceDataSource setupViews];
self.upNextLabel.font = [NSFont VLClibrarySectionHeaderFont];
self.upNextLabel.stringValue = _NS("Playlist");
@@ -485,8 +479,10 @@ static void addShadow(NSImageView *__unsafe_unretained
imageView)
[self showAudioLibrary];
break;
case VLCLibraryBrowseSegment:
+ [_libraryMediaSourceViewController presentBrowseView];
+ break;
case VLCLibraryStreamsSegment:
- [self showMediaSourceAppearance];
+ [_libraryMediaSourceViewController presentStreamsView];
break;
default:
break;
@@ -524,33 +520,6 @@ static void addShadow(NSImageView *__unsafe_unretained
imageView)
self.gridVsListSegmentedControl.action =
@selector(segmentedControlAction:);
}
-- (void)showMediaSourceAppearance
-{
- if (_videoLibraryView.superview != nil) {
- [_videoLibraryView removeFromSuperview];
- }
- if (_audioLibraryView.superview != nil) {
- [_audioLibraryView removeFromSuperview];
- }
- if (_emptyLibraryView.superview != nil) {
- [_emptyLibraryView removeFromSuperview];
- }
- if (_mediaSourceView.superview == nil) {
- _mediaSourceView.translatesAutoresizingMaskIntoConstraints = NO;
- [_libraryTargetView addSubview:_mediaSourceView];
- NSDictionary *dict = NSDictionaryOfVariableBindings(_mediaSourceView);
- [_libraryTargetView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|[_mediaSourceView(>=572.)]|" options:0
metrics:0 views:dict]];
- [_libraryTargetView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|[_mediaSourceView(>=444.)]|" options:0
metrics:0 views:dict]];
- }
- _mediaSourceDataSource.mediaSourceMode =
_segmentedTitleControl.selectedSegment == 2 ? VLCMediaSourceModeLAN :
VLCMediaSourceModeInternet;
- _librarySortButton.hidden = YES;
- _librarySearchField.enabled = NO;
- [self clearLibraryFilterString];
- _optionBarView.hidden = YES;
- _audioSegmentedControl.hidden = YES;
- [_mediaSourceDataSource reloadViews];
-}
-
- (IBAction)playlistDoubleClickAction:(id)sender
{
NSInteger selectedRow = self.playlistTableView.selectedRow;
=====================================
modules/gui/macosx/library/media-source/VLCLibraryMediaSourceViewController.h
=====================================
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ * VLCLibraryMediaSourceViewController.h: MacOS X interface module
+ *****************************************************************************
+ * Copyright (C) 2023 VLC authors and VideoLAN
+ *
+ * Authors: Claudio Cambra <[email protected]>
+ *
+ * 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
+
+@class VLCLibraryWindow;
+@class VLCMediaSourceBaseDataSource;
+
+@interface VLCLibraryMediaSourceViewController : NSObject
+
+@property (readonly) NSView *libraryTargetView;
+@property (readonly) NSView *mediaSourceView;
+@property (readonly) NSCollectionView *collectionView;
+@property (readonly) NSScrollView *collectionViewScrollView;
+@property (readonly) NSTableView *tableView;
+@property (readonly) NSScrollView *tableViewScrollView;
+@property (readonly) NSButton *homeButton;
+@property (readonly) NSPathControl *pathControl;
+@property (readonly) NSSegmentedControl *gridVsListSegmentedControl;
+@property (readonly) NSButton *librarySortButton;
+@property (readonly) NSSearchField *librarySearchField;
+@property (readonly) NSVisualEffectView *optionBarView;
+
+@property (readonly) VLCMediaSourceBaseDataSource *baseDataSource;
+
+- (instancetype)initWithLibraryWindow:(VLCLibraryWindow *)libraryWindow;
+
+- (void)presentBrowseView;
+- (void)presentStreamsView;
+
+@end
+
+NS_ASSUME_NONNULL_END
=====================================
modules/gui/macosx/library/media-source/VLCLibraryMediaSourceViewController.m
=====================================
@@ -0,0 +1,116 @@
+/*****************************************************************************
+ * VLCLibraryMediaSourceViewController.m: MacOS X interface module
+ *****************************************************************************
+ * Copyright (C) 2023 VLC authors and VideoLAN
+ *
+ * Authors: Claudio Cambra <[email protected]>
+ *
+ * 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 "VLCLibraryMediaSourceViewController.h"
+
+#import "VLCMediaSourceBaseDataSource.h"
+
+#import "library/VLCLibraryCollectionViewFlowLayout.h"
+#import "library/VLCLibraryController.h"
+#import "library/VLCLibraryWindow.h"
+
+#import "main/VLCMain.h"
+
+@implementation VLCLibraryMediaSourceViewController
+
+- (instancetype)initWithLibraryWindow:(VLCLibraryWindow *)libraryWindow
+{
+ self = [super init];
+ if (self) {
+ [self setupPropertiesFromLibraryWindow:libraryWindow];
+ [self setupBaseDataSource];
+ [self setupCollectionView];
+ }
+ return self;
+}
+
+- (void)setupPropertiesFromLibraryWindow:(VLCLibraryWindow *)libraryWindow
+{
+ NSParameterAssert(libraryWindow);
+ _libraryTargetView = libraryWindow.libraryTargetView;
+ _mediaSourceView = libraryWindow.mediaSourceView;
+ _collectionView = libraryWindow.mediaSourceCollectionView;
+ _collectionViewScrollView =
libraryWindow.mediaSourceCollectionViewScrollView;
+ _tableView = libraryWindow.mediaSourceTableView;
+ _tableViewScrollView = libraryWindow.mediaSourceTableViewScrollView;
+ _homeButton = libraryWindow.mediaSourceHomeButton;
+ _pathControl = libraryWindow.mediaSourcePathControl;
+ _gridVsListSegmentedControl = libraryWindow.gridVsListSegmentedControl;
+ _optionBarView = libraryWindow.optionBarView;
+ _librarySortButton = libraryWindow.librarySortButton;
+ _librarySearchField = libraryWindow.librarySearchField;
+
+}
+
+- (void)setupBaseDataSource
+{
+ _baseDataSource = [[VLCMediaSourceBaseDataSource alloc] init];
+ _baseDataSource.collectionView = _collectionView;
+ _baseDataSource.collectionViewScrollView = _collectionViewScrollView;
+ _baseDataSource.homeButton = _homeButton;
+ _baseDataSource.pathControl = _pathControl;
+ _baseDataSource.gridVsListSegmentedControl = _gridVsListSegmentedControl;
+ _baseDataSource.tableView = _tableView;
+ [_baseDataSource setupViews];
+}
+
+- (void)setupCollectionView
+{
+ _collectionView.collectionViewLayout =
[[VLCLibraryCollectionViewFlowLayout alloc] init];
+}
+
+- (void)presentBrowseView
+{
+ [self presentMediaSourceView:VLCLibraryBrowseSegment];
+}
+
+- (void)presentStreamsView
+{
+ [self presentMediaSourceView:VLCLibraryStreamsSegment];
+}
+
+- (void)presentMediaSourceView:(VLCLibrarySegment)viewSegment
+{
+ for (NSView *subview in _libraryTargetView.subviews) {
+ [subview removeFromSuperview];
+ }
+
+ if (_mediaSourceView.superview == nil) {
+ _mediaSourceView.translatesAutoresizingMaskIntoConstraints = NO;
+ [_libraryTargetView addSubview:_mediaSourceView];
+ NSDictionary *dict = NSDictionaryOfVariableBindings(_mediaSourceView);
+ [_libraryTargetView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|[_mediaSourceView(>=572.)]|" options:0
metrics:0 views:dict]];
+ [_libraryTargetView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|[_mediaSourceView(>=444.)]|" options:0
metrics:0 views:dict]];
+ }
+
+ _baseDataSource.mediaSourceMode = viewSegment == VLCLibraryBrowseSegment ?
VLCMediaSourceModeLAN : VLCMediaSourceModeInternet;
+
+ _librarySortButton.hidden = YES;
+ _librarySearchField.enabled = NO;
+ _librarySearchField.stringValue = @"";
+ [VLCMain.sharedInstance.libraryController filterByString:@""];
+ _optionBarView.hidden = YES;
+
+ [_baseDataSource reloadViews];
+}
+
+@end
=====================================
modules/gui/macosx/media-source/VLCMediaSource.h →
modules/gui/macosx/library/media-source/VLCMediaSource.h
=====================================
=====================================
modules/gui/macosx/media-source/VLCMediaSource.m →
modules/gui/macosx/library/media-source/VLCMediaSource.m
=====================================
@@ -22,10 +22,10 @@
#import "VLCMediaSource.h"
-#import "library/VLCInputItem.h"
-
#import "extensions/NSString+Helpers.h"
+#import "library/VLCInputItem.h"
+
@interface VLCMediaSource ()
{
BOOL _respondsToDiskChanges;
=====================================
modules/gui/macosx/media-source/VLCMediaSourceBaseDataSource.h →
modules/gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.h
=====================================
@@ -31,7 +31,11 @@ NS_ASSUME_NONNULL_BEGIN
@class VLCMediaSourceDataSource;
-@interface VLCMediaSourceBaseDataSource : NSObject
+@interface VLCMediaSourceBaseDataSource : NSObject <NSCollectionViewDataSource,
+ NSCollectionViewDelegate,
+
NSCollectionViewDelegateFlowLayout,
+ NSTableViewDelegate,
+ NSTableViewDataSource>
@property (readwrite) NSCollectionView *collectionView;
@property (readwrite) NSScrollView *collectionViewScrollView;
=====================================
modules/gui/macosx/media-source/VLCMediaSourceBaseDataSource.m →
modules/gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.m
=====================================
@@ -22,20 +22,25 @@
#import "VLCMediaSourceBaseDataSource.h"
-#import "media-source/VLCMediaSourceProvider.h"
-#import "media-source/VLCMediaSource.h"
-#import "media-source/VLCMediaSourceDeviceCollectionViewItem.h"
-#import "media-source/VLCMediaSourceCollectionViewItem.h"
-#import "media-source/VLCMediaSourceDataSource.h"
+#import "VLCMediaSourceProvider.h"
+#import "VLCMediaSource.h"
+#import "VLCMediaSourceDeviceCollectionViewItem.h"
+#import "VLCMediaSourceCollectionViewItem.h"
+#import "VLCMediaSourceDataSource.h"
+
+#import "extensions/NSString+Helpers.h"
-#import "main/VLCMain.h"
-#import "views/VLCImageView.h"
#import "library/VLCLibraryWindow.h"
#import "library/VLCLibraryNavigationStack.h"
#import "library/VLCInputItem.h"
#import "library/VLCLibraryCollectionViewSupplementaryElementView.h"
#import "library/VLCLibraryTableCellView.h"
-#import "extensions/NSString+Helpers.h"
+#import "library/VLCLibraryUIUnits.h"
+
+#import "main/VLCMain.h"
+
+#import "views/VLCImageView.h"
+
NSString *VLCMediaSourceTableViewCellIdentifier =
@"VLCMediaSourceTableViewCellIdentifier";
@@ -273,6 +278,16 @@ referenceSizeForHeaderInSection:(NSInteger)section
return [VLCLibraryCollectionViewSupplementaryElementView
defaultHeaderSize];
}
+- (NSSize)collectionView:(NSCollectionView *)collectionView
+ layout:(NSCollectionViewLayout *)collectionViewLayout
+ sizeForItemAtIndexPath:(NSIndexPath *)indexPath
+{
+ VLCLibraryCollectionViewFlowLayout *collectionViewFlowLayout =
(VLCLibraryCollectionViewFlowLayout*)collectionViewLayout;
+ NSAssert(collectionViewLayout, @"This should be a flow layout and thus a
valid pointer");
+ return [VLCLibraryUIUnits
adjustedCollectionViewItemSizeForCollectionView:collectionView
+
withLayout:collectionViewFlowLayout];
+}
+
#pragma mark - table view data source and delegation
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
=====================================
modules/gui/macosx/media-source/VLCMediaSourceCollectionViewItem.h →
modules/gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.h
=====================================
=====================================
modules/gui/macosx/media-source/VLCMediaSourceCollectionViewItem.m →
modules/gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.m
=====================================
@@ -33,6 +33,8 @@
#import "main/VLCMain.h"
+#import "main/VLCMain.h"
+
#import "playlist/VLCPlaylistController.h"
#import "views/VLCImageView.h"
=====================================
modules/gui/macosx/media-source/VLCMediaSourceDataSource.h →
modules/gui/macosx/library/media-source/VLCMediaSourceDataSource.h
=====================================
@@ -28,7 +28,11 @@ NS_ASSUME_NONNULL_BEGIN
@class VLCInputNode;
@class VLCMediaSource;
-@interface VLCMediaSourceDataSource : NSObject <NSCollectionViewDataSource,
NSCollectionViewDelegate, NSTableViewDelegate, NSTableViewDataSource>
+@interface VLCMediaSourceDataSource : NSObject <NSCollectionViewDataSource,
+ NSCollectionViewDelegate,
+
NSCollectionViewDelegateFlowLayout,
+ NSTableViewDelegate,
+ NSTableViewDataSource>
@property (readwrite, retain) VLCMediaSource *displayedMediaSource;
@property (readwrite, retain, nonatomic) VLCInputNode *nodeToDisplay;
=====================================
modules/gui/macosx/media-source/VLCMediaSourceDataSource.m →
modules/gui/macosx/library/media-source/VLCMediaSourceDataSource.m
=====================================
@@ -22,16 +22,22 @@
#import "VLCMediaSourceDataSource.h"
+#import "VLCMediaSourceCollectionViewItem.h"
+#import "VLCMediaSource.h"
+
+#import "extensions/NSString+Helpers.h"
+
#import "library/VLCInputItem.h"
#import "library/VLCLibraryWindow.h"
#import "library/VLCLibraryNavigationStack.h"
#import "library/VLCLibraryTableCellView.h"
-#import "media-source/VLCMediaSourceCollectionViewItem.h"
-#import "media-source/VLCMediaSource.h"
+#import "library/VLCLibraryUIUnits.h"
+
#import "main/VLCMain.h"
+
#import "playlist/VLCPlaylistController.h"
+
#import "views/VLCImageView.h"
-#import "extensions/NSString+Helpers.h"
@interface VLCMediaSourceDataSource()
{
@@ -100,6 +106,16 @@
[self performActionForNode:childNode allowPlayback:YES];
}
+- (NSSize)collectionView:(NSCollectionView *)collectionView
+ layout:(NSCollectionViewLayout *)collectionViewLayout
+ sizeForItemAtIndexPath:(NSIndexPath *)indexPath
+{
+ VLCLibraryCollectionViewFlowLayout *collectionViewFlowLayout =
(VLCLibraryCollectionViewFlowLayout*)collectionViewLayout;
+ NSAssert(collectionViewLayout, @"This should be a flow layout and thus a
valid pointer");
+ return [VLCLibraryUIUnits
adjustedCollectionViewItemSizeForCollectionView:collectionView
+
withLayout:collectionViewFlowLayout];
+}
+
#pragma mark - table view data source and delegation
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
=====================================
modules/gui/macosx/media-source/VLCMediaSourceDeviceCollectionViewItem.h →
modules/gui/macosx/library/media-source/VLCMediaSourceDeviceCollectionViewItem.h
=====================================
=====================================
modules/gui/macosx/media-source/VLCMediaSourceDeviceCollectionViewItem.m →
modules/gui/macosx/library/media-source/VLCMediaSourceDeviceCollectionViewItem.m
=====================================
@@ -21,7 +21,9 @@
*****************************************************************************/
#import "VLCMediaSourceDeviceCollectionViewItem.h"
+
#import "extensions/NSColor+VLCAdditions.h"
+
#import "views/VLCImageView.h"
NSString *VLCMediaSourceDeviceCellIdentifier =
@"VLCMediaSourceDeviceCellIdentifier";
=====================================
modules/gui/macosx/media-source/VLCMediaSourceProvider.h →
modules/gui/macosx/library/media-source/VLCMediaSourceProvider.h
=====================================
=====================================
modules/gui/macosx/media-source/VLCMediaSourceProvider.m →
modules/gui/macosx/library/media-source/VLCMediaSourceProvider.m
=====================================
@@ -22,7 +22,8 @@
#import "VLCMediaSourceProvider.h"
-#import "media-source/VLCMediaSource.h"
+#import "VLCMediaSource.h"
+
#import "main/VLCMain.h"
#import <vlc_media_source.h>
=====================================
po/POTFILES.in
=====================================
@@ -482,6 +482,18 @@
modules/gui/macosx/library/audio-library/VLCLibraryAlbumTableCellView.h
modules/gui/macosx/library/audio-library/VLCLibraryAlbumTableCellView.m
modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.h
modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
+modules/gui/macosx/library/media-source/VLCMediaSource.h
+modules/gui/macosx/library/media-source/VLCMediaSource.m
+modules/gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.h
+modules/gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.m
+modules/gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.h
+modules/gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.m
+modules/gui/macosx/library/media-source/VLCMediaSourceDataSource.h
+modules/gui/macosx/library/media-source/VLCMediaSourceDataSource.m
+modules/gui/macosx/library/media-source/VLCMediaSourceDeviceCollectionViewItem.h
+modules/gui/macosx/library/media-source/VLCMediaSourceDeviceCollectionViewItem.m
+modules/gui/macosx/library/media-source/VLCMediaSourceProvider.h
+modules/gui/macosx/library/media-source/VLCMediaSourceProvider.m
modules/gui/macosx/library/video-library/VLCLibraryVideoGroupDescriptor.h
modules/gui/macosx/library/video-library/VLCLibraryVideoGroupDescriptor.m
modules/gui/macosx/library/video-library/VLCLibraryVideoTableViewDataSource.h
@@ -497,18 +509,6 @@ modules/gui/macosx/main/VLCMain+OldPrefs.m
modules/gui/macosx/main/VLCMain.h
modules/gui/macosx/main/VLCMain.m
modules/gui/macosx/main/macosx.m
-modules/gui/macosx/media-source/VLCMediaSource.h
-modules/gui/macosx/media-source/VLCMediaSource.m
-modules/gui/macosx/media-source/VLCMediaSourceBaseDataSource.h
-modules/gui/macosx/media-source/VLCMediaSourceBaseDataSource.m
-modules/gui/macosx/media-source/VLCMediaSourceCollectionViewItem.h
-modules/gui/macosx/media-source/VLCMediaSourceCollectionViewItem.m
-modules/gui/macosx/media-source/VLCMediaSourceDataSource.h
-modules/gui/macosx/media-source/VLCMediaSourceDataSource.m
-modules/gui/macosx/media-source/VLCMediaSourceDeviceCollectionViewItem.h
-modules/gui/macosx/media-source/VLCMediaSourceDeviceCollectionViewItem.m
-modules/gui/macosx/media-source/VLCMediaSourceProvider.h
-modules/gui/macosx/media-source/VLCMediaSourceProvider.m
modules/gui/macosx/menus/VLCMainMenu.h
modules/gui/macosx/menus/VLCMainMenu.m
modules/gui/macosx/menus/VLCStatusBarIcon.h
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/8294dbc391cce10c8bb04fe3380bdb9bca556d3e...027cf369f56256a873f2c156477a454325a03b99
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/8294dbc391cce10c8bb04fe3380bdb9bca556d3e...027cf369f56256a873f2c156477a454325a03b99
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits