[vlc-commits] macosx: Convert VLCAudioEffects to NSWindowController subclass

David Fuhrmann git at videolan.org
Sun Aug 2 13:26:38 CEST 2015


vlc | branch: master | David Fuhrmann <dfuhrmann at videolan.org> | Sun Aug  2 13:14:18 2015 +0200| [f6c4ab1458565a958ad8bb5ecbe9fc117f2c3ce9] | committer: David Fuhrmann

macosx: Convert VLCAudioEffects to NSWindowController subclass

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f6c4ab1458565a958ad8bb5ecbe9fc117f2c3ce9
---

 modules/gui/macosx/AudioEffects.h            |    5 +--
 modules/gui/macosx/AudioEffects.m            |   50 +++++++++++---------------
 modules/gui/macosx/MainMenu.m                |   10 +-----
 modules/gui/macosx/VLCVoutWindowController.m |    2 +-
 modules/gui/macosx/intf.h                    |    2 ++
 modules/gui/macosx/intf.m                    |   11 +++++-
 6 files changed, 36 insertions(+), 44 deletions(-)

diff --git a/modules/gui/macosx/AudioEffects.h b/modules/gui/macosx/AudioEffects.h
index 60ec1a9..033f24f 100644
--- a/modules/gui/macosx/AudioEffects.h
+++ b/modules/gui/macosx/AudioEffects.h
@@ -24,10 +24,9 @@
 
 #import <Cocoa/Cocoa.h>
 
- at interface VLCAudioEffects : NSObject
+ at interface VLCAudioEffects : NSWindowController
 
 /* generic */
- at property (readwrite, weak) IBOutlet NSWindow *window;
 @property (readwrite, weak) IBOutlet NSTabView *tabView;
 @property (readwrite, weak) IBOutlet NSPopUpButton *profilePopup;
 
@@ -103,8 +102,6 @@
 @property (readwrite, weak) IBOutlet NSButton *filterKaraokeCheckbox;
 
 /* generic */
-+ (VLCAudioEffects *)sharedInstance;
-
 - (IBAction)profileSelectorAction:(id)sender;
 
 - (void)toggleWindow:(id)sender;
diff --git a/modules/gui/macosx/AudioEffects.m b/modules/gui/macosx/AudioEffects.m
index 7e0c57b..2ee5655 100644
--- a/modules/gui/macosx/AudioEffects.m
+++ b/modules/gui/macosx/AudioEffects.m
@@ -51,19 +51,8 @@
 
 @implementation VLCAudioEffects
 
-+ (VLCAudioEffects *)sharedInstance
++ (void)initialize
 {
-    static VLCAudioEffects *sharedInstance = nil;
-    static dispatch_once_t pred;
-
-    dispatch_once(&pred, ^{
-        sharedInstance = [VLCAudioEffects new];
-    });
-
-    return sharedInstance;
-}
-
-+ (void)initialize{
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 
     NSString *workString;
@@ -99,12 +88,15 @@
 
 - (id)init
 {
-    self = [super init];
-    i_old_profile_index = -1;
+    self = [super initWithWindowNibName:@"AudioEffects"];
+    if (self) {
+        i_old_profile_index = -1;
+    }
+
     return self;
 }
 
-- (void)awakeFromNib
+- (void)windowDidLoad
 {
     /* setup the user's language */
     /* Equalizer */
@@ -144,9 +136,9 @@
     [[_tabView tabViewItemAtIndex:[_tabView indexOfTabViewItemWithIdentifier:@"compressor"]] setLabel:_NS("Compressor")];
     [[_tabView tabViewItemAtIndex:[_tabView indexOfTabViewItemWithIdentifier:@"spatializer"]] setLabel:_NS("Spatializer")];
     [[_tabView tabViewItemAtIndex:[_tabView indexOfTabViewItemWithIdentifier:@"filter"]] setLabel:_NS("Filter")];
-    [_window setTitle:_NS("Audio Effects")];
-    [_window setExcludedFromWindowsMenu:YES];
-    [_window setCollectionBehavior: NSWindowCollectionBehaviorFullScreenAuxiliary];
+    [self.window setTitle:_NS("Audio Effects")];
+    [self.window setExcludedFromWindowsMenu:YES];
+    [self.window setCollectionBehavior: NSWindowCollectionBehaviorFullScreenAuxiliary];
 
     [self equalizerUpdated];
     [self resetCompressor];
@@ -200,17 +192,17 @@
 #pragma mark generic code
 - (void)updateCocoaWindowLevel:(NSInteger)i_level
 {
-    if (_window && [_window isVisible] && [_window level] != i_level)
-        [_window setLevel: i_level];
+    if (self.window && [self.window isVisible] && [self.window level] != i_level)
+        [self.window setLevel: i_level];
 }
 
 - (IBAction)toggleWindow:(id)sender
 {
-    if ([_window isKeyWindow])
-        [_window orderOut:sender];
+    if ([self.window isKeyWindow])
+        [self.window orderOut:sender];
     else {
-        [_window setLevel: [[[VLCMain sharedInstance] voutController] currentStatusWindowLevel]];
-        [_window makeKeyAndOrderFront:sender];
+        [self.window setLevel: [[[VLCMain sharedInstance] voutController] currentStatusWindowLevel]];
+        [self.window makeKeyAndOrderFront:sender];
     }
 }
 
@@ -375,7 +367,7 @@
     [panel setTarget:self];
     b_genericAudioProfileInInteraction = YES;
 
-    [panel runModalForWindow:_window];
+    [panel runModalForWindow:self.window];
 }
 
 - (void)removeAudioEffectsProfile:(id)sender
@@ -390,7 +382,7 @@
     [panel setTarget:self];
     b_genericAudioProfileInInteraction = YES;
 
-    [panel runModalForWindow:_window];
+    [panel runModalForWindow:self.window];
 }
 
 #pragma mark -
@@ -616,7 +608,7 @@ static bool GetEqualizerStatus(intf_thread_t *p_custom_intf,
     [panel setTarget:self];
     b_genericAudioProfileInInteraction = NO;
 
-    [panel runModalForWindow:_window];
+    [panel runModalForWindow:self.window];
 }
 
 - (void)panel:(VLCEnterTextPanel *)panel returnValue:(NSUInteger)value text:(NSString *)text
@@ -672,7 +664,7 @@ static bool GetEqualizerStatus(intf_thread_t *p_custom_intf,
             [alert setMessageText:_NS("Please enter a unique name for the new profile.")];
             [alert setInformativeText:_NS("Multiple profiles with the same name are not allowed.")];
 
-            [alert beginSheetModalForWindow:_window
+            [alert beginSheetModalForWindow:self.window
                               modalDelegate:nil
                              didEndSelector:nil
                                 contextInfo:nil];
@@ -708,7 +700,7 @@ static bool GetEqualizerStatus(intf_thread_t *p_custom_intf,
     [panel setTarget:self];
     b_genericAudioProfileInInteraction = NO;
 
-    [panel runModalForWindow:_window];
+    [panel runModalForWindow:self.window];
 }
 
 - (void)panel:(VLCSelectItemInPopupPanel *)panel returnValue:(NSUInteger)value item:(NSUInteger)item
diff --git a/modules/gui/macosx/MainMenu.m b/modules/gui/macosx/MainMenu.m
index d1fa3bc..1727e4b 100644
--- a/modules/gui/macosx/MainMenu.m
+++ b/modules/gui/macosx/MainMenu.m
@@ -54,14 +54,12 @@
 @interface VLCMainMenu()
 {
     BOOL b_nib_videoeffects_loaded;
-    BOOL b_nib_audioeffects_loaded;
     BOOL b_nib_bookmarks_loaded;
     BOOL b_nib_convertandsave_loaded;
 
     AboutWindowController *_aboutWindowController;
     HelpWindowController  *_helpWindowController;
     VLCVideoEffects *_videoEffectsWindowController;
-    VLCAudioEffects *_audioEffectsWindowController;
     VLCConvertAndSave *_convertAndSaveWindowController;
     AddonsWindowController *_addonsController;
 
@@ -1297,13 +1295,7 @@
 
 - (IBAction)showAudioEffects:(id)sender
 {
-    if (!_audioEffectsWindowController)
-        _audioEffectsWindowController = [[VLCAudioEffects alloc] init];
-
-    if (!b_nib_audioeffects_loaded)
-        b_nib_audioeffects_loaded = [NSBundle loadNibNamed:@"AudioEffects" owner:_audioEffectsWindowController];
-
-    [_audioEffectsWindowController toggleWindow:sender];
+    [[[VLCMain sharedInstance] audioEffectsPanel] toggleWindow:sender];
 }
 
 - (IBAction)showBookmarks:(id)sender
diff --git a/modules/gui/macosx/VLCVoutWindowController.m b/modules/gui/macosx/VLCVoutWindowController.m
index 20536ed..9564537 100644
--- a/modules/gui/macosx/VLCVoutWindowController.m
+++ b/modules/gui/macosx/VLCVoutWindowController.m
@@ -590,7 +590,7 @@ void WindowClose(vout_window_t *p_wnd)
     VLCMain *main = [VLCMain sharedInstance];
     [[VLCMainWindow sharedInstance] setWindowLevel:i_level];
     [[VLCVideoEffects sharedInstance] updateCocoaWindowLevel:currentStatusWindowLevel];
-    [[VLCAudioEffects sharedInstance] updateCocoaWindowLevel:currentStatusWindowLevel];
+    [[main audioEffectsPanel] updateCocoaWindowLevel:currentStatusWindowLevel];
     [[VLCInfo sharedInstance] updateCocoaWindowLevel:currentStatusWindowLevel];
     [[main bookmarks] updateCocoaWindowLevel:currentStatusWindowLevel];
     [[main trackSyncPanel] updateCocoaWindowLevel:currentStatusWindowLevel];
diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h
index 7ecedf8..6c436a0 100644
--- a/modules/gui/macosx/intf.h
+++ b/modules/gui/macosx/intf.h
@@ -66,6 +66,7 @@ static NSString * VLCInputChangedNotification = @"VLCInputChangedNotification";
 @class VLCOpen;
 @class VLCDebugMessageVisualizer;
 @class VLCTrackSynchronization;
+ at class VLCAudioEffects;
 
 @interface VLCMain : NSObject <NSWindowDelegate, NSApplicationDelegate>
 {
@@ -93,6 +94,7 @@ static NSString * VLCInputChangedNotification = @"VLCInputChangedNotification";
 - (VLCDebugMessageVisualizer *)debugMsgPanel;
 
 - (VLCTrackSynchronization *)trackSyncPanel;
+- (VLCAudioEffects *)audioEffectsPanel;
 
 - (void)setActiveVideoPlayback:(BOOL)b_value;
 - (BOOL)activeVideoPlayback;
diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m
index 5cba3bb..8fdc949 100644
--- a/modules/gui/macosx/intf.m
+++ b/modules/gui/macosx/intf.m
@@ -156,6 +156,7 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
     VLCPlaylist *_playlist;
     VLCDebugMessageVisualizer *_messagePanelController;
     VLCTrackSynchronization *_trackSyncPanel;
+    VLCAudioEffects *_audioEffectsPanel;
 
     bool b_intf_terminating; /* Makes sure applicationWillTerminate will be called only once */
 }
@@ -344,7 +345,7 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
 
     /* save current video and audio profiles */
     [[VLCVideoEffects sharedInstance] saveCurrentProfile];
-    [[VLCAudioEffects sharedInstance] saveCurrentProfile];
+    [[self audioEffectsPanel] saveCurrentProfile];
 
     /* Save some interface state in configuration, at module quit */
     config_PutInt(p_intf, "random", var_GetBool(p_playlist, "random"));
@@ -535,6 +536,14 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
     return _trackSyncPanel;
 }
 
+- (VLCAudioEffects *)audioEffectsPanel
+{
+    if (!_audioEffectsPanel)
+        _audioEffectsPanel = [[VLCAudioEffects alloc] init];
+
+    return _audioEffectsPanel;
+}
+
 - (VLCBookmarks *)bookmarks
 {
     if (!_bookmarks)



More information about the vlc-commits mailing list