macosx: Move renderers update for toolbar item handling to toolbar delegate

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
This commit is contained in:
Claudio Cambra 2024-04-19 18:04:29 +08:00 committed by Felix Paul Kühne
parent 0558902cd2
commit 7dbfe6bc1e
2 changed files with 29 additions and 32 deletions

View File

@ -63,8 +63,6 @@
#import "media-source/VLCMediaSourceBaseDataSource.h"
#import "media-source/VLCLibraryMediaSourceViewController.h"
#import "menus/renderers/VLCRendererMenuController.h"
#import "views/VLCBottomBarView.h"
#import "views/VLCCustomWindowButton.h"
#import "views/VLCDragDropView.h"
@ -185,15 +183,7 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
selector:@selector(playerStateChanged:)
name:VLCPlayerStateChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(renderersChanged:)
name:VLCRendererAddedNotification
object:nil];
[notificationCenter addObserver:self
selector:@selector(renderersChanged:)
name:VLCRendererRemovedNotification
object:nil];
_libraryHomeViewController = [[VLCLibraryHomeViewController alloc] initWithLibraryWindow:self];
_libraryVideoViewController = [[VLCLibraryVideoViewController alloc] initWithLibraryWindow:self];
_libraryAudioViewController = [[VLCLibraryAudioViewController alloc] initWithLibraryWindow:self];
@ -725,25 +715,4 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
}
}
#pragma mark -
#pragma mark respond to renderers
- (void)renderersChanged:(NSNotification *)notification
{
const NSUInteger rendererCount =
VLCMain.sharedInstance.mainMenu.rendererMenuController.rendererItems.count;
const BOOL rendererToolbarItemVisible =
[self.toolbar.items containsObject:self.toolbarDelegate.renderersToolbarItem];
if (rendererCount > 0 && !rendererToolbarItemVisible) {
[self.toolbarDelegate insertToolbarItem:self.toolbarDelegate.renderersToolbarItem
inFrontOf:@[self.toolbarDelegate.sortOrderToolbarItem,
self.toolbarDelegate.libraryViewModeToolbarItem,
self.toolbarDelegate.forwardsToolbarItem,
self.toolbarDelegate.backwardsToolbarItem]];
} else if (rendererCount == 0 && rendererToolbarItemVisible) {
[self.toolbarDelegate hideToolbarItem:self.toolbarDelegate.renderersToolbarItem];
}
}
@end

View File

@ -54,6 +54,16 @@ NSString * const VLCLibraryWindowTrackingSeparatorToolbarItemIdentifier = @"VLCL
[self.toolbar.items objectAtIndex:trackingSeparatorItemIndex];
}
NSNotificationCenter * const notificationCenter = NSNotificationCenter.defaultCenter;
[notificationCenter addObserver:self
selector:@selector(renderersChanged:)
name:VLCRendererAddedNotification
object:nil];
[notificationCenter addObserver:self
selector:@selector(renderersChanged:)
name:VLCRendererRemovedNotification
object:nil];
// Hide renderers toolbar item at first. Start discoveries and wait for notifications about
// renderers being added or removed to keep hidden or show depending on outcome
[self hideToolbarItem:self.renderersToolbarItem];
@ -82,6 +92,24 @@ NSString * const VLCLibraryWindowTrackingSeparatorToolbarItemIdentifier = @"VLCL
return nil;
}
- (void)renderersChanged:(NSNotification *)notification
{
const NSUInteger rendererCount =
VLCMain.sharedInstance.mainMenu.rendererMenuController.rendererItems.count;
const BOOL rendererToolbarItemVisible =
[self.toolbar.items containsObject:self.renderersToolbarItem];
if (rendererCount > 0 && !rendererToolbarItemVisible) {
[self insertToolbarItem:self.renderersToolbarItem
inFrontOf:@[self.sortOrderToolbarItem,
self.libraryViewModeToolbarItem,
self.forwardsToolbarItem,
self.backwardsToolbarItem]];
} else if (rendererCount == 0 && rendererToolbarItemVisible) {
[self hideToolbarItem:self.renderersToolbarItem];
}
}
- (void)hideToolbarItem:(NSToolbarItem *)toolbarItem
{
const NSInteger toolbarItemIndex = [self.toolbar.items indexOfObject:toolbarItem];