macosx: Handle specific hiding/showing of given toolbar items directly within toolbar delegate

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
This commit is contained in:
Claudio Cambra 2024-04-19 19:02:53 +08:00 committed by Felix Paul Kühne
parent 85e8f0db0a
commit b6bb469424
3 changed files with 48 additions and 25 deletions

View File

@ -324,43 +324,28 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
- (void)showHomeLibrary
{
// Only collection view mode
[self.toolbarDelegate setForwardsBackwardsToolbarItemsVisible:NO];
[self.toolbarDelegate setSortOrderToolbarItemVisible:YES];
[self.toolbarDelegate setLibrarySearchToolbarItemVisible:YES];
[self.toolbarDelegate setViewModeToolbarItemVisible:NO];
[self.toolbarDelegate layoutForSegment:VLCLibraryHomeSegment];
[_libraryHomeViewController presentHomeView];
}
- (void)showVideoLibrary
{
[self.toolbarDelegate setForwardsBackwardsToolbarItemsVisible:NO];
[self.toolbarDelegate setSortOrderToolbarItemVisible:YES];
[self.toolbarDelegate setLibrarySearchToolbarItemVisible:YES];
[self.toolbarDelegate setViewModeToolbarItemVisible:YES];
[self.toolbarDelegate layoutForSegment:VLCLibraryVideoSegment];
[_libraryVideoViewController presentVideoView];
}
- (void)showAudioLibrary
{
[self.toolbarDelegate setForwardsBackwardsToolbarItemsVisible:NO];
[self.toolbarDelegate setSortOrderToolbarItemVisible:YES];
[self.toolbarDelegate setLibrarySearchToolbarItemVisible:YES];
[self.toolbarDelegate setViewModeToolbarItemVisible:YES];
[self.toolbarDelegate layoutForSegment:VLCLibraryMusicSegment];
self.libraryAudioViewController.currentSegmentType = self.librarySegmentType;
}
- (void)showMediaSourceLibrary
{
[self.navigationStack clear];
[self.toolbarDelegate setForwardsBackwardsToolbarItemsVisible:YES];
[self.toolbarDelegate setSortOrderToolbarItemVisible:NO];
[self.toolbarDelegate setLibrarySearchToolbarItemVisible:NO];
[self.toolbarDelegate setViewModeToolbarItemVisible:YES];
const VLCLibrarySegmentType segmentType = self.librarySegmentType;
[self.toolbarDelegate layoutForSegment:segmentType];
if (segmentType == VLCLibraryBrowseSegment) {
[_libraryMediaSourceViewController presentBrowseView];
} else if (segmentType == VLCLibraryStreamsSegment) {

View File

@ -22,6 +22,8 @@
#import <Cocoa/Cocoa.h>
#import "library/VLCLibrarySegment.h"
NS_ASSUME_NONNULL_BEGIN
@class VLCLibraryWindow;
@ -46,12 +48,7 @@ extern NSString * const VLCLibraryWindowTrackingSeparatorToolbarItemIdentifier;
- (IBAction)rendererControlAction:(id)sender;
- (void)setForwardsBackwardsToolbarItemsVisible:(BOOL)visible;
- (void)setSortOrderToolbarItemVisible:(BOOL)visible;
- (void)setSortOrderToolbarItemVisible:(BOOL)visible;
- (void)setLibrarySearchToolbarItemVisible:(BOOL)visible;
- (void)setViewModeToolbarItemVisible:(BOOL)visible;
- (void)updatePlayqueueToggleState;
- (void)layoutForSegment:(VLCLibrarySegmentType)segment;
@end

View File

@ -136,6 +136,47 @@ NSString * const VLCLibraryWindowTrackingSeparatorToolbarItemIdentifier = @"VLCL
NSControlStateValueOff : NSControlStateValueOn;
}
#pragma mark - convenience method for configuration of toolbar items layout
- (void)layoutForSegment:(VLCLibrarySegmentType)segment
{
switch(segment) {
case VLCLibraryLowSentinelSegment:
vlc_assert_unreachable();
case VLCLibraryHomeSegment:
[self setForwardsBackwardsToolbarItemsVisible:NO];
[self setSortOrderToolbarItemVisible:NO];
[self setLibrarySearchToolbarItemVisible:NO];
[self setViewModeToolbarItemVisible:NO];
break;
case VLCLibraryVideoSegment:
[self setForwardsBackwardsToolbarItemsVisible:NO];
[self setSortOrderToolbarItemVisible:YES];
[self setLibrarySearchToolbarItemVisible:YES];
[self setViewModeToolbarItemVisible:YES];
break;
case VLCLibraryMusicSegment:
case VLCLibraryArtistsMusicSubSegment:
case VLCLibraryAlbumsMusicSubSegment:
case VLCLibrarySongsMusicSubSegment:
case VLCLibraryGenresMusicSubSegment:
[self setForwardsBackwardsToolbarItemsVisible:NO];
[self setSortOrderToolbarItemVisible:YES];
[self setLibrarySearchToolbarItemVisible:YES];
[self setViewModeToolbarItemVisible:YES];
break;
case VLCLibraryBrowseSegment:
case VLCLibraryStreamsSegment:
[self setForwardsBackwardsToolbarItemsVisible:YES];
[self setSortOrderToolbarItemVisible:NO];
[self setLibrarySearchToolbarItemVisible:NO];
[self setViewModeToolbarItemVisible:YES];
break;
case VLCLibraryHighSentinelSegment:
vlc_assert_unreachable();
}
}
#pragma mark - item visibility handling
- (void)hideToolbarItem:(NSToolbarItem *)toolbarItem