NSString *nextObject;
NSMenuItem *tempItem;
- //Get the current playlist, track index, etc.
- currentRemote = [[MainController sharedController] currentRemote];
+ //Get the information
_currentPlaylist = [currentRemote currentPlaylistIndex];
- _currentTrack = [currentRemote currentSongIndex];
_playingRadio = ([currentRemote currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist);
+ //Kill the old submenu items
+ if ( (tempItem = [_currentMenu itemWithTag:1]) ) {
+ [tempItem setSubmenu:nil];
+ }
+
+ if ( (tempItem = [_currentMenu itemWithTag:2]) ) {
+ [tempItem setSubmenu:nil];
+ }
+
+ if ( (tempItem = [_currentMenu itemWithTag:3]) ) {
+ [tempItem setSubmenu:nil];
+ }
+
+ if ( (tempItem = [_currentMenu itemWithTag:4]) ) {
+ [tempItem setSubmenu:nil];
+ }
+
//create our menu
while ( (nextObject = [enumerator nextObject]) ) {
//Main menu items
tempItem = [menu addItemWithTitle:@"Song Rating"
action:nil
keyEquivalent:@""];
- [tempItem setSubmenu:[self ratingMenu]];
+ [tempItem setSubmenu:_ratingMenu];
+ [tempItem setTag:1];
if (_playingRadio || !_currentPlaylist) {
[tempItem setEnabled:NO];
}
tempItem = [menu addItemWithTitle:@"Upcoming Songs"
action:nil
keyEquivalent:@""];
- [tempItem setSubmenu:[self upcomingSongsMenu]];
+ [tempItem setSubmenu:_upcomingSongsMenu];
+ [tempItem setTag:2];
if (_playingRadio || !_currentPlaylist) {
[tempItem setEnabled:NO];
}
tempItem = [menu addItemWithTitle:@"Playlists"
action:nil
keyEquivalent:@""];
- [tempItem setSubmenu:[self playlistsMenu]];
+ [tempItem setSubmenu:_playlistsMenu];
+ [tempItem setTag:3];
} else if ([nextObject isEqualToString:@"EQ Presets"]) {
tempItem = [menu addItemWithTitle:@"EQ Presets"
action:nil
keyEquivalent:@""];
- [tempItem setSubmenu:[self eqMenu]];
+ [tempItem setSubmenu:_eqMenu];
+ [tempItem setTag:4];
}
}
-
[_currentMenu release];
_currentMenu = menu;
return _currentMenu;
return [menu autorelease];
}
+- (void)rebuildSubmenus
+{
+ currentRemote = [[MainController sharedController] currentRemote];
+ _currentPlaylist = [currentRemote currentPlaylistIndex];
+ _currentTrack = [currentRemote currentSongIndex];
+ _playingRadio = ([currentRemote currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist);
+
+ [_ratingMenu release];
+ [_upcomingSongsMenu release];
+ [_playlistsMenu release];
+ [_eqMenu release];
+ _ratingMenu = [self ratingMenu];
+ _upcomingSongsMenu = [self upcomingSongsMenu];
+ _playlistsMenu = [self playlistsMenu];
+ _eqMenu = [self eqMenu];
+}
+
- (NSMenu *)ratingMenu
{
NSMenu *ratingMenu = [[NSMenu alloc] initWithTitle:@""];
-
if (_currentPlaylist && !_playingRadio) {
NSEnumerator *itemEnum;
id anItem;
itemTag += 20;
}
}
-
- return [ratingMenu autorelease];
+ return ratingMenu;
}
- (NSMenu *)upcomingSongsMenu
}
}
}
- return [upcomingSongsMenu autorelease];
+ return upcomingSongsMenu;
}
- (NSMenu *)playlistsMenu
if (!_playingRadio && _currentPlaylist) {
[[playlistsMenu itemAtIndex:_currentPlaylist - 1] setState:NSOnState];
}
- return [playlistsMenu autorelease];
+ return playlistsMenu;
}
- (NSMenu *)eqMenu
}
}
[[eqMenu itemAtIndex:([currentRemote currentEQPresetIndex] - 1)] setState:NSOnState];
- return [eqMenu autorelease];
+ return eqMenu;
}
- (void)performMainMenuAction:(id)sender
}
}
-@end
+@end
\ No newline at end of file