From 5f3aa6959c1903bcb1194b9d0ec24d33906e4f9d Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Fri, 9 May 2003 19:41:33 +0000 Subject: [PATCH] Added more the MenuController. All of the main menu things are added in now. --- MainController.m | 20 +++------ MenuController.h | 1 + MenuController.m | 98 ++++++++++++++++++++++++++++++++++++----- PreferencesController.m | 8 ++-- 4 files changed, 96 insertions(+), 31 deletions(-) diff --git a/MainController.m b/MainController.m index eb48f5a..3cf10ab 100755 --- a/MainController.m +++ b/MainController.m @@ -156,7 +156,6 @@ static MainController *sharedController; if ( ( [self songChanged] ) || ( ([self radioIsPlaying]) && (latestPlaylistClass != ITMTRemotePlayerRadioPlaylist) ) || ( (! [self radioIsPlaying]) && (latestPlaylistClass == ITMTRemotePlayerRadioPlaylist) ) ) { - //[statusItem setMenu:[self menu]]; [self setLatestSongIdentifier:[currentRemote currentSongUniqueIdentifier]]; latestPlaylistClass = [currentRemote currentPlaylistClass]; @@ -164,22 +163,15 @@ static MainController *sharedController; [self showCurrentTrackInfo]; } } -/* - //Update Play/Pause menu item - if (playPauseItem){ - if ([currentRemote playerPlayingState] == ITMTRemotePlayerPlaying) { - [playPauseItem setTitle:@"Pause"]; - } else { - [playPauseItem setTitle:@"Play"]; - } - } -*/ } - (void)menuClicked { - [statusItem setMenu:[menuController menu]]; - NSLog(@"The menu was clix0r3d, do something!"); + if ([currentRemote playerRunningState] == ITMTRemotePlayerRunning) { + [statusItem setMenu:[menuController menu]]; + } else { + [statusItem setMenu:[menuController menuForNoPlayer]]; + } } // @@ -474,8 +466,6 @@ static MainController *sharedController; refreshTimer = nil; [self clearHotKeys]; playerRunningState = ITMTRemotePlayerNotRunning; - - [statusItem setMenu:[self menuForNoPlayer]]; } } diff --git a/MenuController.h b/MenuController.h index c829533..6163bb1 100755 --- a/MenuController.h +++ b/MenuController.h @@ -43,6 +43,7 @@ typedef enum { } - (NSMenu *)menu; +- (NSMenu *)menuForNoPlayer; // - (NSArray *)menuLayout; // - (void)setMenuLayout:(NSArray *)newLayoutArray; diff --git a/MenuController.m b/MenuController.m index cd30070..4317dec 100755 --- a/MenuController.m +++ b/MenuController.m @@ -31,10 +31,11 @@ //Get the current playlist, track index, etc. int playlistIndex = [currentRemote currentPlaylistIndex]; - int trackIndex = [currentRemote currentSongIndex]; + //int trackIndex = [currentRemote currentSongIndex]; - // dynamically create menu from supplied data and layout information. + //create our menu while ( (nextObject = [enumerator nextObject]) ) { + //Main menu items if ([nextObject isEqualToString:@"Play/Pause"]) { tempItem = [menu addItemWithTitle:@"Play" action:@selector(performMainMenuAction:) @@ -57,23 +58,82 @@ tempItem = [menu addItemWithTitle:@"Next Track" action:@selector(performMainMenuAction:) keyEquivalent:@""]; - [tempItem setTag:MTMenuNextTrackItem]; - [tempItem setTarget:self]; + if (playlistIndex) { + [tempItem setTag:MTMenuNextTrackItem]; + [tempItem setTarget:self]; + } } else if ([nextObject isEqualToString:@"Previous Track"]) { tempItem = [menu addItemWithTitle:@"Previous Track" action:@selector(performMainMenuAction:) keyEquivalent:@""]; - [tempItem setTag:MTMenuPreviousTrackItem]; + if (playlistIndex) { + [tempItem setTag:MTMenuPreviousTrackItem]; + [tempItem setTarget:self]; + } + } else if ([nextObject isEqualToString:@"Fast Forward"]) { + tempItem = [menu addItemWithTitle:@"Fast Forward" + action:@selector(performMainMenuAction:) + keyEquivalent:@""]; + if (playlistIndex) { + [tempItem setTag:MTMenuFastForwardItem]; + [tempItem setTarget:self]; + } + } else if ([nextObject isEqualToString:@"Rewind"]) { + tempItem = [menu addItemWithTitle:@"Rewind" + action:@selector(performMainMenuAction:) + keyEquivalent:@""]; + if (playlistIndex) { + [tempItem setTag:MTMenuRewindItem]; + [tempItem setTarget:self]; + } + } else if ([nextObject isEqualToString:@"Preferences"]) { + tempItem = [menu addItemWithTitle:@"Preferences..." + action:@selector(performMainMenuAction:) + keyEquivalent:@""]; + [tempItem setTag:MTMenuPreferencesItem]; + [tempItem setTarget:self]; + } else if ([nextObject isEqualToString:@"Quit"]) { + tempItem = [menu addItemWithTitle:@"Quit" + action:@selector(performMainMenuAction:) + keyEquivalent:@""]; + [tempItem setTag:MTMenuQuitItem]; [tempItem setTarget:self]; } else if ([nextObject isEqualToString:@"Current Track Info"]) { - NSString *title = [currentRemote currentSongTitle]; - [menu addItemWithTitle:@"Now Playing" action:NULL keyEquivalent:@""]; - - if ([title length] > 0) { - [menu addItemWithTitle:[NSString stringWithFormat:@" %@", title] action:nil keyEquivalent:@""]; + if (playlistIndex) { + NSString *title = [currentRemote currentSongTitle]; + + [menu addItemWithTitle:@"Now Playing" action:NULL keyEquivalent:@""]; + + if ([title length] > 0) { + [menu addItemWithTitle:[NSString stringWithFormat:@" %@", title] action:nil keyEquivalent:@""]; + } + } else { + [menu addItemWithTitle:@"No Song" action:NULL keyEquivalent:@""]; } + } else if ([nextObject isEqualToString:@""]) { + [menu addItem:[NSMenuItem separatorItem]]; + //Submenu items + } else if ([nextObject isEqualToString:@"Song Rating"]) { + tempItem = [menu addItemWithTitle:@"Song Rating" + action:nil + keyEquivalent:@""]; + //[tempItem setSubmenu:[self ratingMenu]]; + } else if ([nextObject isEqualToString:@"Upcoming Songs"]) { + tempItem = [menu addItemWithTitle:@"Upcoming Songs" + action:nil + keyEquivalent:@""]; + //[tempItem setSubmenu:[self upcomingSongsMenu]]; + } else if ([nextObject isEqualToString:@"Playlists"]) { + tempItem = [menu addItemWithTitle:@"Playlists" + action:nil + keyEquivalent:@""]; + //[tempItem setSubmenu:[self playlistsMenu]]; + } else if ([nextObject isEqualToString:@"EQ Presets"]) { + tempItem = [menu addItemWithTitle:@"EQ Presets" + action:nil + keyEquivalent:@""]; + //[tempItem setSubmenu:[self eqMenu]]; } - //Do cool stuff here woo hehe gack yay! 0_o } [_currentMenu release]; @@ -81,6 +141,21 @@ return _currentMenu; } +- (NSMenu *)menuForNoPlayer +{ + NSMenu *menu = [[NSMenu alloc] initWithTitle:@""]; + NSMenuItem *tempItem; + [menu addItemWithTitle:[NSString stringWithFormat:@"Open %@", [[[MainController sharedController] currentRemote] playerSimpleName]] action:@selector(performMainMenuAction:) keyEquivalent:@""]; + [menu addItem:[NSMenuItem separatorItem]]; + tempItem = [menu addItemWithTitle:@"Preferences" action:@selector(performMainMenuAction:) keyEquivalent:@""]; + [tempItem setTag:MTMenuPreferencesItem]; + [tempItem setTarget:self]; + tempItem = [menu addItemWithTitle:@"Quit" action:@selector(performMainMenuAction:) keyEquivalent:@""]; + [tempItem setTag:MTMenuQuitItem]; + [tempItem setTarget:self]; + return [menu autorelease]; +} + - (void)performMainMenuAction:(id)sender { switch ( [sender tag] ) @@ -208,6 +283,7 @@ case 49: { // Haven't tested this, though it should work. + // This doesn't work. :'( unichar buffer; [[NSString stringWithString:@"Space"] getCharacters:&buffer]; charcode = buffer; diff --git a/PreferencesController.m b/PreferencesController.m index 9305492..63e7101 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -126,7 +126,7 @@ static PreferencesController *prefs = nil; } if ( rebuildRequired ) { - [controller rebuildMenu]; + //[controller rebuildMenu]; // redraw song info status window, or upcoming songs here } @@ -232,7 +232,7 @@ static PreferencesController *prefs = nil; @"Playlists", @"Song Rating", @"", - @"PreferencesÉ", + @"Preferences", @"Quit", @"", @"Current Track Info", @@ -372,7 +372,6 @@ static PreferencesController *prefs = nil; } else if ([currentHotKey isEqualToString:@"ToggleLoop"]) { [toggleLoopButton setTitle:string]; } - //[controller rebuildMenu]; } [self cancelHotKey:sender]; } @@ -625,7 +624,6 @@ static PreferencesController *prefs = nil; { [df setObject:myItems forKey:@"menu"]; [df synchronize]; - [controller rebuildMenu]; } - (void)setLaunchesAtLogin:(BOOL)flag @@ -806,7 +804,7 @@ static PreferencesController *prefs = nil; if ([[[info draggingPasteboard] types] containsObject:@"MenuTableViewPboardType"]) { NSString *item = [myItems objectAtIndex:[[[info draggingPasteboard] stringForType:@"MenuTableViewPboardType"] intValue]]; - if ([item isEqualToString:@"PreferencesÉ"] || [item isEqualToString:@"Quit"]) { + if ([item isEqualToString:@"Preferences"] || [item isEqualToString:@"Quit"]) { return NSDragOperationNone; } } -- 2.20.1