From 20af5f03f5ceee5561784d17bd1456ae56fee6e3 Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Wed, 2 Nov 2005 03:15:58 +0000 Subject: [PATCH] Hitting the show track info hotkey when the status window is visible will hide it again. --- MainController.m | 7 +++++++ StatusWindowController.h | 17 +++++++++++++++++ StatusWindowController.m | 23 ++++++++++++++++++++++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/MainController.m b/MainController.m index cfc9518..c0bec8e 100755 --- a/MainController.m +++ b/MainController.m @@ -1028,6 +1028,13 @@ static MainController *sharedController; int rating = -1; int playCount = -1; + //If we're already visible and the setting says so, vanish instead of displaying again. + if ([[StatusWindowController sharedController] currentStatusWindowType] == StatusWindowTrackInfoType && [[StatusWindow sharedWindow] visibilityState] == ITWindowVisibleState) { + [self invalidateStatusWindowUpdateTimer]; + [[StatusWindow sharedWindow] vanish:nil]; + return; + } + ITDebugLog(@"Showing track info status window."); NS_DURING diff --git a/StatusWindowController.h b/StatusWindowController.h index 307975d..18443dc 100755 --- a/StatusWindowController.h +++ b/StatusWindowController.h @@ -23,11 +23,27 @@ typedef enum { StatusWindowRepeatTrack } StatusWindowRepeatMode; +typedef enum { + StatusWindowNoType = -1, + StatusWindowTrackInfoType, + StatusWindowUpcomingSongsType, + StatusWindowVolumeType, + StatusWindowRatingType, + StatusWindowRepeatType, + StatusWindowShuffleType, + StatusWindowShufflabilityType, + StatusWindowSetupType, + StatusWindowRegistrationType, + StatusWindowNetworkType, + StatusWindowPreferencesType, + StatusWindowDebugType +} StatusWindowType; @interface StatusWindowController : NSObject { StatusWindow *_window; NSUserDefaults *df; NSRange _timeRange; + StatusWindowType _currentType; } + (StatusWindowController *)sharedController; @@ -57,6 +73,7 @@ typedef enum { playCount: (int)playCount image: (NSImage *)art; +- (StatusWindowType)currentStatusWindowType; - (void)updateTime:(NSString *)time; @end diff --git a/StatusWindowController.m b/StatusWindowController.m index db04626..437487b 100755 --- a/StatusWindowController.m +++ b/StatusWindowController.m @@ -44,6 +44,8 @@ static StatusWindowController *sharedController; ITWindowEffect *entryEffect; ITWindowEffect *exitEffect; + _currentType = StatusWindowNoType; + _window = [[StatusWindow sharedWindow] retain]; df = [[NSUserDefaults standardUserDefaults] retain]; @@ -191,6 +193,7 @@ static StatusWindowController *sharedController; //text = [text stringByAppendingString:[@"\n" stringByAppendingString:ratingString]]; } + _currentType = StatusWindowTrackInfoType; [_window buildTextWindowWithString:text]; [_window appear:self]; [text release]; @@ -204,6 +207,7 @@ static StatusWindowController *sharedController; [_window setImage:[NSImage imageNamed:@"Upcoming"]]; [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildTextWindowWithString:[bull stringByAppendingString:[titleStrings componentsJoinedByString:end]]]; + _currentType = StatusWindowUpcomingSongsType; [_window appear:self]; } @@ -215,6 +219,7 @@ static StatusWindowController *sharedController; size:18 count:10 active:( ceil(level * 100) / 10 )]; + _currentType = StatusWindowVolumeType; [_window appear:self]; } @@ -226,7 +231,8 @@ static StatusWindowController *sharedController; size:48 count:5 active:( ceil(rating * 100) / 20 )]; - [_window appear:self]; + _currentType = StatusWindowRatingType; + [_window appear:self]; } - (void)showShuffleWindow:(BOOL)shuffle @@ -234,6 +240,7 @@ static StatusWindowController *sharedController; [_window setImage:[NSImage imageNamed:@"Shuffle"]]; [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildTextWindowWithString:( shuffle ? NSLocalizedString(@"shuffleOn", @"Shuffle On") : NSLocalizedString(@"shuffleOff", @"Shuffle Off"))]; + _currentType = StatusWindowRatingType; [_window appear:self]; } @@ -252,6 +259,7 @@ static StatusWindowController *sharedController; [_window setImage:[NSImage imageNamed:@"Repeat"]]; [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildTextWindowWithString:string]; + _currentType = StatusWindowRepeatType; [_window appear:self]; } @@ -260,6 +268,7 @@ static StatusWindowController *sharedController; [_window setImage:[NSImage imageNamed:@"Shuffle"]]; [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildTextWindowWithString:( !shufflable ? NSLocalizedString(@"shufflableOn", @"Current Song Skipped When Shuffling") : NSLocalizedString(@"shufflableOff", @"Current Song Not Skipped When Shuffling"))]; + _currentType = StatusWindowShufflabilityType; [_window appear:self]; } @@ -276,6 +285,7 @@ static StatusWindowController *sharedController; defaultAction:@selector(autoLaunchOK) alternateAction:@selector(autoLaunchCancel)]; + _currentType = StatusWindowSetupType; [_window appear:self]; [_window setLocked:YES]; } @@ -294,6 +304,7 @@ static StatusWindowController *sharedController; defaultAction:@selector(registerNowOK) alternateAction:@selector(registerNowCancel)]; + _currentType = StatusWindowRegistrationType; [_window appear:self]; [_window setLocked:YES]; } @@ -311,6 +322,7 @@ static StatusWindowController *sharedController; defaultAction:@selector(reconnect) alternateAction:@selector(cancelReconnect)]; + _currentType = StatusWindowNetworkType; [_window appear:self]; [_window setLocked:YES]; } @@ -328,6 +340,7 @@ static StatusWindowController *sharedController; defaultAction:@selector(cancelReconnect) alternateAction:nil]; + _currentType = StatusWindowNetworkType; [_window appear:self]; [_window setLocked:YES]; } @@ -345,6 +358,7 @@ static StatusWindowController *sharedController; defaultAction:@selector(showPreferencesAndClose) alternateAction:@selector(cancelReconnect)]; + _currentType = StatusWindowPreferencesType; [_window appear:self]; [_window setLocked:YES]; } @@ -359,10 +373,17 @@ static StatusWindowController *sharedController; target:[MainController sharedController] defaultAction:@selector(cancelReconnect) alternateAction:nil]; + + _currentType = StatusWindowDebugType; [_window appear:self]; [_window setLocked:YES]; } +- (StatusWindowType)currentStatusWindowType +{ + return _currentType; +} + - (void)updateTime:(NSString *)time { if (time && [time length]) { -- 2.20.1