From: Kent Sutherland Date: Sun, 28 Sep 2003 19:27:54 +0000 (+0000) Subject: Added tons of ITDebugLogs to iTunesRemote and MenuController. X-Git-Tag: v1.0~43 X-Git-Url: http://git.ithinksw.org/MenuTunes.git/commitdiff_plain/2f144305df58bb1af98d35200c2b9a358b8aa41f Added tons of ITDebugLogs to iTunesRemote and MenuController. --- diff --git a/MenuController.m b/MenuController.m index 94746f4..13867ed 100755 --- a/MenuController.m +++ b/MenuController.m @@ -49,20 +49,26 @@ _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]; } @@ -72,7 +78,7 @@ 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:@""]; @@ -89,6 +95,7 @@ } } + ITDebugLog(@"Set \"Play\"/\"Pause\" menu item's title to correct state."); switch ([currentRemote playerPlayingState]) { case ITMTRemotePlayerPlaying: [tempItem setTitle:NSLocalizedString(@"pause", @"Pause")]; @@ -101,7 +108,7 @@ 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:@""]; @@ -121,7 +128,7 @@ [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:@""]; @@ -141,7 +148,7 @@ [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:@""]; @@ -150,7 +157,7 @@ [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:@""]; @@ -159,7 +166,7 @@ [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]] @@ -179,33 +186,38 @@ [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:@""]]; @@ -214,6 +226,7 @@ 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:@""]]; @@ -222,6 +235,7 @@ 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:@""]]; @@ -231,6 +245,7 @@ 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:@""]]; } @@ -256,17 +271,19 @@ 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:@""]; @@ -283,7 +300,7 @@ [[_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:@""]; @@ -293,13 +310,14 @@ [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:@""]; @@ -323,13 +341,18 @@ { 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]; @@ -338,6 +361,8 @@ - (void)rebuildSubmenus { + NSLog(@"Rebuilding all of the submenus."); + currentRemote = [[MainController sharedController] currentRemote]; _currentPlaylist = [currentRemote currentPlaylistIndex]; _currentTrack = [currentRemote currentSongIndex]; @@ -347,10 +372,15 @@ [_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 @@ -361,7 +391,7 @@ 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:@""]; @@ -372,11 +402,13 @@ 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; } @@ -386,16 +418,17 @@ 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]; @@ -405,6 +438,7 @@ } } } + ITDebugLog(@"Done Building \"Upcoming Songs\" menu."); return upcomingSongsMenu; } @@ -415,10 +449,12 @@ 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]; } @@ -426,6 +462,7 @@ if (!_playingRadio && _currentPlaylist) { [[playlistsMenu itemAtIndex:_currentPlaylist - 1] setState:NSOnState]; } + ITDebugLog(@"Done Building \"Playlists\" menu"); return playlistsMenu; } @@ -436,16 +473,20 @@ 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; } @@ -454,66 +495,70 @@ 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]; } @@ -522,6 +567,7 @@ return YES; } +//This is never used I know, keep it though - (NSString *)systemUIColor { NSDictionary *tmpDict; @@ -555,6 +601,8 @@ { 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]; @@ -566,144 +614,178 @@ 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; } @@ -717,10 +799,12 @@ 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 diff --git a/iTunesRemote.m b/iTunesRemote.m index 2a86e22..a30156c 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -24,12 +24,14 @@ - (BOOL)begin { + ITDebugLog(@"iTunesRemote begun"); savedPSN = [self iTunesPSN]; return YES; } - (BOOL)halt { + ITDebugLog(@"iTunesRemote halted"); return YES; } @@ -62,6 +64,7 @@ - (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]; @@ -69,7 +72,7 @@ [[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; } @@ -81,31 +84,42 @@ 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; } @@ -115,42 +129,59 @@ 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; } } @@ -158,154 +189,227 @@ { 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; } @@ -315,96 +419,119 @@ 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; } @@ -433,7 +560,7 @@ ProcessSerialNumber number; number.highLongOfPSN = kNoProcess; number.lowLongOfPSN = 0; - + ITDebugLog(@"Getting iTunes' PSN."); while ( (GetNextProcess(&number) == noErr) ) { CFStringRef name; @@ -441,11 +568,15 @@ { 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; }