X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/6f276052ff907885a6674cd5fbec7aa2d8082cf8..3a1a21d1ea3e060f88ca1d24ea881f3ccb97640c:/StatusWindowController.m diff --git a/StatusWindowController.m b/StatusWindowController.m index 49cbf89..e8b1eef 100755 --- a/StatusWindowController.m +++ b/StatusWindowController.m @@ -1,13 +1,6 @@ -// -// StatusWindowController.m -// MenuTunes -// -// Created by Matthew L. Judy on Thu Apr 17 2003. -// Copyright (c) 2003 NibFile.com. All rights reserved. -// - #import "StatusWindowController.h" #import "StatusWindow.h" +#import "PreferencesController.h" #import #import @@ -16,9 +9,23 @@ #import #import + +static StatusWindowController *sharedController; + + @implementation StatusWindowController ++ (StatusWindowController *)sharedController +{ + if ( ! sharedController ) { + sharedController = [[StatusWindowController alloc] init]; + } + + return sharedController; +} + + - (id)init { if ( ( self = [super init] ) ) { @@ -90,47 +97,131 @@ album: (NSString *)album artist: (NSString *)artist time: (NSString *)time // FLOW: Should probably be NSDate or something. - trackNumber: (int)trackNumber - trackTotal: (int)trackTotal + track: (NSString *)track rating: (int)rating { - [_window setImage:[NSImage imageNamed:@"Library"]]; - [_window buildTextWindowWithString:title]; + NSImage *image = nil; + NSString *text = title; + + if ( source == ITMTRemoteLibrarySource ) { + image = [NSImage imageNamed:@"Library"]; + } else if ( source == ITMTRemoteCDSource ) { + image = [NSImage imageNamed:@"CD"]; + } else if ( source == ITMTRemoteRadioSource ) { + image = [NSImage imageNamed:@"Radio"]; + } else if ( source == ITMTRemoteiPodSource ) { + image = [NSImage imageNamed:@"iPod"]; + } else if ( source == ITMTRemoteGenericDeviceSource ) { + image = [NSImage imageNamed:@"MP3Player"]; + } else if ( source == ITMTRemoteSharedLibrarySource ) { + image = [NSImage imageNamed:@"Library"]; + } + + [_window setImage:image]; + + if ( album ) { + text = [text stringByAppendingString:[@"\n" stringByAppendingString:album]]; + } + if ( artist ) { + text = [text stringByAppendingString:[@"\n" stringByAppendingString:artist]]; + } + if ( time ) { + text = [text stringByAppendingString:[@"\n" stringByAppendingString:time]]; + } + if ( track ) { + text = [text stringByAppendingString:[@"\n" stringByAppendingString:track]]; + } + if ( rating > -1 ) { + + NSString *ratingString = [NSString string]; + NSString *emptyChar = [NSString stringWithUTF8String:"☆"]; + NSString *fullChar = [NSString stringWithUTF8String:"★"]; + int i; + + for ( i = 1; i < 6; i++ ) { + + if ( rating >= i ) { + ratingString = [ratingString stringByAppendingString:fullChar]; + } else { + ratingString = [ratingString stringByAppendingString:emptyChar]; + } + } + + text = [text stringByAppendingString:[@"\n" stringByAppendingString:ratingString]]; + } + + [_window buildTextWindowWithString:text]; [_window appear:self]; } - (void)showUpcomingSongsWindowWithTitles:(NSArray *)titleStrings { - +// NSString *bull = [NSString stringWithUTF8String:"‣ "]; + NSString *bull = [NSString stringWithUTF8String:"♪ "]; + NSString *end = [@"\n" stringByAppendingString:bull]; + [_window setImage:[NSImage imageNamed:@"Upcoming"]]; + [_window buildTextWindowWithString:[bull stringByAppendingString:[titleStrings componentsJoinedByString:end]]]; + [_window appear:self]; } - (void)showVolumeWindowWithLevel:(float)level { [_window setImage:[NSImage imageNamed:@"Volume"]]; [_window buildMeterWindowWithCharacter:[NSString stringWithUTF8String:"▊"] + size:18 count:10 active:( ceil(level * 100) / 10 )]; [_window appear:self]; } -- (void)showRatingWindowWithRating:(int)rating +- (void)showRatingWindowWithRating:(float)rating { - + [_window setImage:[NSImage imageNamed:@"Rating"]]; + [_window buildMeterWindowWithCharacter:[NSString stringWithUTF8String:"★"] + size:48 + count:5 + active:( ceil(rating * 100) / 20 )]; + [_window appear:self]; } - (void)showShuffleWindow:(BOOL)shuffle { - + [_window setImage:[NSImage imageNamed:@"Shuffle"]]; + [_window buildTextWindowWithString:( shuffle ? @"Shuffle On" : @"Shuffle Off")]; + [_window appear:self]; } - (void)showRepeatWindowWithMode:(StatusWindowRepeatMode)mode { - + NSString *string = nil; + + if ( mode == StatusWindowRepeatNone ) { + string = @"Repeat Off"; + } else if ( mode == StatusWindowRepeatGroup ) { + string = @"Repeat Playlist"; + } else if ( mode == StatusWindowRepeatTrack ) { + string = @"Repeat One Track"; + } + + [_window setImage:[NSImage imageNamed:@"Repeat"]]; + [_window buildTextWindowWithString:string]; + [_window appear:self]; } - (void)showSetupQueryWindow { + NSString *message = @"Would you like MenuTunes to launch\nautomatically at startup?"; + [_window setImage:[NSImage imageNamed:@"Setup"]]; + [_window buildDialogWindowWithMessage:message + defaultButton:@"Launch at Startup" + alternateButton:@"Launch Manually" + target:[PreferencesController sharedPrefs] + defaultAction:@selector(autoLaunchOK) + alternateAction:@selector(autoLaunchCancel)]; + + [_window appear:self]; + [_window setLocked:YES]; }