1010
1111
1212static NSString * const SFYPlayerStatePreferenceKey = @" ShowPlayerState" ;
13-
13+ static NSString * const SFYPlayerDockIconPreferenceKey = @" ShowDockIcon " ;
1414
1515@interface SFYAppDelegate ()
1616
1717@property (nonatomic , strong ) NSMenuItem *playerStateMenuItem;
18+ @property (nonatomic , strong ) NSMenuItem *dockIconMenuItem;
1819@property (nonatomic , strong ) NSStatusItem *statusItem;
1920
2021@end
2122
22-
2323@implementation SFYAppDelegate
2424
2525- (void )applicationDidFinishLaunching : (NSNotification * __unused)aNotification
@@ -31,7 +31,10 @@ - (void)applicationDidFinishLaunching:(NSNotification * __unused)aNotification
3131
3232 self.playerStateMenuItem = [[NSMenuItem alloc ] initWithTitle: [self determinePlayerStateMenuItemTitle ] action: @selector (togglePlayerStateVisibility ) keyEquivalent: @" " ];
3333
34+ self.dockIconMenuItem = [[NSMenuItem alloc ] initWithTitle: [self determineDockIconMenuItemTitle ] action: @selector (toggleDockIconVisibility ) keyEquivalent: @" " ];
35+
3436 [menu addItem: self .playerStateMenuItem];
37+ [menu addItem: self .dockIconMenuItem];
3538 [menu addItemWithTitle: NSLocalizedString(@" Quit" , nil ) action: @selector (quit ) keyEquivalent: @" q" ];
3639
3740 [self .statusItem setMenu: menu];
@@ -99,7 +102,7 @@ - (void)togglePlayerStateVisibility
99102
100103- (NSString *)determinePlayerStateMenuItemTitle
101104{
102- return [self getPlayerStateVisibility ] ? NSLocalizedString(@" Hide player state " , nil ) : NSLocalizedString(@" Show player state " , nil );
105+ return [self getPlayerStateVisibility ] ? NSLocalizedString(@" Hide Player State " , nil ) : NSLocalizedString(@" Show Player State " , nil );
103106}
104107
105108- (NSString *)determinePlayerStateText
@@ -120,6 +123,37 @@ - (NSString *)determinePlayerStateText
120123 return playerStateText;
121124}
122125
126+ #pragma mark - Toggle Dock Icon
127+
128+ - (BOOL )getDockIconVisibility
129+ {
130+ return [[NSUserDefaults standardUserDefaults ] boolForKey: SFYPlayerDockIconPreferenceKey];
131+ }
132+
133+ - (void )setDockIconVisibility : (BOOL )visible
134+ {
135+ [[NSUserDefaults standardUserDefaults ] setBool: visible forKey: SFYPlayerDockIconPreferenceKey];
136+ }
137+
138+ - (void )toggleDockIconVisibility
139+ {
140+ [self setDockIconVisibility: ![self getDockIconVisibility ]];
141+ self.dockIconMenuItem .title = [self determineDockIconMenuItemTitle ];
142+
143+ if ([_dockIconMenuItem.title isEqual: @" Show Dock Icon" ])
144+ {
145+ [NSApp setActivationPolicy: NSApplicationActivationPolicyAccessory];
146+ }
147+ else
148+ {
149+ [NSApp setActivationPolicy: NSApplicationActivationPolicyRegular];
150+ }
151+ }
152+
153+ - (NSString *)determineDockIconMenuItemTitle
154+ {
155+ return [self getDockIconVisibility ] ? NSLocalizedString(@" Hide Dock Icon" , nil ) : NSLocalizedString(@" Show Dock Icon" , nil );
156+ }
123157
124158#pragma mark - Quit
125159
@@ -129,3 +163,5 @@ - (void)quit
129163}
130164
131165@end
166+
167+
0 commit comments