_currentPlaylist = [currentRemote currentPlaylistIndex];
_playingRadio = ([currentRemote currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist);
+ ITDebugLog(@"Reset menu if required.");
+
//Kill the old submenu items
if ( (tempItem = [_currentMenu itemWithTag:1]) ) {
+ ITDebugLog(@"Removing \"Song Rating\" submenu.");
[tempItem setSubmenu:nil];
}
if ( (tempItem = [_currentMenu itemWithTag:2]) ) {
+ ITDebugLog(@"Removing \"Upcoming Songs\" submenu.");
[tempItem setSubmenu:nil];
}
if ( (tempItem = [_currentMenu itemWithTag:3]) ) {
+ ITDebugLog(@"Removing \"EQ Presets\" submenu.");
[tempItem setSubmenu:nil];
}
if ( (tempItem = [_currentMenu itemWithTag:4]) ) {
+ ITDebugLog(@"Removing \"Playlists\" submenu.");
[tempItem setSubmenu:nil];
}
while ( (nextObject = [enumerator nextObject]) ) {
//Main menu items
if ([nextObject isEqualToString:@"playPause"]) {
- ITDebugLog(@"Add play/pause menu item.");
+ ITDebugLog(@"Add \"Play\"/\"Pause\" menu item.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"play", @"Play")
action:@selector(performMainMenuAction:)
keyEquivalent:@""];
}
}
+ ITDebugLog(@"Set \"Play\"/\"Pause\" menu item's title to correct state.");
switch ([currentRemote playerPlayingState]) {
case ITMTRemotePlayerPlaying:
[tempItem setTitle:NSLocalizedString(@"pause", @"Pause")];
break;
}
} else if ([nextObject isEqualToString:@"nextTrack"]) {
- ITDebugLog(@"Add next track menu item.");
+ ITDebugLog(@"Add \"Next Track\" menu item.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"nextTrack", @"Next Track")
action:@selector(performMainMenuAction:)
keyEquivalent:@""];
[tempItem setTarget:self];
}
} else if ([nextObject isEqualToString:@"prevTrack"]) {
- ITDebugLog(@"Add previous track menu item.");
+ ITDebugLog(@"Add \"Previous Track\" menu item.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"prevTrack", @"Previous Track")
action:@selector(performMainMenuAction:)
keyEquivalent:@""];
[tempItem setTarget:self];
}
} else if ([nextObject isEqualToString:@"fastForward"]) {
- ITDebugLog(@"Add fast forward menu item.");
+ ITDebugLog(@"Add \"Fast Forward\" menu item.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"fastForward", @"Fast Forward")
action:@selector(performMainMenuAction:)
keyEquivalent:@""];
[tempItem setTarget:self];
}
} else if ([nextObject isEqualToString:@"rewind"]) {
- ITDebugLog(@"Add rewind menu item.");
+ ITDebugLog(@"Add \"Rewind\" menu item.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"rewind", @"Rewind")
action:@selector(performMainMenuAction:)
keyEquivalent:@""];
[tempItem setTarget:self];
}
} else if ([nextObject isEqualToString:@"showPlayer"]) {
- ITDebugLog(@"Add show player menu item.");
+ ITDebugLog(@"Add \"Show Player\" menu item.");
tempItem = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@",
NSLocalizedString(@"show", @"Show"),
[[[MainController sharedController] currentRemote] playerSimpleName]]
[tempItem setTarget:self];
[tempItem setTag:MTMenuShowPlayerItem];
} else if ([nextObject isEqualToString:@"preferences"]) {
- ITDebugLog(@"Add preferences menu item.");
+ ITDebugLog(@"Add \"Preferences...\" menu item.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"preferences", @"Preferences...")
action:@selector(performMainMenuAction:)
keyEquivalent:@""];
[tempItem setTag:MTMenuPreferencesItem];
[tempItem setTarget:self];
} else if ([nextObject isEqualToString:@"quit"]) {
+ ITDebugLog(@"Add \"Quit\" menu item.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"quit", @"Quit")
action:@selector(performMainMenuAction:)
keyEquivalent:@""];
[tempItem setTag:MTMenuQuitItem];
[tempItem setTarget:self];
} else if ([nextObject isEqualToString:@"trackInfo"]) {
- ITDebugLog(@"Add track info menu items.");
+ ITDebugLog(@"Check to see if a Track is playing...");
//Handle playing radio too
if (_currentPlaylist) {
NSString *title = [currentRemote currentSongTitle];
+ ITDebugLog(@"A Track is Playing, Add \"Track Info\" menu items.");
+ ITDebugLog(@"Add \"Now Playing\" menu item.");
[menu addItemWithTitle:NSLocalizedString(@"nowPlaying", @"Now Playing") action:NULL keyEquivalent:@""];
if ([title length] > 0) {
+ ITDebugLog(@"Add Track Title (\"%@\") menu item.", title);
[menu indentItem:
[menu addItemWithTitle:title action:nil keyEquivalent:@""]];
}
if ([defaults boolForKey:@"showAlbum"]) {
NSString *curAlbum = [currentRemote currentSongAlbum];
+ ITDebugLog(@"Add Track Album (\"%@\") menu item.", curAlbum);
if ([curAlbum length]) {
[menu indentItem:
[menu addItemWithTitle:curAlbum action:nil keyEquivalent:@""]];
if ([defaults boolForKey:@"showArtist"]) {
NSString *curArtist = [currentRemote currentSongArtist];
+ ITDebugLog(@"Add Track Artist (\"%@\") menu item.", curArtist);
if ([curArtist length]) {
[menu indentItem:
[menu addItemWithTitle:curArtist action:nil keyEquivalent:@""]];
if ([defaults boolForKey:@"showTrackNumber"]) {
int track = [currentRemote currentSongTrack];
+ ITDebugLog(@"Add Track Number (\"Track %i\") menu item.", track);
if (track) {
[menu indentItem:
[menu addItemWithTitle:[NSString stringWithFormat:@"%@ %i", NSLocalizedString(@"track", @"Track"), track] action:nil keyEquivalent:@""]];
if ([defaults boolForKey:@"showTime"]) {
int left = [[currentRemote currentSongRemaining] intValue];
NSString *remaining = [NSString stringWithFormat:@"%i:%02i", left / 60, left % 60];
+ ITDebugLog(@"Add Track Remaining (\"%@/%@\") menu item.", remaining, [currentRemote currentSongLength]);
[menu indentItem:[menu addItemWithTitle:[NSString stringWithFormat:@"%@/%@", remaining, [currentRemote currentSongLength]] action:nil keyEquivalent:@""]];
}
string = [NSString stringWithUTF8String:"★★★★★"];
break;
}
+ ITDebugLog(@"Add Track Rating (\"%@\") menu item.", string);
[menu indentItem:[menu addItemWithTitle:string action:nil keyEquivalent:@""]];
}
} else {
+ ITDebugLog(@"No Track is Playing, Add \"No Song\" menu item.");
[menu addItemWithTitle:NSLocalizedString(@"noSong", @"No Song") action:NULL keyEquivalent:@""];
}
} else if ([nextObject isEqualToString:@"separator"]) {
- ITDebugLog(@"Add separator menu item.");
+ ITDebugLog(@"Add a separator menu item.");
[menu addItem:[NSMenuItem separatorItem]];
//Submenu items
} else if ([nextObject isEqualToString:@"songRating"]) {
- ITDebugLog(@"Add song rating menu item.");
+ ITDebugLog(@"Add \"Song Rating\" submenu.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"songRating", @"Song Rating")
action:nil
keyEquivalent:@""];
[[_ratingMenu itemAtIndex:([currentRemote currentSongRating] * 5)] setState:NSOnState];
} else if ([nextObject isEqualToString:@"upcomingSongs"]) {
- ITDebugLog(@"Add upcoming songs menu item.");
+ ITDebugLog(@"Add \"Upcoming Songs\" submenu.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"upcomingSongs", @"Upcoming Songs")
action:nil
keyEquivalent:@""];
[tempItem setEnabled:NO];
}
} else if ([nextObject isEqualToString:@"playlists"]) {
+ ITDebugLog(@"Add \"Playlists\" submenu.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"playlists", @"Playlists")
action:nil
keyEquivalent:@""];
[tempItem setSubmenu:_playlistsMenu];
[tempItem setTag:3];
} else if ([nextObject isEqualToString:@"eqPresets"]) {
- ITDebugLog(@"Add eq presets menu item.");
+ ITDebugLog(@"Add \"EQ Presets\" submenu.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"eqPresets", @"EQ Presets")
action:nil
keyEquivalent:@""];
{
NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];
NSMenuItem *tempItem;
+ ITDebugLog(@"Creating menu for when player isn't running.");
+ ITDebugLog(@"Add \"Open %@\" menu item.", [[[MainController sharedController] currentRemote] playerSimpleName]);
tempItem = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"open", @"Open"), [[[MainController sharedController] currentRemote] playerSimpleName]] action:@selector(performMainMenuAction:) keyEquivalent:@""];
[tempItem setTag:MTMenuShowPlayerItem];
[tempItem setTarget:self];
+ ITDebugLog(@"Add a separator menu item.");
[menu addItem:[NSMenuItem separatorItem]];
+ ITDebugLog(@"Add \"Preferences...\" menu item.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"preferences", @"Preferences...") action:@selector(performMainMenuAction:) keyEquivalent:@""];
[tempItem setTag:MTMenuPreferencesItem];
[tempItem setTarget:self];
+ ITDebugLog(@"Add \"Quit\" menu item.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"quit", @"Quit") action:@selector(performMainMenuAction:) keyEquivalent:@""];
[tempItem setTag:MTMenuQuitItem];
[tempItem setTarget:self];
- (void)rebuildSubmenus
{
+ NSLog(@"Rebuilding all of the submenus.");
+
currentRemote = [[MainController sharedController] currentRemote];
_currentPlaylist = [currentRemote currentPlaylistIndex];
_currentTrack = [currentRemote currentSongIndex];
[_upcomingSongsMenu release];
[_playlistsMenu release];
[_eqMenu release];
+ NSLog(@"Beginning Rebuild of \"Song Rating\" submenu.");
_ratingMenu = [self ratingMenu];
+ NSLog(@"Beginning Rebuild of \"Upcoming Songs\" submenu.");
_upcomingSongsMenu = [self upcomingSongsMenu];
+ NSLog(@"Beginning Rebuild of \"Playlists\" submenu.");
_playlistsMenu = [self playlistsMenu];
+ NSLog(@"Beginning Rebuild of \"EQ Presets\" submenu.");
_eqMenu = [self eqMenu];
+ NSLog(@"Done rebuilding all of the submenus.");
}
- (NSMenu *)ratingMenu
int itemTag = 0;
SEL itemSelector = @selector(performRatingMenuAction:);
- ITDebugLog(@"Building rating menu.");
+ ITDebugLog(@"Building \"Song Rating\" menu.");
[ratingMenu addItemWithTitle:[NSString stringWithUTF8String:"☆☆☆☆☆"] action:nil keyEquivalent:@""];
[ratingMenu addItemWithTitle:[NSString stringWithUTF8String:"★☆☆☆☆"] action:nil keyEquivalent:@""];
itemEnum = [[ratingMenu itemArray] objectEnumerator];
while ( (anItem = [itemEnum nextObject]) ) {
+ ITDebugLog(@"Setting up \"%@\" menu item.", [anItem title]);
[anItem setAction:itemSelector];
[anItem setTarget:self];
[anItem setTag:itemTag];
itemTag += 20;
}
+ ITDebugLog(@"Done Building \"Song Rating\" menu.");
return ratingMenu;
}
int numSongs = [currentRemote numberOfSongsInPlaylistAtIndex:_currentPlaylist];
int numSongsInAdvance = [[NSUserDefaults standardUserDefaults] integerForKey:@"SongsInAdvance"];
- ITDebugLog(@"Building upcoming songs menu.");
+ ITDebugLog(@"Building \"Upcoming Songs\" menu.");
if (_currentPlaylist && !_playingRadio) {
if (numSongs > 0) {
int i;
-
+
for (i = _currentTrack + 1; i <= _currentTrack + numSongsInAdvance; i++) {
if (i <= numSongs) {
NSString *curSong = [currentRemote songTitleAtIndex:i];
NSMenuItem *songItem;
+ ITDebugLog(@"Adding song: %@", curSong);
songItem = [upcomingSongsMenu addItemWithTitle:curSong action:@selector(performUpcomingSongsMenuAction:) keyEquivalent:@""];
[songItem setTag:i];
[songItem setTarget:self];
}
}
}
+ ITDebugLog(@"Done Building \"Upcoming Songs\" menu.");
return upcomingSongsMenu;
}
NSMenuItem *tempItem;
int i;
- ITDebugLog(@"Building playlists menu.");
+ ITDebugLog(@"Building \"Playlists\" menu.");
for (i = 0; i < [playlists count]; i++) {
- tempItem = [playlistsMenu addItemWithTitle:[playlists objectAtIndex:i] action:@selector(performPlaylistMenuAction:) keyEquivalent:@""];
+ NSString *curPlaylist = [playlists objectAtIndex:i];
+ ITDebugLog(@"Adding playlist: %@", curPlaylist);
+ tempItem = [playlistsMenu addItemWithTitle:curPlaylist action:@selector(performPlaylistMenuAction:) keyEquivalent:@""];
[tempItem setTag:i + 1];
[tempItem setTarget:self];
}
if (!_playingRadio && _currentPlaylist) {
[[playlistsMenu itemAtIndex:_currentPlaylist - 1] setState:NSOnState];
}
+ ITDebugLog(@"Done Building \"Playlists\" menu");
return playlistsMenu;
}
NSMenuItem *tempItem;
int i;
- ITDebugLog(@"Building EQ presets menu.");
+ ITDebugLog(@"Building \"EQ Presets\" menu.");
for (i = 0; i < [eqPresets count]; i++) {
NSString *name;
- if ( ( name = [eqPresets objectAtIndex:i] ) ) {
- tempItem = [eqMenu addItemWithTitle:name action:@selector(performEqualizerMenuAction:) keyEquivalent:@""];
+ if ( ( name = [eqPresets objectAtIndex:i] ) ) {
+ ITDebugLog(@"Adding EQ Preset: %@", name);
+ tempItem = [eqMenu addItemWithTitle:name
+ action:@selector(performEqualizerMenuAction:)
+ keyEquivalent:@""];
[tempItem setTag:i];
[tempItem setTarget:self];
- }
+ }
}
+ ITDebugLog(@"Done Building \"EQ Presets\" menu");
return eqMenu;
}
switch ( [sender tag] )
{
case MTMenuPlayPauseItem:
- ITDebugLog(@"MenuController: Play/Pause");
+ ITDebugLog(@"Performing Menu Action: Play/Pause");
[[MainController sharedController] playPause];
break;
case MTMenuFastForwardItem:
- ITDebugLog(@"MenuController: Fast Forward");
+ ITDebugLog(@"Performing Menu Action: Fast Forward");
[[MainController sharedController] fastForward];
break;
case MTMenuRewindItem:
- ITDebugLog(@"MenuController: Rewind");
+ ITDebugLog(@"Performing Menu Action: Rewind");
[[MainController sharedController] rewind];
break;
case MTMenuPreviousTrackItem:
- ITDebugLog(@"MenuController: Previous Track");
+ ITDebugLog(@"Performing Menu Action: Previous Track");
[[MainController sharedController] prevSong];
break;
case MTMenuNextTrackItem:
- ITDebugLog(@"MenuController: Next Track");
+ ITDebugLog(@"Performing Menu Action: Next Track");
[[MainController sharedController] nextSong];
break;
case MTMenuShowPlayerItem:
- ITDebugLog(@"MainController: Show Main Interface");
+ ITDebugLog(@"Performing Menu Action: Show Main Interface");
[[MainController sharedController] showPlayer];
break;
case MTMenuPreferencesItem:
- ITDebugLog(@"MenuController: Preferences...");
+ ITDebugLog(@"Performing Menu Action: Preferences...");
[[MainController sharedController] showPreferences];
break;
case MTMenuQuitItem:
- ITDebugLog(@"MenuController: Quit");
+ ITDebugLog(@"Performing Menu Action: Quit");
[[MainController sharedController] quitMenuTunes];
break;
default:
- ITDebugLog(@"MenuController: Unimplemented Menu Item OR Child-bearing Menu Item");
+ ITDebugLog(@"Performing Menu Action: Unimplemented Menu Item OR Child-bearing Menu Item");
break;
}
}
- (void)performRatingMenuAction:(id)sender
{
+ ITDebugLog(@"Rating action selected on item with tag %i", [sender tag]);
[[MainController sharedController] selectSongRating:[sender tag]];
}
- (void)performPlaylistMenuAction:(id)sender
{
+ ITDebugLog(@"Playlist action selected on item with tag %i", [sender tag]);
[[MainController sharedController] selectPlaylistAtIndex:[sender tag]];
}
- (void)performEqualizerMenuAction:(id)sender
{
+ ITDebugLog(@"EQ action selected on item with tag %i", [sender tag]);
[[MainController sharedController] selectEQPresetAtIndex:[sender tag]];
}
- (void)performUpcomingSongsMenuAction:(id)sender
{
+ ITDebugLog(@"Song action selected on item with tag %i", [sender tag]);
[[MainController sharedController] selectSongAtIndex:[sender tag]];
}
- (void)updateMenu
{
-
+ ITDebugLog(@"Update Menu");
[_currentMenu update];
}
return YES;
}
+//This is never used I know, keep it though
- (NSString *)systemUIColor
{
NSDictionary *tmpDict;
{ shiftKey, NSShiftKeyMask },
};
+ ITDebugLog(@"Setting Key Equivelent on menu item \"%@\".", [item title]);
+
for (i = 0; i < 6; i++) {
if (modifiers & carbonToCocoa[i][0]) {
cocoaModifiers += carbonToCocoa[i][1];
switch (code)
{
case 36:
+ ITDebugLog(@"Keycode for menu item \"%@\": 36 (Return)", [item title]);
charcode = '\r';
break;
case 48:
+ ITDebugLog(@"Keycode for menu item \"%@\": 48 (Tab)", [item title]);
charcode = '\t';
break;
//Space -- ARGH!
case 49:
{
+ ITDebugLog(@"Keycode for menu item \"%@\": 49 (Space)", [item title]);
// Haven't tested this, though it should work.
// This doesn't work. :'(
- unichar buffer;
- [[NSString stringWithString:@"Space"] getCharacters:&buffer];
- charcode = buffer;
+ //unichar buffer;
+ //[[NSString stringWithString:@"Space"] getCharacters:&buffer];
+ //charcode = buffer;
/*MenuRef menuRef = _NSGetCarbonMenu([item menu]);
ITDebugLog(@"%@", menuRef);
SetMenuItemCommandKey(menuRef, 0, NO, 49);
SetMenuItemModifiers(menuRef, 0, kMenuNoCommandModifier);
SetMenuItemKeyGlyph(menuRef, 0, kMenuBlankGlyph);
charcode = 'b';*/
-
+ unichar buffer;
+ [[NSString stringWithString:@"_"] getCharacters:&buffer]; // this will have to do for now :(
+ charcode = buffer;
}
break;
case 51:
+ ITDebugLog(@"Keycode for menu item \"%@\": 51 (Delete)", [item title]);
charcode = NSDeleteFunctionKey;
break;
case 53:
+ ITDebugLog(@"Keycode for menu item \"%@\": 53 (Escape)", [item title]);
charcode = '\e';
break;
case 71:
+ ITDebugLog(@"Keycode for menu item \"%@\": 71 (Escape)", [item title]);
charcode = '\e';
break;
case 76:
+ ITDebugLog(@"Keycode for menu item \"%@\": 76 (Return)", [item title]);
charcode = '\r';
break;
case 96:
+ ITDebugLog(@"Keycode for menu item \"%@\": 96 (F5)", [item title]);
charcode = NSF5FunctionKey;
break;
case 97:
+ ITDebugLog(@"Keycode for menu item \"%@\": 97 (F6)", [item title]);
charcode = NSF6FunctionKey;
break;
case 98:
+ ITDebugLog(@"Keycode for menu item \"%@\": 98 (F7)", [item title]);
charcode = NSF7FunctionKey;
break;
case 99:
+ ITDebugLog(@"Keycode for menu item \"%@\": 99 (F3)", [item title]);
charcode = NSF3FunctionKey;
break;
case 100:
+ ITDebugLog(@"Keycode for menu item \"%@\": 100 (F8)", [item title]);
charcode = NSF8FunctionKey;
break;
case 101:
+ ITDebugLog(@"Keycode for menu item \"%@\": 101 (F9)", [item title]);
charcode = NSF9FunctionKey;
break;
case 103:
+ ITDebugLog(@"Keycode for menu item \"%@\": 103 (F11)", [item title]);
charcode = NSF11FunctionKey;
break;
case 105:
+ ITDebugLog(@"Keycode for menu item \"%@\": 105 (F3)", [item title]);
charcode = NSF3FunctionKey;
break;
case 107:
+ ITDebugLog(@"Keycode for menu item \"%@\": 107 (F14)", [item title]);
charcode = NSF14FunctionKey;
break;
case 109:
+ ITDebugLog(@"Keycode for menu item \"%@\": 109 (F10)", [item title]);
charcode = NSF10FunctionKey;
break;
case 111:
+ ITDebugLog(@"Keycode for menu item \"%@\": 111 (F12)", [item title]);
charcode = NSF12FunctionKey;
break;
case 113:
+ ITDebugLog(@"Keycode for menu item \"%@\": 113 (F13)", [item title]);
charcode = NSF13FunctionKey;
break;
case 114:
+ ITDebugLog(@"Keycode for menu item \"%@\": 114 (Insert)", [item title]);
charcode = NSInsertFunctionKey;
break;
case 115:
+ ITDebugLog(@"Keycode for menu item \"%@\": 115 (Home)", [item title]);
charcode = NSHomeFunctionKey;
break;
case 116:
+ ITDebugLog(@"Keycode for menu item \"%@\": 116 (PgUp)", [item title]);
charcode = NSPageUpFunctionKey;
break;
case 117:
+ ITDebugLog(@"Keycode for menu item \"%@\": 117 (Delete)", [item title]);
charcode = NSDeleteFunctionKey;
break;
case 118:
+ ITDebugLog(@"Keycode for menu item \"%@\": 118 (F4)", [item title]);
charcode = NSF4FunctionKey;
break;
case 119:
+ ITDebugLog(@"Keycode for menu item \"%@\": 119 (End)", [item title]);
charcode = NSEndFunctionKey;
break;
case 120:
+ ITDebugLog(@"Keycode for menu item \"%@\": 120 (F2)", [item title]);
charcode = NSF2FunctionKey;
break;
case 121:
+ ITDebugLog(@"Keycode for menu item \"%@\": 121 (PgDown)", [item title]);
charcode = NSPageDownFunctionKey;
break;
case 122:
+ ITDebugLog(@"Keycode for menu item \"%@\": 122 (F1)", [item title]);
charcode = NSF1FunctionKey;
break;
case 123:
+ ITDebugLog(@"Keycode for menu item \"%@\": 123 (Left Arrow)", [item title]);
charcode = NSLeftArrowFunctionKey;
break;
case 124:
+ ITDebugLog(@"Keycode for menu item \"%@\": 124 (Right Arrow)", [item title]);
charcode = NSRightArrowFunctionKey;
break;
case 125:
+ ITDebugLog(@"Keycode for menu item \"%@\": 125 (Down Arrow)", [item title]);
charcode = NSDownArrowFunctionKey;
break;
case 126:
+ ITDebugLog(@"Keycode for menu item \"%@\": 126 (Up Arrow)", [item title]);
charcode = NSUpArrowFunctionKey;
break;
}
kchr = (Ptr) GetScriptVariable(smCurrentScript, smKCHRCache);
keyTrans = KeyTranslate(kchr, code, &state);
charCode = keyTrans;
+ ITDebugLog(@"Keycode for menu item \"%@\": %i (%c)", [item title], code, charCode);
[item setKeyEquivalent:[NSString stringWithCString:&charCode length:1]];
} else if (charcode != 'b') {
[item setKeyEquivalent:[NSString stringWithCharacters:&charcode length:1]];
}
+ ITDebugLog(@"Done setting key equivalent on menu item: %@", [item title]);
}
@end
\ No newline at end of file
- (BOOL)begin
{
+ ITDebugLog(@"iTunesRemote begun");
savedPSN = [self iTunesPSN];
return YES;
}
- (BOOL)halt
{
+ ITDebugLog(@"iTunesRemote halted");
return YES;
}
- (BOOL)showPrimaryInterface
{
+ ITDebugLog(@"Showing player primary interface.");
// Still have to convert these to AEs:
// set minimized of browser window 1 to false
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:@"data:long(0), '----':obj { form:'prop', want:type('prop'), seld:type('pMin'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } }" eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:@"data:long(1), '----':obj { form:'prop', want:type('prop'), seld:type('pvis'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } }" eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
// Make this into AppleEvents... shouldn't be too hard, I'm just too tired to do it right now.
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:@"data:long(1), '----':obj { form:'prop', want:type('prop'), seld:type('pisf'), from:'null'() }" eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
-
+ ITDebugLog(@"Done showing player primary interface.");
return YES;
}
for (i = 0; i < count; i++) {
if ([[[apps objectAtIndex:i] objectForKey:@"NSApplicationName"] isEqualToString:@"iTunes"]) {
+ ITDebugLog(@"Player running state: 1");
return ITMTRemotePlayerRunning;
}
}
+ ITDebugLog(@"Player running state: 0");
return ITMTRemotePlayerNotRunning;
}
- (ITMTRemotePlayerPlayingState)playerPlayingState
{
- long result = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:'prop', want:type('prop'), seld:type('pPlS'), from:'null'() }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ long result;
+
+ ITDebugLog(@"Getting player playing state");
+
+ result = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:'prop', want:type('prop'), seld:type('pPlS'), from:'null'() }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
switch (result)
{
default:
case 'kPSS':
+ ITDebugLog(@"Getting player playing state done. Player state: Stopped");
return ITMTRemotePlayerStopped;
case 'kPSP':
+ ITDebugLog(@"Getting player playing state done. Player state: Playing");
return ITMTRemotePlayerPlaying;
case 'kPSp':
+ ITDebugLog(@"Getting player playing state done. Player state: Paused");
return ITMTRemotePlayerPaused;
case 'kPSR':
+ ITDebugLog(@"Getting player playing state done. Player state: Rewinding");
return ITMTRemotePlayerRewinding;
case 'kPSF':
+ ITDebugLog(@"Getting player playing state done. Player state: Forwarding");
return ITMTRemotePlayerForwarding;
}
-
+ ITDebugLog(@"Getting player playing state done. Player state: Stopped");
return ITMTRemotePlayerStopped;
}
const signed long numPlaylists = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"kocl:type('cPly'), '----':()" eventClass:@"core" eventID:@"cnte" appPSN:savedPSN];
NSMutableArray *playlists = [[NSMutableArray alloc] initWithCapacity:numPlaylists];
+ ITDebugLog(@"Getting playlists.");
+
for (i = 1; i <= numPlaylists; i++) {
const long j = i;
NSString *sendStr = [NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cPly'), seld:long(%lu), from:'null'() } }",(unsigned long)j];
NSString *theObj = [[ITAppleEventCenter sharedCenter] sendAEWithSendString:sendStr eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Adding playlist: %@", theObj);
[playlists addObject:theObj];
}
+ ITDebugLog(@"Finished getting playlists.");
return [playlists autorelease];
}
- (int)numberOfSongsInPlaylistAtIndex:(int)index
{
- return [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:[NSString stringWithFormat:@"kocl:type('cTrk'), '----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:'null'() }",index] eventClass:@"core" eventID:@"cnte" appPSN:savedPSN];
+ int temp1;
+ ITDebugLog(@"Getting number of songs in playlist at index %i", index);
+ temp1 = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:[NSString stringWithFormat:@"kocl:type('cTrk'), '----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:'null'() }",index] eventClass:@"core" eventID:@"cnte" appPSN:savedPSN];
+ ITDebugLog(@"Getting number of songs in playlist at index %i done", index);
+ return temp1;
}
- (ITMTRemotePlayerSource)currentSource
{
- unsigned long fourcc = (unsigned long)[[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pKnd" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ unsigned long fourcc;
+
+ ITDebugLog(@"Getting current source.");
+
+ fourcc = (unsigned long)[[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pKnd" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
switch (fourcc) {
- case 'kUnk':
- case 'kLib':
- case 'kShd':
- default:
- return ITMTRemoteLibrarySource;
- break;
- case 'kTun':
- return ITMTRemoteRadioSource;
- break;
- case 'kDev':
- return ITMTRemoteGenericDeviceSource;
- case 'kPod':
- return ITMTRemoteiPodSource; //this is stupid
- break;
- case 'kMCD':
- case 'kACD':
- return ITMTRemoteCDSource;
- break;
+ case 'kUnk':
+ case 'kLib':
+ case 'kShd':
+ default:
+ ITDebugLog(@"Getting current source done. Source: Library.");
+ return ITMTRemoteLibrarySource;
+ break;
+ case 'kTun':
+ ITDebugLog(@"Getting current source done. Source: Radio.");
+ return ITMTRemoteRadioSource;
+ break;
+ case 'kDev':
+ ITDebugLog(@"Getting current source done. Source: Generic Device.");
+ return ITMTRemoteGenericDeviceSource;
+ case 'kPod':
+ ITDebugLog(@"Getting current source done. Source: iPod.");
+ return ITMTRemoteiPodSource; //this is stupid
+ break;
+ case 'kMCD':
+ case 'kACD':
+ ITDebugLog(@"Getting current source done. Source: CD.");
+ return ITMTRemoteCDSource;
+ break;
}
}
{
int realResult = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pcls" fromObjectByKey:@"pPla" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
-
+ ITDebugLog(@"Getting current playlist class");
switch (realResult)
{
case 'cLiP':
- return ITMTRemotePlayerLibraryPlaylist;
- break;
+ ITDebugLog(@"Getting current playlist class done. Class: Library.");
+ return ITMTRemotePlayerLibraryPlaylist;
+ break;
case 'cRTP':
- return ITMTRemotePlayerRadioPlaylist;
- break;
+ ITDebugLog(@"Getting current playlist class done. Class: Radio.");
+ return ITMTRemotePlayerRadioPlaylist;
+ break;
default:
- return ITMTRemotePlayerPlaylist;
+ ITDebugLog(@"Getting current playlist class done. Class: Standard playlist.");
+ return ITMTRemotePlayerPlaylist;
}
}
- (int)currentPlaylistIndex
-{
- return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pPla" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+{
+ int temp1;
+ ITDebugLog(@"Getting current playlist index.");
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pPla" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current playlist index done.");
+ return temp1;
}
- (NSString *)songTitleAtIndex:(int)index
{
- return [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }",index] eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ NSString *temp1;
+ ITDebugLog(@"Getting song title at index %i.", index);
+ temp1 = [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }",index] eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting song title at index %i done.", index);
+ return temp1;
}
- (int)currentAlbumTrackCount
{
- return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrC" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ int temp1;
+ ITDebugLog(@"Getting current album track count.");
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrC" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current album track count done.");
+ return temp1;
}
- (int)currentSongTrack
{
- return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrN" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ int temp1;
+ ITDebugLog(@"Getting current song track.");
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrN" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current song track done.");
+ return temp1;
}
- (NSString *)playerStateUniqueIdentifier
{
- return [NSString stringWithFormat:@"%i-%i", [self currentPlaylistIndex], [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pDID" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]];
+ NSString *temp1;
+ ITDebugLog(@"Getting current unique identifier.");
+ temp1 = [NSString stringWithFormat:@"%i-%i", [self currentPlaylistIndex], [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pDID" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]];
+ ITDebugLog(@"Getting current unique identifier done.");
+ return temp1;
}
- (int)currentSongIndex
{
- return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ int temp1;
+ ITDebugLog(@"Getting current song index.");
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current song index done.");
+ return temp1;
}
- (NSString *)currentSongTitle
{
- return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pnam" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ NSString *temp1;
+ ITDebugLog(@"Getting current song title.");
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pnam" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current song title done.");
+ return temp1;
}
- (NSString *)currentSongArtist
{
- return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pArt" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ NSString *temp1;
+ ITDebugLog(@"Getting current song artist.");
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pArt" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current song artist done.");
+ return temp1;
}
- (NSString *)currentSongAlbum
{
- return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pAlb" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ NSString *temp1;
+ ITDebugLog(@"Getting current song album.");
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pAlb" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current song album done.");
+ return temp1;
}
- (NSString *)currentSongGenre
{
- return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pGen" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ NSString *temp1;
+ ITDebugLog(@"Getting current song genre.");
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pGen" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current song genre done.");
+ return temp1;
}
- (NSString *)currentSongLength
{
- return [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pTim" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ NSString *temp1;
+ ITDebugLog(@"Getting current song length.");
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pTim" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current song length done.");
+ return temp1;
}
- (NSString *)currentSongRemaining
{
- long duration = [[ITAppleEventCenter sharedCenter]
+ long duration;
+ long current;
+
+ ITDebugLog(@"Getting current song remaining time.");
+
+ duration = [[ITAppleEventCenter sharedCenter]
sendTwoTierAEWithRequestedKeyForNumber:@"pDur" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
- long current = [[ITAppleEventCenter sharedCenter]
+ current = [[ITAppleEventCenter sharedCenter]
sendAEWithRequestedKeyForNumber:@"pPos" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
-
+ ITDebugLog(@"Getting current song remaining time done.");
return [[NSNumber numberWithLong:duration - current] stringValue];
}
- (float)currentSongRating
{
- return (float)[[ITAppleEventCenter sharedCenter]
- sendTwoTierAEWithRequestedKeyForNumber:@"pRte" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] / 100.0;
+ float temp1;
+ ITDebugLog(@"Getting current song rating.");
+ temp1 = ((float)[[ITAppleEventCenter sharedCenter]
+ sendTwoTierAEWithRequestedKeyForNumber:@"pRte" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] / 100.0);
+ ITDebugLog(@"Getting current song rating done.");
+ return temp1;
}
- (BOOL)setCurrentSongRating:(float)rating
{
+ ITDebugLog(@"Setting current song rating to %f.", rating);
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pRte'), from:obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }",(long)(rating*100),[self currentSongIndex]] eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
+ ITDebugLog(@"Setting current song rating to %f done.", rating);
return YES;
}
-/* - (BOOL)equalizerEnabled
+- (BOOL)equalizerEnabled
{
+ ITDebugLog(@"Getting equalizer enabled status.");
int thingy = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:type('prop'), want:type('prop'), seld:type('pEQ '), from:() }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
- NSLog(@"Debug equalizerEnabled: %i", thingy);
+ ITDebugLog(@"Done getting equalizer enabled status.");
return thingy;
}
- (BOOL)setEqualizerEnabled:(BOOL)enabled
{
+ ITDebugLog(@"Setting equalizer enabled to %i.", enabled);
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pEQ '), from:'null'() }",enabled] eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
+ ITDebugLog(@"Done setting equalizer enabled to %i.", enabled);
return YES;
-} */
+}
- (NSArray *)eqPresets
{
int i;
long numPresets = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"kocl:type('cEQP'), '----':(), &subj:()" eventClass:@"core" eventID:@"cnte" appPSN:savedPSN];
NSMutableArray *presets = [[NSMutableArray alloc] initWithCapacity:numPresets];
-
+ ITDebugLog(@"Getting EQ presets");
for (i = 1; i <= numPresets; i++) {
NSString *theObj = [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cEQP'), seld:long(%lu), from:'null'() } }",i] eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
if (theObj) {
+ ITDebugLog(@"Adding preset %@", theObj);
[presets addObject:theObj];
}
}
+ ITDebugLog(@"Done getting EQ presets");
return [presets autorelease];
}
- (int)currentEQPresetIndex
{
int result;
+ ITDebugLog(@"Getting current EQ preset index.");
result = [[ITAppleEventCenter sharedCenter]
sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pEQP" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting current EQ preset index done.");
return result;
}
- (float)volume
{
+ ITDebugLog(@"Getting volume.");
+ ITDebugLog(@"Getting volume done.");
return (float)[[ITAppleEventCenter sharedCenter] sendAEWithRequestedKeyForNumber:@"pVol" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] / 100;
}
- (BOOL)setVolume:(float)volume
{
+ ITDebugLog(@"Setting volume to %f.", volume);
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pVol'), from:'null'() }",(long)(volume*100)] eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
+ ITDebugLog(@"Setting volume to %f done.", volume);
return YES;
}
- (BOOL)shuffleEnabled
{
+ ITDebugLog(@"Getting shuffle enabled status.");
int result = [[ITAppleEventCenter sharedCenter]
sendTwoTierAEWithRequestedKeyForNumber:@"pShf" fromObjectByKey:@"pPla" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ ITDebugLog(@"Getting shuffle enabled status done.");
return result;
}
- (BOOL)setShuffleEnabled:(BOOL)enabled
{
+ ITDebugLog(@"Set shuffle enabled to %i", enabled);
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pShf'), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } }",(unsigned long)enabled] eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
+ ITDebugLog(@"Set shuffle enabled to %i done", enabled);
return YES;
}
int result = 0;
m00f = [[ITAppleEventCenter sharedCenter]
sendTwoTierAEWithRequestedKeyForNumber:@"pRpt" fromObjectByKey:@"pPla" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
-
+ ITDebugLog(@"Getting repeat mode.");
switch (m00f)
- {
- //case 'kRp0':
- case 1800564815:
- result = ITMTRemotePlayerRepeatOff;
- break;
- case 'kRp1':
- result = ITMTRemotePlayerRepeatOne;
- break;
- case 'kRpA':
- result = ITMTRemotePlayerRepeatAll;
- break;
- }
+ {
+ //case 'kRp0':
+ case 1800564815:
+ ITDebugLog(@"Repeat off");
+ result = ITMTRemotePlayerRepeatOff;
+ break;
+ case 'kRp1':
+ ITDebugLog(@"Repeat one");
+ result = ITMTRemotePlayerRepeatOne;
+ break;
+ case 'kRpA':
+ ITDebugLog(@"Repeat all");
+ result = ITMTRemotePlayerRepeatAll;
+ break;
+ }
+ ITDebugLog(@"Getting repeat mode done.");
return result;
}
- (BOOL)setRepeatMode:(ITMTRemotePlayerRepeatMode)repeatMode
{
char *m00f;
+ ITDebugLog(@"Setting repeat mode to %i", repeatMode);
switch (repeatMode)
- {
- default:
- case ITMTRemotePlayerRepeatOff:
- m00f = "kRp0";
- break;
- case ITMTRemotePlayerRepeatOne:
- m00f = "kRp1";
- break;
- case ITMTRemotePlayerRepeatAll:
- m00f = "kRpA";
- break;
- }
-
+ {
+ default:
+ case ITMTRemotePlayerRepeatOff:
+ m00f = "kRp0";
+ break;
+ case ITMTRemotePlayerRepeatOne:
+ m00f = "kRp1";
+ break;
+ case ITMTRemotePlayerRepeatAll:
+ m00f = "kRpA";
+ break;
+ }
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:'%s', '----':obj { form:'prop', want:type('prop'), seld:type('pRpt'), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:() } }",m00f] eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
+ ITDebugLog(@"Setting repeat mode to %c done", m00f);
return YES;
}
- (BOOL)play
{
+ ITDebugLog(@"Play");
[[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Play" appPSN:savedPSN];
+ ITDebugLog(@"Play done");
return YES;
}
- (BOOL)pause
{
+ ITDebugLog(@"Pause");
[[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Paus" appPSN:savedPSN];
+ ITDebugLog(@"Pause done");
return YES;
}
- (BOOL)goToNextSong
{
+ ITDebugLog(@"Go to next track");
[[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Next" appPSN:savedPSN];
+ ITDebugLog(@"Go to next track done");
return YES;
}
- (BOOL)goToPreviousSong
{
+ ITDebugLog(@"Go to previous track");
[[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Prev" appPSN:savedPSN];
+ ITDebugLog(@"Go to previous track done");
return YES;
}
- (BOOL)forward
{
+ ITDebugLog(@"Fast forward action");
[[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Fast" appPSN:savedPSN];
+ ITDebugLog(@"Fast forward action done");
return YES;
}
- (BOOL)rewind
{
+ ITDebugLog(@"Rewind action");
[[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:@"Rwnd" appPSN:savedPSN];
+ ITDebugLog(@"Rewind action done");
return YES;
}
- (BOOL)switchToPlaylistAtIndex:(int)index
{
+ ITDebugLog(@"Switching to playlist at index %i", index);
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:() }",index] eventClass:@"hook" eventID:@"Play" appPSN:savedPSN];
+ ITDebugLog(@"Done switching to playlist at index %i", index);
return YES;
}
- (BOOL)switchToSongAtIndex:(int)index
{
+ ITDebugLog(@"Switching to track at index %i", index);
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:() } }",index] eventClass:@"hook" eventID:@"Play" appPSN:savedPSN];
+ ITDebugLog(@"Done switching to track at index %i", index);
return YES;
}
- (BOOL)switchToEQAtIndex:(int)index
{
+ ITDebugLog(@"Switching to EQ preset at index %i", index);
// index should count from 0, but itunes counts from 1, so let's add 1.
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pEQP'), from:'null'() }, data:obj { form:'indx', want:type('cEQP'), seld:long(%lu), from:'null'() }",(index+1)] eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
+ ITDebugLog(@"Done switching to EQ preset at index %i", index);
return YES;
}
ProcessSerialNumber number;
number.highLongOfPSN = kNoProcess;
number.lowLongOfPSN = 0;
-
+ ITDebugLog(@"Getting iTunes' PSN.");
while ( (GetNextProcess(&number) == noErr) )
{
CFStringRef name;
{
if ([(NSString *)name isEqualToString:@"iTunes"])
{
+ ITDebugLog(@"iTunes' highLongOfPSN: %lu.", number.highLongOfPSN);
+ ITDebugLog(@"iTunes' lowLongOfPSN: %lu.", number.lowLongOfPSN);
+ ITDebugLog(@"Done getting iTunes' PSN.");
return number;
}
[(NSString *)name release];
}
}
+ ITDebugLog(@"Failed getting iTunes' PSN.");
return number;
}