[vlc-commits] [Git][videolan/vlc][master] macosx: Move VLCLibraryWindowController to own files

Jean-Baptiste Kempf (@jbk) gitlab at videolan.org
Sat Dec 10 09:20:28 UTC 2022



Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC


Commits:
150b34bf by Claudio Cambra at 2022-12-10T09:08:15+00:00
macosx: Move VLCLibraryWindowController to own files

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

- - - - -


8 changed files:

- extras/package/macosx/VLC.xcodeproj/project.pbxproj
- modules/gui/macosx/Makefile.am
- modules/gui/macosx/library/VLCLibraryWindow.h
- modules/gui/macosx/library/VLCLibraryWindow.m
- + modules/gui/macosx/library/VLCLibraryWindowController.h
- + modules/gui/macosx/library/VLCLibraryWindowController.m
- modules/gui/macosx/main/VLCMain.m
- modules/gui/macosx/menus/VLCMainMenu.m


Changes:

=====================================
extras/package/macosx/VLC.xcodeproj/project.pbxproj
=====================================
@@ -78,6 +78,10 @@
 		1CCC89062078A3D500E5626F /* TimeSelectionPanel.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224161E4D2A9000833BE1 /* TimeSelectionPanel.xib */; };
 		1CFE8D591EA0D42A00E94451 /* VLCErrorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CFE8D581EA0D42A00E94451 /* VLCErrorWindowController.m */; };
 		5325C57D29302E6800B2B63A /* VLCLibraryAudioViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5325C57B29302E6800B2B63A /* VLCLibraryAudioViewController.m */; };
+		5325C56A292D59FB00B2B63A /* VLCLibraryVideoCollectionViewContainerViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 5325C569292D59FB00B2B63A /* VLCLibraryVideoCollectionViewContainerViewDataSource.m */; };
+		5325C56D292D5CEB00B2B63A /* VLCLibraryVideoGroupDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5325C56C292D5CEB00B2B63A /* VLCLibraryVideoGroupDescriptor.m */; };
+		5325C570292D5E8F00B2B63A /* VLCLibraryVideoCollectionViewContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5325C56F292D5E8F00B2B63A /* VLCLibraryVideoCollectionViewContainerView.m */; };
+		5362550D293FD639005D64FA /* VLCLibraryWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5362550C293FD639005D64FA /* VLCLibraryWindowController.m */; };
 		536283F0291146BC00640C15 /* VLCLibraryTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 536283DE291146BC00640C15 /* VLCLibraryTableView.m */; };
 		536283F1291146BC00640C15 /* VLCLibraryAlbumTracksDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 536283DF291146BC00640C15 /* VLCLibraryAlbumTracksDataSource.m */; };
 		536283F2291146BC00640C15 /* VLCLibraryCollectionViewAlbumSupplementaryDetailView.m in Sources */ = {isa = PBXBuildFile; fileRef = 536283E1291146BC00640C15 /* VLCLibraryCollectionViewAlbumSupplementaryDetailView.m */; };
@@ -236,6 +240,14 @@
 		1CFE8D581EA0D42A00E94451 /* VLCErrorWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCErrorWindowController.m; sourceTree = "<group>"; };
 		5325C57B29302E6800B2B63A /* VLCLibraryAudioViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryAudioViewController.m; sourceTree = "<group>"; };
 		5325C57C29302E6800B2B63A /* VLCLibraryAudioViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCLibraryAudioViewController.h; sourceTree = "<group>"; };
+		5325C568292D59FB00B2B63A /* VLCLibraryVideoCollectionViewContainerViewDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryVideoCollectionViewContainerViewDataSource.h; sourceTree = "<group>"; };
+		5325C569292D59FB00B2B63A /* VLCLibraryVideoCollectionViewContainerViewDataSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryVideoCollectionViewContainerViewDataSource.m; sourceTree = "<group>"; };
+		5325C56B292D5CEB00B2B63A /* VLCLibraryVideoGroupDescriptor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryVideoGroupDescriptor.h; sourceTree = "<group>"; };
+		5325C56C292D5CEB00B2B63A /* VLCLibraryVideoGroupDescriptor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryVideoGroupDescriptor.m; sourceTree = "<group>"; };
+		5325C56E292D5E8F00B2B63A /* VLCLibraryVideoCollectionViewContainerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryVideoCollectionViewContainerView.h; sourceTree = "<group>"; };
+		5325C56F292D5E8F00B2B63A /* VLCLibraryVideoCollectionViewContainerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryVideoCollectionViewContainerView.m; sourceTree = "<group>"; };
+		5362550B293FD639005D64FA /* VLCLibraryWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryWindowController.h; sourceTree = "<group>"; };
+		5362550C293FD639005D64FA /* VLCLibraryWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryWindowController.m; sourceTree = "<group>"; };
 		536283DC291146BC00640C15 /* VLCLibraryAlbumTracksDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCLibraryAlbumTracksDataSource.h; sourceTree = "<group>"; };
 		536283DD291146BC00640C15 /* VLCLibrarySongTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCLibrarySongTableCellView.h; sourceTree = "<group>"; };
 		536283DE291146BC00640C15 /* VLCLibraryTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryTableView.m; sourceTree = "<group>"; };
@@ -1141,6 +1153,8 @@
 				536283DE291146BC00640C15 /* VLCLibraryTableView.m */,
 				7D713D302201AE350042BEB7 /* VLCLibraryWindow.h */,
 				7D713D312201AE350042BEB7 /* VLCLibraryWindow.m */,
+				5362550B293FD639005D64FA /* VLCLibraryWindowController.h */,
+				5362550C293FD639005D64FA /* VLCLibraryWindowController.m */,
 			);
 			path = library;
 			sourceTree = "<group>";
@@ -1950,6 +1964,7 @@
 				6B4D50A71E7AB52C004479B5 /* NSScreen+VLCAdditions.m in Sources */,
 				1C3113DD1E508C6900D4DD76 /* VLCTrackSynchronizationWindowController.m in Sources */,
 				7D0F5A9B2264EB410009C48A /* VLCHotkeysController.m in Sources */,
+				5362550D293FD639005D64FA /* VLCLibraryWindowController.m in Sources */,
 				6B6FFF701EF9EC350001CEB1 /* CompatibilityFixes.m in Sources */,
 				7D1BF28A22A153E20027C50F /* VLCRoundedCornerTextField.m in Sources */,
 				7DFBDCB4226CD00900B700A5 /* VLCLibraryDataTypes.m in Sources */,


=====================================
modules/gui/macosx/Makefile.am
=====================================
@@ -92,6 +92,8 @@ libmacosx_plugin_la_SOURCES = \
 	gui/macosx/library/VLCLibraryTableCellView.m \
 	gui/macosx/library/VLCLibraryWindow.h \
 	gui/macosx/library/VLCLibraryWindow.m \
+	gui/macosx/library/VLCLibraryWindowController.h \
+	gui/macosx/library/VLCLibraryWindowController.m \
 	gui/macosx/library/video-library/VLCLibraryVideoCollectionViewsStackViewController.h \
 	gui/macosx/library/video-library/VLCLibraryVideoCollectionViewsStackViewController.m \
 	gui/macosx/library/video-library/VLCLibraryVideoCollectionViewContainerView.h \


=====================================
modules/gui/macosx/library/VLCLibraryWindow.h
=====================================
@@ -50,14 +50,12 @@ typedef NS_ENUM(NSUInteger, VLCViewModeSegment) {
     VLCListViewModeSegment
 };
 
- at interface VLCLibraryWindowController : NSWindowController<NSWindowRestoration>
-
-- (instancetype)initWithLibraryWindow;
-
- at end
-
 @interface VLCLibraryWindow : VLCVideoWindowCommon<NSUserInterfaceItemIdentification>
 
+extern const CGFloat VLCLibraryWindowMinimalWidth;
+extern const CGFloat VLCLibraryWindowMinimalHeight;
+extern const NSUserInterfaceItemIdentifier VLCLibraryWindowIdentifier;
+
 @property (readwrite, weak) IBOutlet NSSegmentedControl *segmentedTitleControl;
 @property (readwrite, weak) IBOutlet NSToolbarItem *segmentedTitleControlToolbarItem;
 @property (readwrite, weak) IBOutlet NSSegmentedControl *gridVsListSegmentedControl;
@@ -133,6 +131,7 @@ typedef NS_ENUM(NSUInteger, VLCViewModeSegment) {
 
 - (void)videoPlaybackWillBeStarted;
 - (void)reopenVideoView;
+- (void)togglePlaylist;
 
 - (IBAction)playlistDoubleClickAction:(id)sender;
 - (IBAction)shuffleAction:(id)sender;


=====================================
modules/gui/macosx/library/VLCLibraryWindow.m
=====================================
@@ -70,8 +70,10 @@ const CGFloat VLCLibraryWindowSmallRowHeight = 24.;
 const CGFloat VLCLibraryWindowLargeRowHeight = 50.;
 const CGFloat VLCLibraryWindowDefaultPlaylistWidth = 340.;
 const CGFloat VLCLibraryWindowMinimalPlaylistWidth = 170.;
+const NSUserInterfaceItemIdentifier VLCLibraryWindowIdentifier = @"VLCLibraryWindow";
 
-static NSUserInterfaceItemIdentifier const kVLCLibraryWindowIdentifier = @"VLCLibraryWindow";
+static NSArray<NSLayoutConstraint *> *videoPlaceholderImageViewSizeConstraints;
+static NSArray<NSLayoutConstraint *> *audioPlaceholderImageViewSizeConstraints;
 
 @interface VLCLibraryWindow () <VLCDragDropTarget, NSSplitViewDelegate>
 {
@@ -128,7 +130,7 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
 
 - (void)awakeFromNib
 {
-    self.identifier = kVLCLibraryWindowIdentifier;
+    self.identifier = VLCLibraryWindowIdentifier;
     
     VLCMain *mainInstance = [VLCMain sharedInstance];
     _playlistController = [mainInstance playlistController];
@@ -898,63 +900,3 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
 }
 
 @end
-
- at implementation VLCLibraryWindowController
-
-- (instancetype)initWithLibraryWindow
-{
-    self = [super initWithWindowNibName:@"VLCLibraryWindow"];
-    return self;
-}
-
-- (void)windowDidLoad
-{
-    VLCLibraryWindow *window = (VLCLibraryWindow *)self.window;
-    [window setRestorationClass:[self class]];
-    [window setExcludedFromWindowsMenu:YES];
-    [window setAcceptsMouseMovedEvents:YES];
-    [window setContentMinSize:NSMakeSize(VLCLibraryWindowMinimalWidth, VLCLibraryWindowMinimalHeight)];
-
-    // HACK: On initialisation, the window refuses to accept any border resizing. It seems the split view
-    // holds a monopoly on the edges of the window (which can be seen as the right-side of the split view
-    // lets you resize the playlist, and after doing so the window becomes resizeable.
-    
-    // This can be worked around by maximizing the window, or toggling the playlist.
-    // Toggling the playlist is simplest.
-    [window togglePlaylist];
-    [window togglePlaylist];
-}
-
-+ (void)restoreWindowWithIdentifier:(NSUserInterfaceItemIdentifier)identifier 
-                              state:(NSCoder *)state 
-                  completionHandler:(void (^)(NSWindow *, NSError *))completionHandler
-{
-    if([identifier isEqualToString:kVLCLibraryWindowIdentifier] == NO) {
-        return;
-    }
-    
-    if([VLCMain sharedInstance].libraryWindowController == nil) {
-        [VLCMain sharedInstance].libraryWindowController = [[VLCLibraryWindowController alloc] initWithLibraryWindow];
-    }
-
-    VLCLibraryWindow *libraryWindow = [VLCMain sharedInstance].libraryWindow;
-
-    NSInteger rememberedSelectedLibrarySegment = [state decodeIntegerForKey:@"macosx-library-selected-segment"];
-    NSInteger rememberedSelectedLibraryViewModeSegment = [state decodeIntegerForKey:@"macosx-library-view-mode-selected-segment"];
-    NSInteger rememberedSelectedLibraryViewAudioSegment = [state decodeIntegerForKey:@"macosx-library-audio-view-selected-segment"];
-
-    [libraryWindow.segmentedTitleControl setSelectedSegment:rememberedSelectedLibrarySegment];
-    [libraryWindow.gridVsListSegmentedControl setSelectedSegment:rememberedSelectedLibraryViewModeSegment];
-    [libraryWindow.audioSegmentedControl setSelectedSegment:rememberedSelectedLibraryViewAudioSegment];
-
-    // We don't want to add these to the navigation stack...
-    [libraryWindow.libraryAudioViewController segmentedControlAction:libraryWindow.navigationStack];
-    [libraryWindow segmentedControlAction:libraryWindow.navigationStack];
-
-    // But we do want the "final" initial position to be added. So we manually invoke the navigation stack
-    [libraryWindow.navigationStack appendCurrentLibraryState];
-
-    completionHandler(libraryWindow, nil);
-}
-
- at end


=====================================
modules/gui/macosx/library/VLCLibraryWindowController.h
=====================================
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * VLCLibraryWindowController.h: MacOS X interface module
+ *****************************************************************************
+ * Copyright (C) 2022 VLC authors and VideoLAN
+ *
+ * Authors: Claudio Cambra <developer at claudiocambra.com>
+ *
+ * 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 interface VLCLibraryWindowController : NSWindowController<NSWindowRestoration>
+
+- (instancetype)initWithLibraryWindow;
+
+ at end
+
+NS_ASSUME_NONNULL_END


=====================================
modules/gui/macosx/library/VLCLibraryWindowController.m
=====================================
@@ -0,0 +1,88 @@
+/*****************************************************************************
+ * VLCLibraryWindowController.m: MacOS X interface module
+ *****************************************************************************
+ * Copyright (C) 2022 VLC authors and VideoLAN
+ *
+ * Authors: Claudio Cambra <developer at claudiocambra.com>
+ *
+ * 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 "VLCLibraryWindowController.h"
+
+#import "library/VLCLibraryNavigationStack.h"
+#import "library/VLCLibraryWindow.h"
+#import "library/audio-library/VLCLibraryAudioViewController.h"
+#import "main/VLCMain.h"
+
+ at implementation VLCLibraryWindowController
+
+- (instancetype)initWithLibraryWindow
+{
+    self = [super initWithWindowNibName:@"VLCLibraryWindow"];
+    return self;
+}
+
+- (void)windowDidLoad
+{
+    VLCLibraryWindow *window = (VLCLibraryWindow *)self.window;
+    [window setRestorationClass:[self class]];
+    [window setExcludedFromWindowsMenu:YES];
+    [window setAcceptsMouseMovedEvents:YES];
+    [window setContentMinSize:NSMakeSize(VLCLibraryWindowMinimalWidth, VLCLibraryWindowMinimalHeight)];
+
+    // HACK: On initialisation, the window refuses to accept any border resizing. It seems the split view
+    // holds a monopoly on the edges of the window (which can be seen as the right-side of the split view
+    // lets you resize the playlist, and after doing so the window becomes resizeable.
+
+    // This can be worked around by maximizing the window, or toggling the playlist.
+    // Toggling the playlist is simplest.
+    [window togglePlaylist];
+    [window togglePlaylist];
+}
+
++ (void)restoreWindowWithIdentifier:(NSUserInterfaceItemIdentifier)identifier
+                              state:(NSCoder *)state
+                  completionHandler:(void (^)(NSWindow *, NSError *))completionHandler
+{
+    if([identifier isEqualToString:VLCLibraryWindowIdentifier] == NO) {
+        return;
+    }
+
+    if([VLCMain sharedInstance].libraryWindowController == nil) {
+        [VLCMain sharedInstance].libraryWindowController = [[VLCLibraryWindowController alloc] initWithLibraryWindow];
+    }
+
+    VLCLibraryWindow *libraryWindow = [VLCMain sharedInstance].libraryWindow;
+
+    NSInteger rememberedSelectedLibrarySegment = [state decodeIntegerForKey:@"macosx-library-selected-segment"];
+    NSInteger rememberedSelectedLibraryViewModeSegment = [state decodeIntegerForKey:@"macosx-library-view-mode-selected-segment"];
+    NSInteger rememberedSelectedLibraryViewAudioSegment = [state decodeIntegerForKey:@"macosx-library-audio-view-selected-segment"];
+
+    [libraryWindow.segmentedTitleControl setSelectedSegment:rememberedSelectedLibrarySegment];
+    [libraryWindow.gridVsListSegmentedControl setSelectedSegment:rememberedSelectedLibraryViewModeSegment];
+    [libraryWindow.audioSegmentedControl setSelectedSegment:rememberedSelectedLibraryViewAudioSegment];
+
+    // We don't want to add these to the navigation stack...
+    [libraryWindow.libraryAudioViewController segmentedControlAction:libraryWindow.navigationStack];
+    [libraryWindow segmentedControlAction:libraryWindow.navigationStack];
+
+    // But we do want the "final" initial position to be added. So we manually invoke the navigation stack
+    [libraryWindow.navigationStack appendCurrentLibraryState];
+
+    completionHandler(libraryWindow, nil);
+}
+
+ at end


=====================================
modules/gui/macosx/main/VLCMain.m
=====================================
@@ -44,6 +44,7 @@
 #include <vlc_variables.h>
 
 #import "library/VLCLibraryWindow.h"
+#import "library/VLCLibraryWindowController.h"
 
 #import "main/CompatibilityFixes.h"
 #import "main/VLCMain+OldPrefs.h"


=====================================
modules/gui/macosx/menus/VLCMainMenu.m
=====================================
@@ -29,6 +29,7 @@
 #import "extensions/NSString+Helpers.h"
 
 #import "library/VLCLibraryWindow.h"
+#import "library/VLCLibraryWindowController.h"
 
 #import "menus/renderers/VLCRendererMenuController.h"
 



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

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


VideoLAN code repository instance


More information about the vlc-commits mailing list