X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/3a1a21d1ea3e060f88ca1d24ea881f3ccb97640c..9c8f6e1b9b0b947d898a3d9bae3acb3999879791:/MainController.m diff --git a/MainController.m b/MainController.m index 523936c..edd1e78 100755 --- a/MainController.m +++ b/MainController.m @@ -39,6 +39,7 @@ static MainController *sharedController; statusWindowController = [StatusWindowController sharedController]; menuController = [[MenuController alloc] init]; df = [[NSUserDefaults standardUserDefaults] retain]; + timerUpdating = NO; } return self; } @@ -202,15 +203,19 @@ static MainController *sharedController; - (void)timerUpdate { - if ( [self songChanged] ) { + if ( [self songChanged] && (timerUpdating != YES) ) { ITDebugLog(@"The song changed."); - [self setLatestSongIdentifier:[currentRemote playerStateUniqueIdentifier]]; + timerUpdating = YES; latestPlaylistClass = [currentRemote currentPlaylistClass]; [menuController rebuildSubmenus]; if ( [df boolForKey:@"showSongInfoOnChange"] ) { [self performSelector:@selector(showCurrentTrackInfo) withObject:nil afterDelay:0.0]; } + + [self setLatestSongIdentifier:[currentRemote playerStateUniqueIdentifier]]; + + timerUpdating = NO; } } @@ -366,6 +371,11 @@ static MainController *sharedController; { ITHotKey *hotKey; ITDebugLog(@"Setting up hot keys."); + + if (playerRunningState == ITMTRemotePlayerNotRunning) { + return; + } + if ([df objectForKey:@"PlayPause"] != nil) { ITDebugLog(@"Setting up play pause hot key."); hotKey = [[ITHotKey alloc] init]; @@ -528,7 +538,10 @@ static MainController *sharedController; } if ( [df boolForKey:@"showTrackRating"] ) { - rating = ( [currentRemote currentSongRating] * 5 ); + float currentRating = [currentRemote currentSongRating]; + if (currentRating >= 0.0) { + rating = ( currentRating * 5 ); + } } } else { @@ -612,6 +625,12 @@ static MainController *sharedController; { float rating = [currentRemote currentSongRating]; ITDebugLog(@"Incrementing rating."); + + if ([currentRemote currentPlaylistIndex] == 0) { + ITDebugLog(@"No song playing, rating change aborted."); + return; + } + rating += 0.2; if (rating > 1.0) { rating = 1.0; @@ -627,6 +646,12 @@ static MainController *sharedController; { float rating = [currentRemote currentSongRating]; ITDebugLog(@"Decrementing rating."); + + if ([currentRemote currentPlaylistIndex] == 0) { + ITDebugLog(@"No song playing, rating change aborted."); + return; + } + rating -= 0.2; if (rating < 0.0) { rating = 0.0; @@ -670,6 +695,25 @@ static MainController *sharedController; [statusWindowController showShuffleWindow:newShuffleEnabled]; } +- (void)registerNowOK +{ + [[StatusWindow sharedWindow] setLocked:NO]; + [[StatusWindow sharedWindow] vanish:self]; + [[StatusWindow sharedWindow] setIgnoresMouseEvents:YES]; + + [self blingNow]; +} + +- (void)registerNowCancel +{ + [[StatusWindow sharedWindow] setLocked:NO]; + [[StatusWindow sharedWindow] vanish:self]; + [[StatusWindow sharedWindow] setIgnoresMouseEvents:YES]; + + [NSApp terminate]; +} + + /*************************************************************************/ #pragma mark - #pragma mark WORKSPACE NOTIFICATION HANDLERS