Updated to version 1.6.5
[MenuTunes.git] / MenuController.m
index 382e6f2..ea2e1a8 100755 (executable)
@@ -63,7 +63,7 @@
     NS_HANDLER
         [[MainController sharedController] networkError:localException];
     NS_ENDHANDLER
-    
+       
     ITDebugLog(@"Reset menu if required.");
     
     //Kill the old submenu items
                     keyEquivalent:@""];
             [tempItem setSubmenu:_upcomingSongsMenu];
             [tempItem setTag:2];
-            if (_playingRadio || !_currentPlaylist) {
+            if (_playingRadio || _currentPlaylist < 1) {
                 [tempItem setEnabled:NO];
             }
         } else if ([nextObject isEqualToString:@"artists"]) {
     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 = YES;
+                               
+                               //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];
                     [songItem setTag:i];
                     [songItem setTarget:self];
                 } else {
-                    break;
-                }
+                                       numSongsInAdvance++;
+                               }
             }
         }
         
                        [tempItem setTag:p + [nextNode index] + 1];
                        [tempItem setTarget:self];
                }
+               
+               PlaylistNode *root = node;
+               while ([root type] == ITMTPlaylistNode || [root type] == ITMTFolderNode) {
+                       root = [root parent];
+               }
+               
+               if ([root index] == [[[MainController sharedController] currentRemote] currentSourceIndex] && [nextNode index] == _currentPlaylist) {
+                       [tempItem setState:NSOnState];
+               }
        }
 }
 
             if (source == ITMTRemoteRadioSource) {
                 [playlistsMenu addItem:[NSMenuItem separatorItem]];
                 [[playlistsMenu addItemWithTitle:NSLocalizedString(@"radio", @"Radio") action:@selector(performPlaylistMenuAction:) keyEquivalent:@""] setState:NSOnState];
-            }
-        } else {
-            [playlistsMenu addItem:[NSMenuItem separatorItem]];
+            } else if ([playlists count] > 2) {
+                               [playlistsMenu addItem:[NSMenuItem separatorItem]];
+                       }
         }
                
                //Add other sources as needed (shared music, iPods, CDs)
-        for (i = 2; i < [playlists count]; i++) {
+        for (i = [playlists count] - 1; i > 1 ; i--) {
             PlaylistNode *nextSource = [playlists objectAtIndex:i];
             if ([nextSource type] != ITMTRemoteRadioSource) {
                 NSString *name = [nextSource name];
             }
         }
     }
-    ITDebugLog(@"Checking the current source.");
        NS_DURING
        if (_currentPlaylist != -1) {
                if ( (source == ITMTRemoteSharedLibrarySource) || (source == ITMTRemoteiPodSource) || (source == ITMTRemoteGenericDeviceSource) || (source == ITMTRemoteCDSource) ) {
                        tempItem = [playlistsMenu itemAtIndex:[playlistsMenu numberOfItems] + [indices indexOfObject:[NSNumber numberWithInt:[[[MainController sharedController] currentRemote] currentSourceIndex]]] - [indices count]];
                        [tempItem setState:NSOnState];
-                       [[[tempItem submenu] itemAtIndex:_currentPlaylist - 1] setState:NSOnState];
-               } else if (source == ITMTRemoteLibrarySource && _currentPlaylist) {
-                       [[playlistsMenu itemAtIndex:_currentPlaylist - 1] setState:NSOnState];
                }
        }
        NS_HANDLER