Moving radio bug fixing to iTunes remote, and updated MenuController.
authorJoseph Spiros <joseph.spiros@ithinksw.com>
Wed, 1 Oct 2003 15:49:11 +0000 (15:49 +0000)
committerJoseph Spiros <joseph.spiros@ithinksw.com>
Wed, 1 Oct 2003 15:49:11 +0000 (15:49 +0000)
MenuController.m
iTunesRemote.m

index edf7fb3..c157903 100755 (executable)
                         [menu addItemWithTitle:title action:nil keyEquivalent:@""]];
                 }
                 
                         [menu addItemWithTitle:title action:nil keyEquivalent:@""]];
                 }
                 
-                if (!_playingRadio) {
                     if ([defaults boolForKey:@"showAlbum"]) {
                         NSString *curAlbum = [currentRemote currentSongAlbum];
                         ITDebugLog(@"Add Track Album (\"%@\") menu item.", curAlbum);
                     if ([defaults boolForKey:@"showAlbum"]) {
                         NSString *curAlbum = [currentRemote currentSongAlbum];
                         ITDebugLog(@"Add Track Album (\"%@\") menu item.", curAlbum);
                     if ([defaults boolForKey:@"showTrackNumber"]) {
                         int track = [currentRemote currentSongTrack];
                         ITDebugLog(@"Add Track Number (\"Track %i\") menu item.", track);
                     if ([defaults boolForKey:@"showTrackNumber"]) {
                         int track = [currentRemote currentSongTrack];
                         ITDebugLog(@"Add Track Number (\"Track %i\") menu item.", track);
-                        if ( track ) {
+                        if ( track > 0 ) {
                             [menu indentItem:
                                 [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %i", NSLocalizedString(@"track", @"Track"), track] action:nil keyEquivalent:@""]];
                         }
                     }
                     
                             [menu indentItem:
                                 [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %i", NSLocalizedString(@"track", @"Track"), track] action:nil keyEquivalent:@""]];
                         }
                     }
                     
-                    if ([defaults boolForKey:@"showTime"]) {
-                        int left = [[currentRemote currentSongElapsed] intValue];
-                        NSString *elapsed = [NSString stringWithFormat:@"%i:%02i", left / 60, left % 60];
-                        ITDebugLog(@"Add Track Elapsed (\"%@/%@\") menu item.", elapsed, [currentRemote currentSongLength]);
-                        [menu indentItem:[menu addItemWithTitle:[NSString stringWithFormat:@"%@/%@", elapsed, [currentRemote currentSongLength]] action:nil keyEquivalent:@""]];
+                    if ([defaults boolForKey:@"showTime"] && ( ([currentRemote currentSongElapsed] != nil) || ([currentRemote currentSongLength] != nil) )) {
+                        ITDebugLog(@"Add Track Elapsed (\"%@/%@\") menu item.", [currentRemote currentSongElapsed], [currentRemote currentSongLength]);
+                        [menu indentItem:[menu addItemWithTitle:[NSString stringWithFormat:@"%@/%@", [currentRemote currentSongElapsed], [currentRemote currentSongLength]] action:nil keyEquivalent:@""]];
                     }
                     
                     }
                     
-                    if ([defaults boolForKey:@"showTrackRating"]) {
+                    if ([defaults boolForKey:@"showTrackRating"] && ( [currentRemote currentSongRating] != -1.0 )) {
                         NSString *string = nil;
                         switch ((int)([currentRemote currentSongRating] * 5)) {
                             case 0:
                         NSString *string = nil;
                         switch ((int)([currentRemote currentSongRating] * 5)) {
                             case 0:
                         ITDebugLog(@"Add Track Rating (\"%@\") menu item.", string);
                         [menu indentItem:[menu addItemWithTitle:string action:nil keyEquivalent:@""]];
                     }
                         ITDebugLog(@"Add Track Rating (\"%@\") menu item.", string);
                         [menu indentItem:[menu addItemWithTitle:string action:nil keyEquivalent:@""]];
                     }
-                }
+                
             } else {
                 ITDebugLog(@"No Track is Playing, Add \"No Song\" menu item.");
                 [menu addItemWithTitle:NSLocalizedString(@"noSong", @"No Song") action:NULL keyEquivalent:@""];
             } else {
                 ITDebugLog(@"No Track is Playing, Add \"No Song\" menu item.");
                 [menu addItemWithTitle:NSLocalizedString(@"noSong", @"No Song") action:NULL keyEquivalent:@""];
                 [tempItem setState:NSOffState];
             }
             [[_eqMenu itemAtIndex:([currentRemote currentEQPresetIndex] - 1)] setState:NSOnState];
                 [tempItem setState:NSOffState];
             }
             [[_eqMenu itemAtIndex:([currentRemote currentEQPresetIndex] - 1)] setState:NSOnState];
-        }
-        
-        if (!_playingRadio) {
-            if ([nextObject isEqualToString:@"songRating"]) {
+        } else if ([nextObject isEqualToString:@"songRating"] && ( [currentRemote currentSongRating] != -1 )) {
                 ITDebugLog(@"Add \"Song Rating\" submenu.");
                 tempItem = [menu addItemWithTitle:NSLocalizedString(@"songRating", @"Song Rating")
                         action:nil
                 ITDebugLog(@"Add \"Song Rating\" submenu.");
                 tempItem = [menu addItemWithTitle:NSLocalizedString(@"songRating", @"Song Rating")
                         action:nil
                 }
             }
         }
                 }
             }
         }
-    }
     ITDebugLog(@"Finished building menu.");
     [_currentMenu release];
     _currentMenu = menu;
     ITDebugLog(@"Finished building menu.");
     [_currentMenu release];
     _currentMenu = menu;
index f197b97..d501091 100755 (executable)
     int temp1;
     ITDebugLog(@"Getting current album track count.");
     temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrC" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
     int temp1;
     ITDebugLog(@"Getting current album track count.");
     temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrC" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+    if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { temp1 = 0; }
     ITDebugLog(@"Getting current album track count done.");
     return temp1;
 }
     ITDebugLog(@"Getting current album track count done.");
     return temp1;
 }
     int temp1;
     ITDebugLog(@"Getting current song track.");
     temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrN" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
     int temp1;
     ITDebugLog(@"Getting current song track.");
     temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrN" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+    if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { temp1 = 0; }
     ITDebugLog(@"Getting current song track done.");
     return temp1;
 }
     ITDebugLog(@"Getting current song track done.");
     return temp1;
 }
 {
     NSString *temp1;
     ITDebugLog(@"Getting current song artist.");
 {
     NSString *temp1;
     ITDebugLog(@"Getting current song artist.");
-    temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pArt" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+    if ( [self currentPlaylistClass] != ITMTRemotePlayerRadioPlaylist ) {
+        temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pArt" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+    } else {
+        temp1 = @"";
+    }
     ITDebugLog(@"Getting current song artist done.");
     return ( ([temp1 length]) ? temp1 : nil ) ;
 }
     ITDebugLog(@"Getting current song artist done.");
     return ( ([temp1 length]) ? temp1 : nil ) ;
 }
 {
     NSString *temp1;
     ITDebugLog(@"Getting current song album.");
 {
     NSString *temp1;
     ITDebugLog(@"Getting current song album.");
-    temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pAlb" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+    if ( [self currentPlaylistClass] != ITMTRemotePlayerRadioPlaylist ) {
+        temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pAlb" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+    } else {
+        temp1 = @"";
+    }
     ITDebugLog(@"Getting current song album done.");
     return ( ([temp1 length]) ? temp1 : nil ) ;
 }
     ITDebugLog(@"Getting current song album done.");
     return ( ([temp1 length]) ? temp1 : nil ) ;
 }
     NSString *temp1;
     ITDebugLog(@"Getting current song length.");
     temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pTim" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
     NSString *temp1;
     ITDebugLog(@"Getting current song length.");
     temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pTim" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+    if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { temp1 = nil; }
     ITDebugLog(@"Getting current song length done.");
     return temp1;
 }
     ITDebugLog(@"Getting current song length done.");
     return temp1;
 }
     final = duration - current;
     finalString = [self formatTimeInSeconds:final];
     
     final = duration - current;
     finalString = [self formatTimeInSeconds:final];
     
+    if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { finalString = nil; }
+    
     ITDebugLog(@"Getting current song remaining time done.");
     
     return finalString;
     ITDebugLog(@"Getting current song remaining time done.");
     
     return finalString;
                         sendAEWithRequestedKeyForNumber:@"pPos" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
                         
     finalString = [self formatTimeInSeconds:final];
                         sendAEWithRequestedKeyForNumber:@"pPos" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
                         
     finalString = [self formatTimeInSeconds:final];
+    if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { finalString = nil; }
     ITDebugLog(@"Getting current song elapsed time done.");
     return finalString;
 }
     ITDebugLog(@"Getting current song elapsed time done.");
     return finalString;
 }
     ITDebugLog(@"Getting current song rating.");
     temp1 = ((float)[[ITAppleEventCenter sharedCenter]
                 sendTwoTierAEWithRequestedKeyForNumber:@"pRte" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] / 100.0);
     ITDebugLog(@"Getting current song rating.");
     temp1 = ((float)[[ITAppleEventCenter sharedCenter]
                 sendTwoTierAEWithRequestedKeyForNumber:@"pRte" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] / 100.0);
+    if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { temp1 = -1.0; }
     ITDebugLog(@"Getting current song rating done.");
     return temp1;
 }
     ITDebugLog(@"Getting current song rating done.");
     return temp1;
 }
 - (BOOL)setCurrentSongRating:(float)rating
 {
     ITDebugLog(@"Setting current song rating to %f.", rating);
 - (BOOL)setCurrentSongRating:(float)rating
 {
     ITDebugLog(@"Setting current song rating to %f.", rating);
+    if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { return NO; }
     [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pRte'), from:obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }",(long)(rating*100),[self currentSongIndex]] eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
     ITDebugLog(@"Setting current song rating to %f done.", rating);
     return YES;
     [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pRte'), from:obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }",(long)(rating*100),[self currentSongIndex]] eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
     ITDebugLog(@"Setting current song rating to %f done.", rating);
     return YES;