X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/851418da25a131b8a3d63f321cf791f97b75317b..4b79b3476d8846420e66690e29e265aacaf172cf:/iTunesRemote.m diff --git a/iTunesRemote.m b/iTunesRemote.m index a7d5dcc..7bb71c5 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -9,7 +9,7 @@ - (NSString *)title { - return @"iTunes Plug-in"; + return @"iTunes"; } - (NSString *)information; @@ -43,7 +43,7 @@ return YES; } -- (BOOL)isAppRunning +- (ITMTRemotePlayerRunningStatus)playerRunningStatus { NSArray *apps = [[NSWorkspace sharedWorkspace] launchedApplications]; int i; @@ -52,13 +52,13 @@ for (i = 0; i < count; i++) { if ([[[apps objectAtIndex:i] objectForKey:@"NSApplicationName"] isEqualToString:@"iTunes"]) { - return YES; + return ITMTRemotePlayerRunning; } } - return NO; + return ITMTRemotePlayerNotRunning; } -- (PlayerState)playerState +- (ITMTRemotePlayerState)playerState { long result = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:'prop', want:type('prop'), seld:type('pPlS'), from:'null'() }" eventClass:@"core" eventID:@"getd" appPSN:iTunesPSN]; @@ -66,18 +66,18 @@ { default: case 'kPSS': - return stopped; + return ITMTRemotePlayerStopped; case 'kPSP': - return playing; + return ITMTRemotePlayerPlaying; case 'kPSp': - return paused; + return ITMTRemotePlayerPaused; case 'kPSR': - return rewinding; + return ITMTRemotePlayerRewinding; case 'kPSF': - return forwarding; + return ITMTRemotePlayerForwarding; } - return stopped; + return ITMTRemotePlayerStopped; } - (NSArray *)playlists @@ -91,7 +91,7 @@ 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:iTunesPSN]; - NSLog(@"sent event cur %d max %d",i,numPlaylists); + //NSLog(@"sent event cur %d max %d",i,numPlaylists); [playlists addObject:theObj]; } return [playlists autorelease]; @@ -166,6 +166,42 @@ return [[NSNumber numberWithLong:duration - current] stringValue]; } +- (float)currentSongRating +{ + int realResult = [[ITAppleEventCenter sharedCenter] + sendTwoTierAEWithRequestedKeyForNumber:@"pRte" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:iTunesPSN]; + + return realResult / 100; +} + +- (BOOL)setCurrentSongRating:(float)rating +{ + [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), ----:obj { form:'prop', want:type('prop'), seld:type('pRte'), from:obj { form:'prop', want:type('prop'), seld:type('pTrk'), from:'null'() } ",(long)rating*100] eventClass:@"core" eventID:@"setd" appPSN:iTunesPSN]; + return YES; +} + +- (BOOL)equalizerEnabled +{ + return NO; +} + +- (BOOL)setEqualizerEnabled:(BOOL)enabled +{ + return NO; +} + +- (float)volume +{ + long vol = [[ITAppleEventCenter sharedCenter] sendAEWithRequestedKeyForNumber:@"pVol" eventClass:@"core" eventID:@"getd" appPSN:iTunesPSN]; + return vol / 100; +} + +- (BOOL)setVolume:(float)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:iTunesPSN]; + return NO; +} + - (NSArray *)eqPresets; { int i; @@ -227,20 +263,19 @@ - (BOOL)switchToPlaylistAtIndex:(int)index { [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:() }",index] eventClass:@"hook" eventID:@"Play" appPSN:iTunesPSN]; - return NO; + return YES; } - (BOOL)switchToSongAtIndex:(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:iTunesPSN]; - return NO; + return YES; } - (BOOL)switchToEQAtIndex:(int)index { - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:obj { form:'name', want:type('cEQP'), seld:long(%lu), from:'null'() }, '----':obj { form:'prop', want:type('prop'), seld:type('pEQP'), from:'null'() }",index] eventClass:@"core" eventID:@"setd" appPSN:iTunesPSN]; - [[ITAppleEventCenter sharedCenter] sendAEWithSendString:@"data:1, '----':obj { form:'prop', want:type('prop'), seld:type('pEQ '), from:'null'() }" eventClass:@"core" eventID:@"setd" appPSN:iTunesPSN]; - return NO; + [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:obj { form:'ID ', want:type('cEQP'), seld:long(%lu), from:'null'() }, ----:obj { form:'prop', want:type('prop'), seld:type('pEQP'), from:'null'() }",index] eventClass:@"core" eventID:@"setd" appPSN:iTunesPSN]; + return YES; } - (ProcessSerialNumber)iTunesPSN