Added a songEnabledAtIndex: method to ITMTRemote.
[MenuTunes.git] / MenuController.m
index 7c418be..36b112b 100755 (executable)
@@ -63,7 +63,7 @@
     NS_HANDLER
         [[MainController sharedController] networkError:localException];
     NS_ENDHANDLER
     NS_HANDLER
         [[MainController sharedController] networkError:localException];
     NS_ENDHANDLER
-    
+       
     ITDebugLog(@"Reset menu if required.");
     
     //Kill the old submenu items
     ITDebugLog(@"Reset menu if required.");
     
     //Kill the old submenu items
                     keyEquivalent:@""];
             [tempItem setSubmenu:_upcomingSongsMenu];
             [tempItem setTag:2];
                     keyEquivalent:@""];
             [tempItem setSubmenu:_upcomingSongsMenu];
             [tempItem setTag:2];
-            if (_playingRadio || !_currentPlaylist) {
+            if (_playingRadio || _currentPlaylist < 1) {
                 [tempItem setEnabled:NO];
             }
         } else if ([nextObject isEqualToString:@"artists"]) {
                 [tempItem setEnabled:NO];
             }
         } else if ([nextObject isEqualToString:@"artists"]) {
     if (_currentPlaylist && !_playingRadio) {
         if (numSongs > 0) {
             int i;
     if (_currentPlaylist && !_playingRadio) {
         if (numSongs > 0) {
             int i;
-            for (i = _currentTrack + 1; i <= _currentTrack + numSongsInAdvance; i++) {
-                if (i <= numSongs) {
+            for (i = _currentTrack + 1; i <= _currentTrack + numSongsInAdvance && i <= numSongs; i++) {
+                               BOOL enabled;
+                               
+                               //Check if the song at this index is enabled for playback. If it isn't, skip over it
+                               NS_DURING
+                                       enabled = [[[MainController sharedController] currentRemote] songEnabledAtIndex:i];
+                               NS_HANDLER
+                                       [[MainController sharedController] networkError:localException];
+                               NS_ENDHANDLER
+                               
+                if (enabled) {
                     NSString *curSong = nil;
                     NS_DURING
                         curSong = [[[MainController sharedController] currentRemote] songTitleAtIndex:i];
                     NSString *curSong = nil;
                     NS_DURING
                         curSong = [[[MainController sharedController] currentRemote] songTitleAtIndex:i];
                     [songItem setTag:i];
                     [songItem setTarget:self];
                 } else {
                     [songItem setTag:i];
                     [songItem setTarget:self];
                 } else {
-                    break;
-                }
+                                       numSongsInAdvance++;
+                               }
             }
         }
         
             }
         }