diff --git a/modules/gui/macosx/AudioEffects.h b/modules/gui/macosx/AudioEffects.h index 60ec1a98e4b909136d1b5a9b04209ac8c28a2b4e..033f24f2c1dd3f9a74bfb43c5bff2acf838cf7ee 100644 --- a/modules/gui/macosx/AudioEffects.h +++ b/modules/gui/macosx/AudioEffects.h @@ -24,10 +24,9 @@ #import -@interface VLCAudioEffects : NSObject +@interface VLCAudioEffects : NSWindowController /* generic */ -@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 7e0c57b7780c68add4c6abb862a9b93c5c508978..2ee56558f6b0c46c28b731bc7a737ea37e2b9e7c 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 d1fa3bc5d1f712e8670fb200e0a8fa92e71f3af3..1727e4bcfd9ed92d617aaee9cf92ea88586ae05f 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 20536ed36e3466406b7270245073f31ab551356f..9564537d67a9f1b25ec2ce7d0833e6ac80896568 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 7ecedf8bfce8dca4bb0adab5b9f6bfcb403de26d..6c436a076ca4a960469b9bdb304e6cb3b236f7f5 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; +@class VLCAudioEffects; @interface VLCMain : NSObject { @@ -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 5cba3bb9bee1d5bdff77e310ffa5ba05504940df..8fdc949f938621deacc4d3665293233553cc2711 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)