-//
-// 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"
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++;
+ }
}
}
[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
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;