#import "MainController.h"
#import "MenuController.h"
#import "PreferencesController.h"
-#import "HotKeyCenter.h"
+#import <ITKit/ITHotKeyCenter.h>
+#import <ITKit/ITHotKey.h>
+#import <ITKit/ITKeyCombo.h>
#import "StatusWindowController.h"
#import "StatusItemHack.h"
}
}
- [statusItem setImage:[NSImage imageNamed:@"menu"]];
- [statusItem setAlternateImage:[NSImage imageNamed:@"selected_image"]];
+ [statusItem setImage:[NSImage imageNamed:@"MenuNormal"]];
+ [statusItem setAlternateImage:[NSImage imageNamed:@"MenuInverted"]];
}
- (ITMTRemote *)loadRemote
- (BOOL)songIsPlaying
{
- return ( ! ([[currentRemote currentSongUniqueIdentifier] isEqualToString:@"0-0"]) );
+ return ( ! ([[currentRemote playerStateUniqueIdentifier] isEqualToString:@"0-0"]) );
}
- (BOOL)radioIsPlaying
- (BOOL)songChanged
{
- return ( ! [[currentRemote currentSongUniqueIdentifier] isEqualToString:_latestSongIdentifier] );
+ return ( ! [[currentRemote playerStateUniqueIdentifier] isEqualToString:_latestSongIdentifier] );
}
- (NSString *)latestSongIdentifier
- (void)timerUpdate
{
+ //This huge if statement is being nasty
+ /*if ( ( [self songChanged] ) ||
+ ( ([self radioIsPlaying]) && (latestPlaylistClass != ITMTRemotePlayerRadioPlaylist) ) ||
+ ( (! [self radioIsPlaying]) && (latestPlaylistClass == ITMTRemotePlayerRadioPlaylist) ) )*/
+
if ([self songChanged]) {
- [self setLatestSongIdentifier:[currentRemote currentSongUniqueIdentifier]];
+ [self setLatestSongIdentifier:[currentRemote playerStateUniqueIdentifier]];
+ latestPlaylistClass = [currentRemote currentPlaylistClass];
[menuController rebuildSubmenus];
if ( [df boolForKey:@"showSongInfoOnChange"] ) {
- (void)clearHotKeys
{
- [[HotKeyCenter sharedCenter] removeHotKey:@"PlayPause"];
- [[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"];
- [[HotKeyCenter sharedCenter] removeHotKey:@"IncrementVolume"];
- [[HotKeyCenter sharedCenter] removeHotKey:@"DecrementVolume"];
- [[HotKeyCenter sharedCenter] removeHotKey:@"IncrementRating"];
- [[HotKeyCenter sharedCenter] removeHotKey:@"DecrementRating"];
+ NSEnumerator *hotKeyEnumerator = [[[ITHotKeyCenter sharedCenter] allHotKeys] objectEnumerator];
+ ITHotKey *nextHotKey;
+
+ while ( (nextHotKey = [hotKeyEnumerator nextObject]) ) {
+ [[ITHotKeyCenter sharedCenter] unregisterHotKey:nextHotKey];
+ }
}
- (void)setupHotKeys
{
+ ITHotKey *hotKey;
+
if ([df objectForKey:@"PlayPause"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"PlayPause"
- combo:[df keyComboForKey:@"PlayPause"]
- target:self action:@selector(playPause)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"PlayPause"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"PlayPause"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(playPause)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"NextTrack"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"NextTrack"
- combo:[df keyComboForKey:@"NextTrack"]
- target:self action:@selector(nextSong)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"NextTrack"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"NextTrack"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(nextSong)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"PrevTrack"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"PrevTrack"
- combo:[df keyComboForKey:@"PrevTrack"]
- target:self action:@selector(prevSong)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"PrevTrack"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"PrevTrack"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(prevSong)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"ShowPlayer"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"ShowPlayer"
- combo:[df keyComboForKey:@"ShowPlayer"]
- target:self action:@selector(showPlayer)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"ShowPlayer"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ShowPlayer"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(showPlayer)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"TrackInfo"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"TrackInfo"
- combo:[df keyComboForKey:@"TrackInfo"]
- target:self action:@selector(showCurrentTrackInfo)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"TrackInfo"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"TrackInfo"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(showCurrentTrackInfo)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"UpcomingSongs"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"UpcomingSongs"
- combo:[df keyComboForKey:@"UpcomingSongs"]
- target:self action:@selector(showUpcomingSongs)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"UpcomingSongs"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"UpcomingSongs"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(showUpcomingSongs)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"ToggleLoop"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"ToggleLoop"
- combo:[df keyComboForKey:@"ToggleLoop"]
- target:self action:@selector(toggleLoop)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"ToggleLoop"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ToggleLoop"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(toggleLoop)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"ToggleShuffle"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"ToggleShuffle"
- combo:[df keyComboForKey:@"ToggleShuffle"]
- target:self action:@selector(toggleShuffle)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"ToggleShuffle"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ToggleShuffle"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(toggleShuffle)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"IncrementVolume"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"IncrementVolume"
- combo:[df keyComboForKey:@"IncrementVolume"]
- target:self action:@selector(incrementVolume)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"IncrementVolume"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"IncrementVolume"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(incrementVolume)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"DecrementVolume"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"DecrementVolume"
- combo:[df keyComboForKey:@"DecrementVolume"]
- target:self action:@selector(decrementVolume)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"DecrementVolume"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"DecrementVolume"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(decrementVolume)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"IncrementRating"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"IncrementRating"
- combo:[df keyComboForKey:@"IncrementRating"]
- target:self action:@selector(incrementRating)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"IncrementRating"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"IncrementRating"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(incrementRating)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
if ([df objectForKey:@"DecrementRating"] != nil) {
- [[HotKeyCenter sharedCenter] addHotKey:@"DecrementRating"
- combo:[df keyComboForKey:@"DecrementRating"]
- target:self action:@selector(decrementRating)];
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"DecrementRating"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"DecrementRating"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(decrementRating)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
}
}