Hitting the show track info hotkey when the status window is visible will hide it...
authorKent Sutherland <ksuther@ithinksw.com>
Wed, 2 Nov 2005 03:15:58 +0000 (03:15 +0000)
committerKent Sutherland <ksuther@ithinksw.com>
Wed, 2 Nov 2005 03:15:58 +0000 (03:15 +0000)
MainController.m
StatusWindowController.h
StatusWindowController.m

index cfc9518..c0bec8e 100755 (executable)
@@ -1028,6 +1028,13 @@ static MainController *sharedController;
     int                     rating      = -1;
     int                     playCount   = -1;
        
     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
     ITDebugLog(@"Showing track info status window.");
     
     NS_DURING
index 307975d..18443dc 100755 (executable)
@@ -23,11 +23,27 @@ typedef enum {
     StatusWindowRepeatTrack
 } StatusWindowRepeatMode;
 
     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;
 
 @interface StatusWindowController : NSObject {
     StatusWindow   *_window;
     NSUserDefaults *df;
        NSRange _timeRange;
+       StatusWindowType _currentType;
 }
 
 + (StatusWindowController *)sharedController;
 }
 
 + (StatusWindowController *)sharedController;
@@ -57,6 +73,7 @@ typedef enum {
                            playCount:                   (int)playCount
                                image:             (NSImage *)art;
 
                            playCount:                   (int)playCount
                                image:             (NSImage *)art;
 
+- (StatusWindowType)currentStatusWindowType;
 - (void)updateTime:(NSString *)time;
 
 @end
 - (void)updateTime:(NSString *)time;
 
 @end
index db04626..437487b 100755 (executable)
@@ -44,6 +44,8 @@ static StatusWindowController *sharedController;
         ITWindowEffect *entryEffect;
         ITWindowEffect *exitEffect;
         
         ITWindowEffect *entryEffect;
         ITWindowEffect *exitEffect;
         
+               _currentType = StatusWindowNoType;
+               
         _window = [[StatusWindow sharedWindow] retain];
         df = [[NSUserDefaults standardUserDefaults] retain];
         
         _window = [[StatusWindow sharedWindow] retain];
         df = [[NSUserDefaults standardUserDefaults] retain];
         
@@ -191,6 +193,7 @@ static StatusWindowController *sharedController;
         //text = [text stringByAppendingString:[@"\n" stringByAppendingString:ratingString]];
     }
     
         //text = [text stringByAppendingString:[@"\n" stringByAppendingString:ratingString]];
     }
     
+       _currentType = StatusWindowTrackInfoType;
     [_window buildTextWindowWithString:text];
     [_window appear:self];
        [text release];
     [_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]]];
     [_window setImage:[NSImage imageNamed:@"Upcoming"]];
     [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]];
     [_window buildTextWindowWithString:[bull stringByAppendingString:[titleStrings componentsJoinedByString:end]]];
+       _currentType = StatusWindowUpcomingSongsType;
     [_window appear:self];
 }
 
     [_window appear:self];
 }
 
@@ -215,6 +219,7 @@ static StatusWindowController *sharedController;
                                       size:18
                                      count:10
                                     active:( ceil(level * 100) / 10 )];
                                       size:18
                                      count:10
                                     active:( ceil(level * 100) / 10 )];
+       _currentType = StatusWindowVolumeType;
     [_window appear:self];
 }
 
     [_window appear:self];
 }
 
@@ -226,7 +231,8 @@ static StatusWindowController *sharedController;
                                       size:48
                                      count:5
                                     active:( ceil(rating * 100) / 20 )];
                                       size:48
                                      count:5
                                     active:( ceil(rating * 100) / 20 )];
-    [_window appear:self];
+    _currentType = StatusWindowRatingType;
+       [_window appear:self];
 }
 
 - (void)showShuffleWindow:(BOOL)shuffle
 }
 
 - (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"))];
     [_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];
 }
 
     [_window appear:self];
 }
 
@@ -252,6 +259,7 @@ static StatusWindowController *sharedController;
     [_window setImage:[NSImage imageNamed:@"Repeat"]];
     [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]];
     [_window buildTextWindowWithString:string];
     [_window setImage:[NSImage imageNamed:@"Repeat"]];
     [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]];
     [_window buildTextWindowWithString:string];
+       _currentType = StatusWindowRepeatType;
     [_window appear:self];
 }
 
     [_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"))];
     [_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];
 }
 
     [_window appear:self];
 }
 
@@ -276,6 +285,7 @@ static StatusWindowController *sharedController;
                             defaultAction:@selector(autoLaunchOK)
                           alternateAction:@selector(autoLaunchCancel)];
 
                             defaultAction:@selector(autoLaunchOK)
                           alternateAction:@selector(autoLaunchCancel)];
 
+       _currentType = StatusWindowSetupType;
     [_window appear:self];
     [_window setLocked:YES];
 }
     [_window appear:self];
     [_window setLocked:YES];
 }
@@ -294,6 +304,7 @@ static StatusWindowController *sharedController;
                             defaultAction:@selector(registerNowOK)
                           alternateAction:@selector(registerNowCancel)];
 
                             defaultAction:@selector(registerNowOK)
                           alternateAction:@selector(registerNowCancel)];
 
+       _currentType = StatusWindowRegistrationType;
     [_window appear:self];
     [_window setLocked:YES];
 }
     [_window appear:self];
     [_window setLocked:YES];
 }
@@ -311,6 +322,7 @@ static StatusWindowController *sharedController;
                             defaultAction:@selector(reconnect)
                           alternateAction:@selector(cancelReconnect)];
 
                             defaultAction:@selector(reconnect)
                           alternateAction:@selector(cancelReconnect)];
 
+       _currentType = StatusWindowNetworkType;
     [_window appear:self];
     [_window setLocked:YES];
 }
     [_window appear:self];
     [_window setLocked:YES];
 }
@@ -328,6 +340,7 @@ static StatusWindowController *sharedController;
                             defaultAction:@selector(cancelReconnect)
                           alternateAction:nil];
 
                             defaultAction:@selector(cancelReconnect)
                           alternateAction:nil];
 
+       _currentType = StatusWindowNetworkType;
     [_window appear:self];
     [_window setLocked:YES];
 }
     [_window appear:self];
     [_window setLocked:YES];
 }
@@ -345,6 +358,7 @@ static StatusWindowController *sharedController;
                             defaultAction:@selector(showPreferencesAndClose)
                           alternateAction:@selector(cancelReconnect)];
 
                             defaultAction:@selector(showPreferencesAndClose)
                           alternateAction:@selector(cancelReconnect)];
 
+       _currentType = StatusWindowPreferencesType;
     [_window appear:self];
     [_window setLocked:YES];
 }
     [_window appear:self];
     [_window setLocked:YES];
 }
@@ -359,10 +373,17 @@ static StatusWindowController *sharedController;
                                    target:[MainController sharedController]
                             defaultAction:@selector(cancelReconnect)
                           alternateAction:nil];
                                    target:[MainController sharedController]
                             defaultAction:@selector(cancelReconnect)
                           alternateAction:nil];
+
+       _currentType = StatusWindowDebugType;
     [_window appear:self];
        [_window setLocked:YES];
 }
 
     [_window appear:self];
        [_window setLocked:YES];
 }
 
+- (StatusWindowType)currentStatusWindowType
+{
+       return _currentType;
+}
+
 - (void)updateTime:(NSString *)time
 {
        if (time && [time length]) {
 - (void)updateTime:(NSString *)time
 {
        if (time && [time length]) {