- NSNumber *sourceClass;
- NSMutableArray *aSource = [[NSMutableArray alloc] init];
- [aSource addObject:sourceName];
- switch (fourcc) {
- case 'kTun':
- sourceClass = [NSNumber numberWithInt:ITMTRemoteRadioSource];
- break;
- case 'kDev':
- sourceClass = [NSNumber numberWithInt:ITMTRemoteGenericDeviceSource];
- break;
- case 'kPod':
- sourceClass = [NSNumber numberWithInt:ITMTRemoteiPodSource];
- break;
- case 'kMCD':
- case 'kACD':
- sourceClass = [NSNumber numberWithInt:ITMTRemoteCDSource];
- break;
- case 'kShd':
- sourceClass = [NSNumber numberWithInt:ITMTRemoteSharedLibrarySource];
- break;
- case 'kUnk':
- case 'kLib':
- default:
- 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];
+ 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;
+ 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);