X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/62c12e7f7c182a22969de8ebb233db31d9965454..a9675e29f56fa57c2235b051669ea435bf8d0980:/iTunesRemote.m diff --git a/iTunesRemote.m b/iTunesRemote.m index 397353c..d11a29a 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -166,41 +166,49 @@ const signed long numPlaylists = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:[NSString stringWithFormat:@"kocl:type('cPly'), '----':obj { form:'indx', want:type('cSrc'), seld:long(%u), from:() }",k] eventClass:@"core" eventID:@"cnte" appPSN:savedPSN]; unsigned long fourcc = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pKnd'), from:obj { form:'indx', want:type('cSrc'), seld:long(%u), from:() } }",k] eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; NSString *sourceName = [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cSrc'), seld:long(%u), from:() } }",k] eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; + unsigned long index = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pidx'), from:obj { form:'indx', want:type('cSrc'), seld:long(%u), from:() } }",k] eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; unsigned long class; - NSMutableArray *aSource = [[NSMutableArray alloc] init]; - [aSource addObject:[[sourceName copy] autorelease]]; - switch (fourcc) { - case 'kTun': - class = ITMTRemoteRadioSource; - break; - case 'kDev': - class = ITMTRemoteGenericDeviceSource; - break; - case 'kPod': - class = ITMTRemoteiPodSource; - break; - case 'kMCD': - case 'kACD': - class = ITMTRemoteCDSource; - break; - case 'kShd': - class = ITMTRemoteSharedLibrarySource; - break; - case 'kUnk': - case 'kLib': - default: - class = ITMTRemoteLibrarySource; - break; - } - ITDebugLog(@"Adding source %@ of type %i", sourceName, class); - [aSource addObject:[NSNumber numberWithInt:class]]; - 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 copy] autorelease]]; + if (sourceName) { + NSMutableArray *aSource = [[NSMutableArray alloc] init]; + [aSource addObject:[[sourceName copy] autorelease]]; + switch (fourcc) { + case 'kTun': + class = ITMTRemoteRadioSource; + break; + case 'kDev': + class = ITMTRemoteGenericDeviceSource; + break; + case 'kPod': + class = ITMTRemoteiPodSource; + break; + case 'kMCD': + case 'kACD': + class = ITMTRemoteCDSource; + break; + case 'kShd': + class = ITMTRemoteSharedLibrarySource; + break; + case 'kUnk': + case 'kLib': + default: + class = ITMTRemoteLibrarySource; + break; + } + ITDebugLog(@"Adding source %@ of type %i at index %i", sourceName, class, index); + [aSource addObject:[NSNumber numberWithInt:class]]; + [aSource addObject:[NSNumber numberWithInt:index]]; + 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); + if (theObj) { + [aSource addObject:[[theObj copy] autorelease]]; + } + } + [allSources addObject:[aSource autorelease]]; + } else { + ITDebugLog(@"Source at index %i disappeared.", k); } - [allSources addObject:[aSource autorelease]]; } ITDebugLog(@"Finished getting playlists."); return [allSources autorelease];