X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/c5c8dff85fd86bd56326eeaf19d444adb7d9f01b..d9b4ed4ebff2f9d3636afba8c0a2e75fb4342c23:/MenuTunes.m diff --git a/MenuTunes.m b/MenuTunes.m index 5f94ae7..626ad44 100755 --- a/MenuTunes.m +++ b/MenuTunes.m @@ -44,7 +44,7 @@ menu = [[NSMenu alloc] initWithTitle:@""]; - if ( ( [currentRemote playerRunningStatus] == ITMTRemotePlayerRunning ) ) { + if ( ( [currentRemote playerRunningState] == ITMTRemotePlayerRunning ) ) { [self remotePlayerLaunched:nil]; } else { [self remotePlayerTerminated:nil]; @@ -280,9 +280,35 @@ action:nil keyEquivalent:@""]; } else if ([item isEqualToString:@"Song Rating"]) { + unichar fullstar = 0x2605; + unichar emptystar = 0x2606; + NSString *fullStarChar = [NSString stringWithCharacters:&fullstar length:1]; + NSString *emptyStarChar = [NSString stringWithCharacters:&emptystar length:1]; + NSMenuItem *item; + int i; + NSString *curTitle = [NSString stringWithFormat:@"%@%@%@%@%@", emptyStarChar, emptyStarChar, emptyStarChar, emptyStarChar, emptyStarChar]; + songRatingMenuItem = [menu addItemWithTitle:@"Song Rating" action:nil keyEquivalent:@""]; + + ratingMenu = [[NSMenu alloc] initWithTitle:@""]; + + item = [ratingMenu addItemWithTitle:[NSString stringWithFormat:@"%@%@%@%@%@", emptyStarChar, emptyStarChar, emptyStarChar, emptyStarChar, emptyStarChar] + action:@selector(setSongRating:) + keyEquivalent:@""]; + [item setTarget:self]; + [item setTag:0]; + + for (i = 1; i < 6; i++) { + curTitle = [curTitle substringToIndex:4]; + curTitle = [fullStarChar stringByAppendingString:curTitle]; + item = [ratingMenu addItemWithTitle:curTitle + action:@selector(setSongRating:) + keyEquivalent:@""]; + [item setTarget:self]; + [item setTag:(i * 20)]; + } } else if ([item isEqualToString:@""]) { [menu addItem:[NSMenuItem separatorItem]]; } @@ -372,31 +398,11 @@ if (songRatingMenuItem) { int rating = (int)[currentRemote currentSongRating] * 10; int i; - for (i = 0; i < 5; i++) { [[ratingMenu itemAtIndex:i] setState:NSOffState]; + [[ratingMenu itemAtIndex:i] setTarget:self]; } - - switch (rating) { - case 0: - [[ratingMenu itemAtIndex:5] setState:NSOnState]; - break; - case 2: - [[ratingMenu itemAtIndex:4] setState:NSOnState]; - break; - case 4: - [[ratingMenu itemAtIndex:3] setState:NSOnState]; - break; - case 6: - [[ratingMenu itemAtIndex:2] setState:NSOnState]; - break; - case 8: - [[ratingMenu itemAtIndex:1] setState:NSOnState]; - break; - case 10: - [[ratingMenu itemAtIndex:0] setState:NSOnState]; - break; - } + [[ratingMenu itemAtIndex:rating / 2] setState:NSOnState]; } } @@ -449,6 +455,7 @@ didHaveAlbumName = (([curAlbumName length] > 0) ? YES : NO); } } + [menu update]; } //Rebuild the upcoming songs submenu. Can be improved a lot. @@ -606,14 +613,14 @@ - (void)timerUpdate { int playlist = [currentRemote currentPlaylistIndex]; - ITMTRemotePlayerState playerState = [currentRemote playerState]; + ITMTRemotePlayerPlayingState playerPlayingState = [currentRemote playerPlayingState]; - if ((playlist > 0) || playerState != ITMTRemotePlayerStopped) { + if ((playlist > 0) || playerPlayingState != ITMTRemotePlayerStopped) { int trackPlayingIndex = [currentRemote currentSongIndex]; if (trackPlayingIndex != lastSongIndex) { BOOL wasPlayingRadio = isPlayingRadio; - isPlayingRadio = [[currentRemote classOfPlaylistAtIndex:playlist] isEqualToString:@"radio tuner playlist"]; + isPlayingRadio = ([currentRemote classOfPlaylistAtIndex:playlist] == ITMTRemotePlayerRadioPlaylist); if (isPlayingRadio && !wasPlayingRadio) { int i; @@ -636,7 +643,7 @@ } else { if (playlist != lastPlaylistIndex) { BOOL wasPlayingRadio = isPlayingRadio; - isPlayingRadio = [[currentRemote classOfPlaylistAtIndex:playlist] isEqualToString:@"radio tuner playlist"]; + isPlayingRadio = ([currentRemote classOfPlaylistAtIndex:playlist] == ITMTRemotePlayerRadioPlaylist); if (isPlayingRadio && !wasPlayingRadio) { int i; @@ -667,7 +674,7 @@ } //Update Play/Pause menu item if (playPauseMenuItem){ - if (playerState == ITMTRemotePlayerPlaying) { + if (playerPlayingState == ITMTRemotePlayerPlaying) { [playPauseMenuItem setTitle:@"Pause"]; } else { [playPauseMenuItem setTitle:@"Play"]; @@ -735,7 +742,7 @@ { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; - refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(timerUpdate) userInfo:nil repeats:YES] retain]; + refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(timerUpdate) userInfo:nil repeats:YES] retain]; [runLoop run]; [pool release]; } @@ -746,8 +753,7 @@ [menu release]; menu = [[NSMenu alloc] initWithTitle:@""]; - [menu addItemWithTitle:@"Audio Player" action:NULL keyEquivalent:@""]; - [menu addItemWithTitle:@"Not Running" action:NULL keyEquivalent:@""]; + [[menu addItemWithTitle:[NSString stringWithFormat:@"Open %@", [currentRemote playerSimpleName]] action:@selector(showPlayer:) keyEquivalent:@""] setTarget:self]; [menu addItem:[NSMenuItem separatorItem]]; [[menu addItemWithTitle:@"Preferences" action:@selector(showPreferences:) keyEquivalent:@""] setTarget:self]; [[menu addItemWithTitle:@"Quit" action:@selector(quitMenuTunes:) keyEquivalent:@""] setTarget:self]; @@ -770,7 +776,6 @@ - (void)playTrack:(id)sender { [currentRemote switchToSongAtIndex:[[sender representedObject] intValue]]; - [self updateMenu]; } - (void)selectPlaylist:(id)sender @@ -792,13 +797,13 @@ int curSet = [currentRemote currentEQPresetIndex]; int item = [[sender representedObject] intValue]; [currentRemote switchToEQAtIndex:item]; - [[eqMenu itemAtIndex:curSet - 1] setState:NSOffState]; - [[eqMenu itemAtIndex:item - 1] setState:NSOnState]; + [[eqMenu itemAtIndex:curSet + 1] setState:NSOffState]; + [[eqMenu itemAtIndex:item + 2] setState:NSOnState]; } - (void)playPause:(id)sender { - ITMTRemotePlayerState state = [currentRemote playerState]; + ITMTRemotePlayerPlayingState state = [currentRemote playerPlayingState]; if (state == ITMTRemotePlayerPlaying) { [currentRemote pause]; @@ -839,7 +844,7 @@ [currentRemote setEqualizerEnabled:![currentRemote equalizerEnabled]]; } -- (IBAction)setSongRating:(id)sender +- (void)setSongRating:(id)sender { NSLog(@"%f", [currentRemote currentSongRating]); NSLog(@"%f", (float)[sender tag] / 100.0); @@ -873,6 +878,18 @@ prefsController = nil; } +- (void)showPlayer:(id)sender +{ + if ( ( isAppRunning == ITMTRemotePlayerRunning) ) { + [currentRemote showPrimaryInterface]; + } else { + if (![[NSWorkspace sharedWorkspace] launchApplication:[currentRemote playerFullName]]) { + NSLog(@"Error Launching Player"); + } + } +} + + // // // Show Current Track Info And Show Upcoming Songs Floaters