From bad9de5ef29bebf5a0d07e8960b2a70a983bf86b Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Thu, 8 May 2003 22:43:10 +0000 Subject: [PATCH] Tons of new stuff. Made is compile now too :) --- MainController.h | 14 ++++++------ MainController.m | 13 ++++++++++- MenuController.h | 1 + MenuController.m | 56 ++++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 69 insertions(+), 15 deletions(-) diff --git a/MainController.h b/MainController.h index 3db1655..8438c82 100755 --- a/MainController.h +++ b/MainController.h @@ -18,29 +18,29 @@ #import #import - -@class StatusWindowController; - +@class StatusWindowController, MenuController; @interface MainController : NSObject { ITStatusItem *statusItem; NSMutableArray *remoteArray; ITMTRemote *currentRemote; - + ITMTRemotePlayerRunningState playerRunningState; ITMTRemotePlayerPlaylistClass latestPlaylistClass; //Used in updating the menu automatically NSTimer *refreshTimer; - NSString *_latestSongIdentifier; - - StatusWindowController *statusWindowController; //Shows track info and upcoming songs. + + StatusWindowController *statusWindowController; //Shows status windows + MenuController *menuController; NSUserDefaults *df; } + (MainController *)sharedController; +- (void)menuClicked; + //Methods called from MenuController by menu items - (void)playPause; - (void)nextSong; diff --git a/MainController.m b/MainController.m index 475a23e..eb48f5a 100755 --- a/MainController.m +++ b/MainController.m @@ -1,7 +1,9 @@ #import "NewMainController.h" +#import "MenuController.h" #import "PreferencesController.h" #import "HotKeyCenter.h" #import "StatusWindowController.h" +#import "StatusItemHack.h" @interface MainController(Private) - (ITMTRemote *)loadRemote; @@ -32,6 +34,7 @@ static MainController *sharedController; remoteArray = [[NSMutableArray alloc] initWithCapacity:1]; statusWindowController = [[StatusWindowController alloc] init]; + menuController = [[MenuController alloc] init]; df = [[NSUserDefaults standardUserDefaults] retain]; [self setLatestSongIdentifier:@"0-0"]; } @@ -60,6 +63,7 @@ static MainController *sharedController; [[PreferencesController sharedPrefs] registerDefaults]; } + [StatusItemHack install]; statusItem = [[ITStatusItem alloc] initWithStatusBar:[NSStatusBar systemStatusBar] withLength:NSSquareStatusItemLength]; @@ -172,6 +176,12 @@ static MainController *sharedController; */ } +- (void)menuClicked +{ + [statusItem setMenu:[menuController menu]]; + NSLog(@"The menu was clix0r3d, do something!"); +} + // // // Menu Selectors @@ -498,8 +508,9 @@ static MainController *sharedController; [currentRemote halt]; [statusItem release]; [statusWindowController release]; + [menuController release]; [super dealloc]; } -@end +@end \ No newline at end of file diff --git a/MenuController.h b/MenuController.h index 8a5091f..c829533 100755 --- a/MenuController.h +++ b/MenuController.h @@ -39,6 +39,7 @@ typedef enum { @interface MenuController : NSObject { NSMutableArray *_menuLayout; + NSMenu *_currentMenu; } - (NSMenu *)menu; diff --git a/MenuController.m b/MenuController.m index f434ccc..8077d29 100755 --- a/MenuController.m +++ b/MenuController.m @@ -7,23 +7,64 @@ // #import "MenuController.h" -#import "MainController.h" +#import "NewMainController.h" +#import "ITMTRemote.h" @implementation MenuController - (id)init { if ( (self = [super init]) ) { - _menuLayout = [[NSMutableArray alloc] initWithCapacity: + _menuLayout = [[NSMutableArray alloc] initWithCapacity:0]; } return self; } - (NSMenu *)menu { + NSMenu *menu = [[NSMenu alloc] initWithTitle:@""]; + NSArray *menuArray = [[NSUserDefaults standardUserDefaults] arrayForKey:@"menu"]; + NSEnumerator *enumerator = [menuArray objectEnumerator]; + NSString *nextObject; + ITMTRemote *currentRemote = [[MainController sharedController] currentRemote]; + NSMenuItem *tempItem; + + //Get the current playlist, track index, etc. + int playlistIndex = [currentRemote currentPlaylistIndex]; + int trackIndex = [currentRemote currentSongIndex]; + // dynamically create menu from supplied data and layout information. - // ... - // right before returning the menu, set the created menu to instance variable _currentMenu. + while ( (nextObject = [enumerator nextObject]) ) { + if ([nextObject isEqualToString:@"Play/Pause"]) { + if ([currentRemote playerPlayingState] == ITMTRemotePlayerPlaying) { + tempItem = [menu addItemWithTitle:@"Pause" + action:@selector(performMainMenuAction:) + keyEquivalent:@""]; + [tempItem setTag:MTMenuPlayPauseItem]; + [tempItem setTarget:self]; + } else { + tempItem = [menu addItemWithTitle:@"Play" + action:@selector(performMainMenuAction:) + keyEquivalent:@""]; + [tempItem setTag:MTMenuPlayPauseItem]; + [tempItem setTarget:self]; + } + } + + 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:@""]; + } + } + //Do cool stuff here woo hehe gack yay! 0_o + } + + [_currentMenu release]; + _currentMenu = menu; + return _currentMenu; } - (void)performMainMenuAction:(id)sender @@ -79,12 +120,12 @@ - (void)performEqualizerMenuAction:(id)sender { - [[MainController sharedController] selectEQItemAtIndex:[sender tag]] + [[MainController sharedController] selectEQPresetAtIndex:[sender tag]]; } - (void)performUpcomingSongsMenuAction:(id)sender { - [[MainController sharedController] selectSongAtIndex:[sender tag]] + [[MainController sharedController] selectSongAtIndex:[sender tag]]; } - (void)updateMenu @@ -95,6 +136,7 @@ - (BOOL)validateMenuItem:(id )menuItem { + return YES; } - (NSString *)systemUIColor @@ -103,7 +145,7 @@ NSNumber *tmpNumber; if ( (tmpDict = [NSDictionary dictionaryWithContentsOfFile:[@"~/Library/Preferences/.GlobalPreferences.plist" stringByExpandingTildeInPath]]) ) { if ( (tmpNumber = [tmpDict objectForKey:@"AppleAquaColorVariant"]) ) { - if ( ([tmpNumber intValue == 1) ) { + if ( ([tmpNumber intValue] == 1) ) { return @"Aqua"; } else { return @"Graphite"; -- 2.20.1