X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/28ef52fed0fa8f1d49c604cabe52b846bf01d393..c95139297fabbb92c3ddfbc64c673e0a37e1b160:/iTunesRemote.m diff --git a/iTunesRemote.m b/iTunesRemote.m index 3c1ce75..ad8a4b8 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -65,12 +65,19 @@ - (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]; - // set visible of browser window 1 to true + //If not minimized and visible + if ( ([[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:'prop', want:type('prop'), seld:type('pMin'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] == 0) && + ([[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:'prop', want:type('prop'), seld:type('pvis'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] != 0) && + [[[[NSWorkspace sharedWorkspace] activeApplication] objectForKey:@"NSApplicationName"] isEqualToString:@"iTunes"] ) { + //set minimized of browser window 1 to true + [[ITAppleEventCenter sharedCenter] sendAEWithSendString:@"data:long(1), '----':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]; + } else { + //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]; + } + //set visible of browser window 1 to true [[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. + //active iTunes [[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; @@ -123,7 +130,7 @@ return ITMTRemotePlayerStopped; } -- (NSArray *)playlists +/*- (NSArray *)playlists { long i = 0; const signed long numPlaylists = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"kocl:type('cPly'), '----':()" eventClass:@"core" eventID:@"cnte" appPSN:savedPSN]; @@ -136,10 +143,10 @@ [playlists addObject:theObj]; } return [playlists autorelease]; -} +}*/ //Full source awareness -/*- (NSArray *)playlists +- (NSArray *)playlists { unsigned long i,k; const signed long numSources = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"kocl:type('cSrc'), '----':()" eventClass:@"core" eventID:@"cnte" appPSN:savedPSN]; NSMutableArray *allSources = [[NSMutableArray alloc] init]; @@ -152,7 +159,6 @@ NSNumber *sourceClass; NSMutableArray *aSource = [[NSMutableArray alloc] init]; [aSource addObject:sourceName]; - switch (fourcc) { case 'kTun': sourceClass = [NSNumber numberWithInt:ITMTRemoteRadioSource]; @@ -176,19 +182,20 @@ sourceClass = [NSNumber numberWithInt:ITMTRemoteLibrarySource]; break; } - + ITDebugLog(@"Adding source %@ of type %i", sourceName, [sourceClass intValue]); [aSource addObject:sourceClass]; for (i = 1; i <= numPlaylists; i++) { NSString *sendStr = [NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cPly'), seld:long(%u), from:obj { form:'indx', want:type('cSrc'), seld:long(%u), from:() } } }",i,k]; NSString *theObj = [[ITAppleEventCenter sharedCenter] sendAEWithSendString:sendStr eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; + ITDebugLog(@" - Adding playlist %@", theObj); [aSource addObject:theObj]; } [allSources addObject:aSource]; [aSource release]; } ITDebugLog(@"Finished getting playlists."); - return [NSArray arrayWithArray:[allSources autorelease]]; -}*/ + return [allSources autorelease]; +} - (int)numberOfSongsInPlaylistAtIndex:(int)index { @@ -315,6 +322,9 @@ { int temp1; ITDebugLog(@"Getting current song index."); + + if ([self currentSource] == ITMTRemoteRadioSource) + temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; ITDebugLog(@"Getting current song index done."); return temp1; @@ -324,7 +334,18 @@ { NSString *temp1; ITDebugLog(@"Getting current song title."); - temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pnam" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; + + //If we're listening to the radio. + if ([[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pcls" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] == 'cURT') { + NSString *bad = [NSString stringWithUTF8String:"浳湧"]; + temp1 = [[ITAppleEventCenter sharedCenter] sendAEWithRequestedKey:@"pStT" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; + if ([temp1 isEqualToString:bad]) { + temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pnam" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; + } + temp1 = [temp1 stringByAppendingString:@" (Stream)"]; + } else { + temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pnam" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; + } ITDebugLog(@"Getting current song title done."); return ( ([temp1 length]) ? temp1 : nil ) ; } @@ -417,12 +438,9 @@ - (NSImage *)currentSongAlbumArt { - NSAppleScript *script; - NSAppleEventDescriptor *moof; - NSData *data; - script = [[NSAppleScript alloc] initWithSource:@"tell application \"iTunes\"\nget data of artwork 1 of current track\nend tell"]; - moof = [script executeAndReturnError:nil]; - data = [moof data]; + ITDebugLog(@"Getting current song album art."); + NSData *data = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForData:@"'----':obj { form:'prop', want:type('prop'), seld:type('pPCT'), from:obj { form:'indx', want:type('cArt'), seld:long(1), from:obj { form:'prop', want:type('prop'), seld:type('pTrk'), from:'null'() } } }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; + ITDebugLog(@"Getting current song album art done."); if (data) { return [[[NSImage alloc] initWithData:data] autorelease]; } else {