+ ITDebugLog(@"Setting volume to %f.", volume);
+ ITSendAEWithString([NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pVol'), from:'null'() }", (long)(volume * 100)], 'core', 'setd', &savedPSN);
+ ITDebugLog(@"Setting volume to %f done.", volume);
+ return YES;
+}
+
+- (BOOL)shuffleEnabled
+{
+ int result;
+ ITDebugLog(@"Getting shuffle enabled status.");
+ if ([[self playerStateUniqueIdentifier] isEqualToString:@"0-0"]) {
+ ITDebugLog(@"No current playlist, getting shuffle status from visible playlist.");
+ result = (int)[ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pShf'), from:obj { form:'prop', want:type('prop'), seld:type('pPly'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } } }", 'core', 'getd', &savedPSN) int32Value];
+ } else {
+ result = (int)[ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pShf'), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } }", 'core', 'getd', &savedPSN) int32Value];
+ }
+ ITDebugLog(@"Getting shuffle enabled status done.");
+ return (result != 0);
+}
+
+- (BOOL)setShuffleEnabled:(BOOL)enabled
+{
+ ITDebugLog(@"Set shuffle enabled to %i", enabled);
+ if ([[self playerStateUniqueIdentifier] isEqualToString:@"0-0"]) {
+ ITDebugLog(@"No current playlist, setting shuffle status on visible playlist.");
+ ITSendAEWithString([NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pShf'), from:obj { form:'prop', want:type('prop'), seld:type('pPly'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } } }", (unsigned long)enabled], 'core', 'setd', &savedPSN);
+ } else {
+ ITSendAEWithString([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], 'core', 'setd', &savedPSN);
+ }
+ ITDebugLog(@"Set shuffle enabled to %i done", enabled);
+ return YES;
+}
+
+- (ITMTRemotePlayerRepeatMode)repeatMode
+{
+ FourCharCode m00f = 0;
+ int result = 0;
+ ITDebugLog(@"Getting repeat mode.");
+ m00f = (FourCharCode)[ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pRpt'), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } }", 'core', 'getd', &savedPSN) typeCodeValue];
+
+ if (m00f == 0) {
+ ITDebugLog(@"No current playlist, getting repeat mode from visible playlist.");
+ m00f = (FourCharCode)[ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pRpt'), from:obj { form:'prop', want:type('prop'), seld:type('pPly'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } } }", 'core', 'getd', &savedPSN) typeCodeValue];
+ }
+
+ switch (m00f)
+ {
+ //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)
+ {
+ case ITMTRemotePlayerRepeatOne:
+ m00f = "kRp1";
+ break;
+ case ITMTRemotePlayerRepeatAll:
+ m00f = "kRpA";
+ break;
+ case ITMTRemotePlayerRepeatOff:
+ default:
+ m00f = "kRp0";
+ break;
+ }
+ if ([[self playerStateUniqueIdentifier] isEqualToString:@"0-0"]) {
+ ITDebugLog(@"No current playlist, setting repeat mode on visible playlist.");
+ ITSendAEWithString([NSString stringWithFormat:@"data:'%s', '----':obj { form:'prop', want:type('prop'), seld:type('pRpt'), from:obj { form:'prop', want:type('prop'), seld:type('pPly'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } } }", m00f], 'core', 'setd', &savedPSN);
+ } else {
+ ITSendAEWithString([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], 'core', 'setd', &savedPSN);
+ }
+ ITDebugLog(@"Setting repeat mode to %c done", m00f);
+ return YES;