- (void)timerUpdate;
- (void)setLatestSongIdentifier:(NSString *)newIdentifier;
- (void)showCurrentTrackInfo;
-
- (void)applicationLaunched:(NSNotification *)note;
- (void)applicationTerminated:(NSNotification *)note;
@end
- (void)timerUpdate
{
- if ( ( [self songChanged] ) ||
+ //This huge if statement is being nasty
+ /*if ( ( [self songChanged] ) ||
( ([self radioIsPlaying]) && (latestPlaylistClass != ITMTRemotePlayerRadioPlaylist) ) ||
- ( (! [self radioIsPlaying]) && (latestPlaylistClass == ITMTRemotePlayerRadioPlaylist) ) ) {
+ ( (! [self radioIsPlaying]) && (latestPlaylistClass == ITMTRemotePlayerRadioPlaylist) ) )*/
+
+ if ([self songChanged]) {
[self setLatestSongIdentifier:[currentRemote currentSongUniqueIdentifier]];
latestPlaylistClass = [currentRemote currentPlaylistClass];
[menuController rebuildSubmenus];
[[HotKeyCenter sharedCenter] removeHotKey:@"NextTrack"];
[[HotKeyCenter sharedCenter] removeHotKey:@"PrevTrack"];
[[HotKeyCenter sharedCenter] removeHotKey:@"TrackInfo"];
+ [[HotKeyCenter sharedCenter] removeHotKey:@"ShowPlayer"];
[[HotKeyCenter sharedCenter] removeHotKey:@"UpcomingSongs"];
[[HotKeyCenter sharedCenter] removeHotKey:@"ToggleLoop"];
[[HotKeyCenter sharedCenter] removeHotKey:@"ToggleShuffle"];
target:self action:@selector(prevSong)];
}
+ if ([df objectForKey:@"ShowPlayer"] != nil) {
+ [[HotKeyCenter sharedCenter] addHotKey:@"ShowPlayer"
+ combo:[df keyComboForKey:@"ShowPlayer"]
+ target:self action:@selector(showPlayer)];
+ }
+
if ([df objectForKey:@"TrackInfo"] != nil) {
[[HotKeyCenter sharedCenter] addHotKey:@"TrackInfo"
combo:[df keyComboForKey:@"TrackInfo"]
[currentRemote setVolume:volume];
//Show volume status window
+ [statusWindowController showVolumeWindowWithLevel:volume];
}
- (void)decrementVolume
[currentRemote setVolume:volume];
//Show volume status window
+ [statusWindowController showVolumeWindowWithLevel:volume];
}
- (void)incrementRating
[currentRemote setCurrentSongRating:rating];
//Show rating status window
+ [statusWindowController showRatingWindowWithLevel:rating];
}
- (void)decrementRating
[currentRemote setCurrentSongRating:rating];
//Show rating status window
+ [statusWindowController showRatingWindowWithLevel:rating];
}
- (void)toggleLoop
[currentRemote setRepeatMode:repeatMode];
//Show loop status window
+ [statusWindowController showLoopWindowWithMode:repeatMode];
}
- (void)toggleShuffle
{
- [currentRemote setShuffleEnabled:![currentRemote shuffleEnabled]];
+ bool newShuffleEnabled = ![currentRemote shuffleEnabled];
+ [currentRemote setShuffleEnabled:newShuffleEnabled];
//Show shuffle status window
+ [statusWindowController showLoopWindowWithMode:newShuffleEnabled];
}
/*************************************************************************/
- (void)applicationLaunched:(NSNotification *)note
{
if (!note || [[[note userInfo] objectForKey:@"NSApplicationName"] isEqualToString:[currentRemote playerFullName]]) {
+ [currentRemote begin];
[self setLatestSongIdentifier:@""];
[self timerUpdate];
- [NSThread detachNewThreadSelector:@selector(startTimerInNewThread) toTarget:self withObject:nil];
+ refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:0.5
+ target:self
+ selector:@selector(timerUpdate)
+ userInfo:nil
+ repeats:YES] retain];
+ //[NSThread detachNewThreadSelector:@selector(startTimerInNewThread) toTarget:self withObject:nil];
[self setupHotKeys];
playerRunningState = ITMTRemotePlayerRunning;
}
- (void)applicationTerminated:(NSNotification *)note
{
if (!note || [[[note userInfo] objectForKey:@"NSApplicationName"] isEqualToString:[currentRemote playerFullName]]) {
- [refreshTimer invalidate];
- [refreshTimer release];
- refreshTimer = nil;
- [self clearHotKeys];
- playerRunningState = ITMTRemotePlayerNotRunning;
+ [currentRemote halt];
+ [refreshTimer invalidate];
+ [refreshTimer release];
+ refreshTimer = nil;
+ [self clearHotKeys];
+ playerRunningState = ITMTRemotePlayerNotRunning;
}
}
- (void)dealloc
{
- if (refreshTimer) {
- [refreshTimer invalidate];
- [refreshTimer release];
- refreshTimer = nil;
- }
-
- [currentRemote halt];
+ [self applicationTerminated:nil];
[statusItem release];
[statusWindowController release];
[menuController release];