X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/0948b4b6166bbee8caefca1278b6551d264068a8..HEAD:/StatusWindowController.m diff --git a/StatusWindowController.m b/StatusWindowController.m index 633c31c..aa684a3 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]; @@ -96,6 +98,8 @@ static StatusWindowController *sharedController; } else { [(ITTSWBackgroundView *)[_window contentView] setBackgroundColor:[NSColor blueColor]]; } + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenParametersChanged:) name:NSApplicationDidChangeScreenParametersNotification object:nil]; } return self; @@ -103,10 +107,23 @@ static StatusWindowController *sharedController; - (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [_window release]; [super dealloc]; } +- (void)screenParametersChanged:(NSNotification *)notification +{ + NSArray *screens = [NSScreen screens]; + int screenIndex = [df integerForKey:@"statusWindowScreenIndex"]; + + if (screenIndex >= [screens count]) { + screenIndex = 0; + } + [_window setScreen:[screens objectAtIndex:screenIndex]]; +} + - (void)showSongInfoWindowWithSource:(ITMTRemotePlayerSource)source title: (NSString *)title album: (NSString *)album @@ -119,7 +136,7 @@ static StatusWindowController *sharedController; image: (NSImage *)art { NSImage *image = nil; - NSString *text = title; + NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:title]; if ( art != nil ) { image = art; @@ -138,31 +155,39 @@ static StatusWindowController *sharedController; } [_window setImage:image]; + [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; if ( album ) { - text = [text stringByAppendingString:[@"\n" stringByAppendingString:album]]; + [[text mutableString] appendFormat:@"\n%@", album]; + //text = [text stringByAppendingString:[@"\n" stringByAppendingString:album]]; } if ( artist ) { - text = [text stringByAppendingString:[@"\n" stringByAppendingString:artist]]; + [[text mutableString] appendFormat:@"\n%@", artist]; + //text = [text stringByAppendingString:[@"\n" stringByAppendingString:artist]]; } if ( composer ) { - text = [text stringByAppendingString:[@"\n" stringByAppendingString:composer]]; + [[text mutableString] appendFormat:@"\n%@", composer]; + //text = [text stringByAppendingString:[@"\n" stringByAppendingString:composer]]; } if ( time ) { - text = [text stringByAppendingString:[@"\n" stringByAppendingString:time]]; + _timeRange = NSMakeRange([[text mutableString] length] + 1, [time length]); + [[text mutableString] appendFormat:@"\n%@", time]; + //text = [text stringByAppendingString:[@"\n" stringByAppendingString:time]]; } if ( track ) { - text = [text stringByAppendingString:[@"\n" stringByAppendingString:track]]; + [[text mutableString] appendFormat:@"\n%@", track]; + //text = [text stringByAppendingString:[@"\n" stringByAppendingString:track]]; } if (playCount > -1) { - text = [text stringByAppendingString:[NSString stringWithFormat:@"\n%@: %i", NSLocalizedString(@"playCount", @"Play Count"), playCount]]; + [[text mutableString] appendFormat:@"\n%@: %i", NSLocalizedString(@"playCount", @"Play Count"), playCount]; + //text = [text stringByAppendingString:[NSString stringWithFormat:@"\n%@: %i", NSLocalizedString(@"playCount", @"Play Count"), playCount]]; } if ( rating > -1 ) { NSString *ratingString = [NSString string]; NSString *emptyChar = [NSString stringWithUTF8String:"☆"]; NSString *fullChar = [NSString stringWithUTF8String:"★"]; - int i; + int i, start = [[text mutableString] length], size = 18; for ( i = 1; i < 6; i++ ) { @@ -172,13 +197,40 @@ static StatusWindowController *sharedController; ratingString = [ratingString stringByAppendingString:emptyChar]; } } - - text = [text stringByAppendingString:[@"\n" stringByAppendingString:ratingString]]; + + [[text mutableString] appendFormat:@"\n%@", ratingString]; + if ([_window sizing] == ITTransientStatusWindowSmall) { + size /= SMALL_DIVISOR; + } else if ([_window sizing] == ITTransientStatusWindowMini) { + size /= MINI_DIVISOR; + } + [text setAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"AppleGothic" size:size], NSFontAttributeName, nil, nil] range:NSMakeRange(start + 1, 5)]; + //text = [text stringByAppendingString:[@"\n" stringByAppendingString:ratingString]]; } - [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; + _currentType = StatusWindowTrackInfoType; [_window buildTextWindowWithString:text]; [_window appear:self]; + [text release]; +} + +- (void)showAlbumArtWindowWithImage:(NSImage *)image +{ + if (image) { + _currentType = StatusWindowAlbumArtType; + [_window setImage:[NSImage imageNamed:@"Library"]]; + [_window buildImageWindowWithImage:image]; + [_window appear:self]; + } +} + +- (void)showAlbumArtWindowWithErrorText:(NSString *)string +{ + if (string && [string length] > 0) { + _currentType = StatusWindowAlbumArtType; + [_window buildTextWindowWithString:string]; + [_window appear:self]; + } } - (void)showUpcomingSongsWindowWithTitles:(NSArray *)titleStrings @@ -189,6 +241,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]; } @@ -200,6 +253,7 @@ static StatusWindowController *sharedController; size:18 count:10 active:( ceil(level * 100) / 10 )]; + _currentType = StatusWindowVolumeType; [_window appear:self]; } @@ -211,7 +265,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 @@ -219,6 +274,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]; } @@ -237,6 +293,16 @@ static StatusWindowController *sharedController; [_window setImage:[NSImage imageNamed:@"Repeat"]]; [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildTextWindowWithString:string]; + _currentType = StatusWindowRepeatType; + [_window appear:self]; +} + +- (void)showSongShufflabilityWindow:(BOOL)shufflable +{ + [_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]; } @@ -253,24 +319,7 @@ static StatusWindowController *sharedController; defaultAction:@selector(autoLaunchOK) alternateAction:@selector(autoLaunchCancel)]; - [_window appear:self]; - [_window setLocked:YES]; -} - - -- (void)showRegistrationQueryWindow -{ - NSString *message = NSLocalizedString(@"trialexpired_msg", @"Your 7-day unlimited trial period has elapsed.\nYou must register to continue using MenuTunes."); - - [_window setImage:[NSImage imageNamed:@"Register"]]; - [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; - [_window buildDialogWindowWithMessage:message - defaultButton:NSLocalizedString(@"registernow", @"Register Now") - alternateButton:NSLocalizedString(@"quitmenutunes", @"Quit MenuTunes") - target:[MainController sharedController] - defaultAction:@selector(registerNowOK) - alternateAction:@selector(registerNowCancel)]; - + _currentType = StatusWindowSetupType; [_window appear:self]; [_window setLocked:YES]; } @@ -288,6 +337,7 @@ static StatusWindowController *sharedController; defaultAction:@selector(reconnect) alternateAction:@selector(cancelReconnect)]; + _currentType = StatusWindowNetworkType; [_window appear:self]; [_window setLocked:YES]; } @@ -305,6 +355,7 @@ static StatusWindowController *sharedController; defaultAction:@selector(cancelReconnect) alternateAction:nil]; + _currentType = StatusWindowNetworkType; [_window appear:self]; [_window setLocked:YES]; } @@ -322,8 +373,37 @@ static StatusWindowController *sharedController; defaultAction:@selector(showPreferencesAndClose) alternateAction:@selector(cancelReconnect)]; + _currentType = StatusWindowPreferencesType; [_window appear:self]; [_window setLocked:YES]; } +- (void)showDebugModeEnabledWindow +{ + [_window setImage:[NSImage imageNamed:@"Setup"]]; + [_window setSizing:(ITTransientStatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; + [_window buildDialogWindowWithMessage:NSLocalizedString(@"debugmodeenabled", @"Debug Mode Enabled") + defaultButton:@"OK" + alternateButton:nil + 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]) { + [_window updateTime:time range:_timeRange]; + } +} + @end \ No newline at end of file