Wtf? What the hell? Where did that "op" come from?
[MenuTunes.git] / iTunesRemote.m
index b06c989..7bb71c5 100755 (executable)
@@ -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;
     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];
     
     {
         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];
     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;
 - (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:'indx', 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