From 775df65cfdd7c0d32917a5b9b1ffb5923b1297d7 Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Sun, 25 Jul 2004 16:42:08 +0000 Subject: [PATCH] Added the albums menu --- MenuController.h | 2 +- MenuController.m | 56 ++++++++++++++++++++++++++++++++++------- PreferencesController.m | 2 ++ 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/MenuController.h b/MenuController.h index c9769f3..fda5e5e 100755 --- a/MenuController.h +++ b/MenuController.h @@ -42,7 +42,7 @@ typedef enum { { NSMutableArray *_menuLayout; NSMenu *_currentMenu; - NSMenu *_ratingMenu, *_upcomingSongsMenu, *_eqMenu, *_playlistsMenu, *_artistsMenu; //Submenus + NSMenu *_ratingMenu, *_upcomingSongsMenu, *_eqMenu, *_playlistsMenu, *_artistsMenu, *_albumsMenu; //Submenus int _currentPlaylist, _currentTrack; BOOL _playingRadio; diff --git a/MenuController.m b/MenuController.m index 88a94ba..2bd03d1 100755 --- a/MenuController.m +++ b/MenuController.m @@ -22,6 +22,7 @@ - (NSMenu *)playlistsMenu; - (NSMenu *)eqMenu; - (NSMenu *)artistsMenu; +- (NSMenu *)albumsMenu; - (void)setKeyEquivalentForCode:(short)code andModifiers:(long)modifiers onItem:(id )item; - (BOOL)iPodWithNameAutomaticallyUpdates:(NSString *)name; @@ -88,6 +89,11 @@ [tempItem setSubmenu:nil]; } + if ( (tempItem = [_currentMenu itemWithTag:6]) ) { + ITDebugLog(@"Removing \"Albums\" submenu."); + [tempItem setSubmenu:nil]; + } + ITDebugLog(@"Begin building menu."); //create our menu @@ -439,11 +445,13 @@ keyEquivalent:@""]; [tempItem setSubmenu:_artistsMenu]; [tempItem setTag:5]; - - itemEnum = [[_eqMenu itemArray] objectEnumerator]; - while ( (tempItem = [itemEnum nextObject]) ) { - [tempItem setState:NSOffState]; - } + } else if ([nextObject isEqualToString:@"albums"]) { + ITDebugLog(@"Add \"Albums\" submenu."); + tempItem = [menu addItemWithTitle:NSLocalizedString(@"albums", @"Albums") + action:nil + keyEquivalent:@""]; + [tempItem setSubmenu:_albumsMenu]; + [tempItem setTag:6]; } } ITDebugLog(@"Finished building menu."); @@ -520,6 +528,13 @@ ITDebugLog(@"Beginning Rebuild of \"Artists\" submenu."); _artistsMenu = [self artistsMenu]; } + + if ([menu containsObject:@"albums"]) { + ITDebugLog(@"Releasing albums menu"); + [_albumsMenu release]; + ITDebugLog(@"Beginning Rebuild of \"Albums\" submenu."); + _albumsMenu = [self albumsMenu]; + } ITDebugLog(@"Done rebuilding all of the submenus."); } @@ -765,8 +780,9 @@ NS_DURING artistsEnumerator = [[[[MainController sharedController] currentRemote] artists] objectEnumerator]; while ( (nextArtist = [artistsEnumerator nextObject]) ) { - tempItem = [artistsMenu addItemWithTitle:nextArtist action:@selector(performArtistsMenuAction:) keyEquivalent:@""]; + tempItem = [artistsMenu addItemWithTitle:nextArtist action:@selector(performBrowseMenuAction:) keyEquivalent:@""]; [tempItem setRepresentedObject:nextArtist]; + [tempItem setTag:1]; [tempItem setTarget:self]; } NS_HANDLER @@ -776,6 +792,28 @@ return artistsMenu; } +- (NSMenu *)albumsMenu +{ + NSMenu *albumsMenu = [[NSMenu alloc] initWithTitle:@""]; + NSEnumerator *albumsEnumerator; + NSString *nextAlbum; + id tempItem; + ITDebugLog(@"Building \"Albums\" menu."); + NS_DURING + albumsEnumerator = [[[[MainController sharedController] currentRemote] albums] objectEnumerator]; + while ( (nextAlbum = [albumsEnumerator nextObject]) ) { + tempItem = [albumsMenu addItemWithTitle:nextAlbum action:@selector(performBrowseMenuAction:) keyEquivalent:@""]; + [tempItem setRepresentedObject:nextAlbum]; + [tempItem setTag:2]; + [tempItem setTarget:self]; + } + NS_HANDLER + [[MainController sharedController] networkError:localException]; + NS_ENDHANDLER + ITDebugLog(@"Done Building \"Albums\" menu"); + return albumsMenu; +} + - (void)performMainMenuAction:(id)sender { switch ( [sender tag] ) @@ -846,15 +884,15 @@ [[MainController sharedController] selectSongAtIndex:[sender tag]]; } -- (void)performArtistsMenuAction:(id)sender +- (void)performBrowseMenuAction:(id)sender { - ITDebugLog(@"Artist action selected on item with object %i", [sender representedObject]); + ITDebugLog(@"Browse action selected on item with object %@ and tag %i", [sender representedObject], [sender tag]); /* ** 1 - Artist ** 2 - Album ** 3 - Genre? */ - [[MainController sharedController] makePlaylistWithTerm:[sender representedObject] ofType:1]; + [[MainController sharedController] makePlaylistWithTerm:[sender representedObject] ofType:[sender tag]]; } - (void)updateMenu diff --git a/PreferencesController.m b/PreferencesController.m index ccc9467..7e953d9 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -740,6 +740,7 @@ static PreferencesController *prefs = nil; @"upcomingSongs", @"playlists", @"artists", + @"albums", @"eqPresets", @"songRating", @"playPause", @@ -767,6 +768,7 @@ static PreferencesController *prefs = nil; @"upcomingSongs", @"playlists", @"artists", + @"albums", @"eqPresets", @"songRating", nil]; -- 2.20.1