Merge branch 'master' of git://github.com/ksuther/MenuTunes
[MenuTunes.git] / MenuController.m
index 7c418be..6778abb 100755 (executable)
@@ -1,11 +1,3 @@
-//
-//  MenuController.m
-//  MenuTunes
-//
-//  Created by Joseph Spiros on Wed Apr 30 2003.
-//  Copyright (c) 2003 iThink Software. All rights reserved.
-//
-
 #import "MenuController.h"
 #import "MainController.h"
 #import "NetworkController.h"
@@ -63,7 +55,7 @@
     NS_HANDLER
         [[MainController sharedController] networkError:localException];
     NS_ENDHANDLER
-    
+       
     ITDebugLog(@"Reset menu if required.");
     
     //Kill the old submenu items
             [tempItem setTag:MTMenuAboutItem];
             [tempItem setTarget:self];
                } else if ([nextObject isEqualToString:@"quit"]) {
-            if ([[MainController sharedController] blingBling] == NO) {
-                ITDebugLog(@"Add \"Register MenuTunes...\" menu item.");
-                tempItem = [menu addItemWithTitle:NSLocalizedString(@"register", @"Register MenuTunes...") action:@selector(performMainMenuAction:) keyEquivalent:@""];
-                [tempItem setTag:MTMenuRegisterItem];
-                [tempItem setTarget:self];
-            }
             ITDebugLog(@"Add \"Quit\" menu item.");
             tempItem = [menu addItemWithTitle:NSLocalizedString(@"quit", @"Quit")
                     action:@selector(performMainMenuAction:)
                     keyEquivalent:@""];
             [tempItem setSubmenu:_upcomingSongsMenu];
             [tempItem setTag:2];
-            if (_playingRadio || !_currentPlaylist) {
+            if (_playingRadio || _currentPlaylist < 1) {
                 [tempItem setEnabled:NO];
             }
         } else if ([nextObject isEqualToString:@"artists"]) {
     tempItem = [menu addItemWithTitle:NSLocalizedString(@"preferences", @"Preferences...") action:@selector(performMainMenuAction:) keyEquivalent:@""];
     [tempItem setTag:MTMenuPreferencesItem];
     [tempItem setTarget:self];
-    if ([[MainController sharedController] blingBling] == NO) {
-        ITDebugLog(@"Add \"Register MenuTunes...\" menu item.");
-        tempItem = [menu addItemWithTitle:NSLocalizedString(@"register", @"Register MenuTunes...") action:@selector(performMainMenuAction:) keyEquivalent:@""];
-        [tempItem setTag:MTMenuRegisterItem];
-        [tempItem setTarget:self];
-    }
     ITDebugLog(@"Add \"Quit\" menu item.");
     tempItem = [menu addItemWithTitle:NSLocalizedString(@"quit", @"Quit") action:@selector(performMainMenuAction:) keyEquivalent:@""];
     [tempItem setTag:MTMenuQuitItem];
     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++;
+                               }
             }
         }
         
             ITDebugLog(@"Performing Menu Action: Quit");
             [[MainController sharedController] quitMenuTunes];
             break;
-        case MTMenuRegisterItem:
-            ITDebugLog(@"Performing Menu Action: Register");
-            [[MainController sharedController] blingNow];
-            break;
         default:
             ITDebugLog(@"Performing Menu Action: Unimplemented Menu Item OR Child-bearing Menu Item");
             break;