-- (BOOL)begin
-{
- savedPSN = [self iTunesPSN];
- return YES;
-}
-
-- (BOOL)halt
-{
- return YES;
-}
-
-- (BOOL)supportsControlAction:(ITMTRemoteControlAction)action
-{
- switch (action)
- {
- case ITMTRemoteStop:
- case ITMTRemotePause:
- case ITMTRemotePlay:
- case ITMTRemoteRewind:
- case ITMTRemoteFastForward:
- case ITMTRemotePreviousTrack:
- case ITMTRemoteNextTrack:
- return YES;
- break;
- default:
- return NO;
- break;
- }
-}
-
-- (BOOL)sendControlAction:(ITMTRemoteControlAction)action
-{
- NSString *eventID;
- switch (action)
- {
- case ITMTRemoteStop:
- eventID = @"Stop";
- return NO;
- break;
- case ITMTRemotePause:
- eventID = @"Paus";
- break;
- case ITMTRemotePlay:
- eventID = @"Play";
- break;
- case ITMTRemoteRewind:
- eventID = @"Rwnd";
- break;
- case ITMTRemoteFastForward:
- eventID = @"Fast";
- break;
- case ITMTRemotePreviousTrack:
- eventID = @"Prev";
- break;
- case ITMTRemoteNextTrack:
- eventID = @"Next";
- break;
- default:
- return NO;
- break;
- }
- [[ITAppleEventCenter sharedCenter] sendAEWithEventClass:@"hook" eventID:eventID appPSN:savedPSN];
- return YES;
-}
-
-- (ITMTRemoteControlState)controlState
-{
- long 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':
- return ITMTRemotePlayerStopped;
- case 'kPSP':
- return ITMTRemotePlayerPlaying;
- case 'kPSp':
- return ITMTRemotePlayerPaused;
- case 'kPSR':
- return ITMTRemotePlayerRewinding;
- case 'kPSF':
- return ITMTRemotePlayerForwarding;
- }
- return ITMTRemotePlayerStopped;
-}
-
-- (ITMTRemotePlaylistMode)playlistMode
-{
- return ITMTRemoteLibraryAndPlaylists;
-}
-
-- (NSArray *)playlistNames
-{
- long i;
- const signed long numPlaylists = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"kocl:type('cPly'), '----':()" eventClass:@"core" eventID:@"cnte" appPSN:savedPSN];
- NSMutableArray *playlists = [[NSMutableArray alloc] initWithCapacity:numPlaylists];
-
- 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];
- [playlists addObject:theObj];
- }
- return [playlists autorelease];
-}
-
-- (BOOL)switchToPlaylist:(int)playlistIndex
-{
- [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:() }",index] eventClass:@"hook" eventID:@"Play" appPSN:savedPSN];
- return YES;
-}
-
-- (BOOL)switchToTrackAtIndex:(int)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];
- return YES;
-}
-
-//What do this?
-- (int)indexForTrack:(int)identifier inPlaylist:(int)playlistIndex
-{
- return 0;
-}
-
-//What do this?
-- (int)identifierForTrackAtIndex:(int)index inPlaylist:(int)playlistIndex
-{
- return 0;
-}
-
-- (BOOL)supportsTrackProperty:(ITMTRemoteTrackProperty)property
-{
- switch (property)
- {
- case ITMTRemoteTrackName:
- case ITMTRemoteTrackArtist:
- case ITMTRemoteTrackAlbum:
- case ITMTRemoteTrackComposer:
- case ITMTRemoteTrackNumber:
- case ITMTRemoteTrackTotal:
- case ITMTRemoteTrackComment:
- case ITMTRemoteTrackGenre:
- case ITMTRemoteTrackYear:
- case ITMTRemoteTrackRating:
- case ITMTRemoteTrackArt:
- return YES;
- break;
- default:
- return NO;
- break;
- }
-}
-
-//Somebody else do this
-- (id)trackProperty:(ITMTRemoteTrackProperty)property atIndex:(int)index
-{
- switch (property)
- {
- case ITMTRemoteTrackName:
- break;
- case ITMTRemoteTrackArtist:
- break;
- case ITMTRemoteTrackAlbum:
- break;
- case ITMTRemoteTrackComposer:
- break;
- case ITMTRemoteTrackNumber:
- break;
- case ITMTRemoteTrackTotal:
- break;
- case ITMTRemoteTrackComment:
- break;
- case ITMTRemoteTrackGenre:
- break;
- case ITMTRemoteTrackYear:
- break;
- case ITMTRemoteTrackRating:
- break;
- case ITMTRemoteTrackArt:
- break;
- }