1#include "Controller.h" 2#include "Player.h" 3#include "Preferences.h" 4#include "TrackList.h" 5 6@implementation Controller 7 8 9void createMenu() 10{ 11 NSMenu* menu; 12 NSMenu* info; 13 NSMenu* services; 14 SEL action = @selector(method:); 15 16 17 ///// Create the app menu ///// 18 menu = [[NSMenu alloc] initWithTitle: @"CDPlayer"]; 19 20 [menu addItemWithTitle: _(@"Info") 21 action: action 22 keyEquivalent: @""]; 23 24 [menu addItemWithTitle: _(@"Show Track List") 25 action: @selector(showTrackList:) 26 keyEquivalent: @"l"]; 27 28 [menu addItemWithTitle: _(@"Query CDDB") 29 action: @selector(queryCddb:) 30 keyEquivalent: @"Q"]; 31 32 [menu addItemWithTitle:_(@"Services") 33 action: action 34 keyEquivalent:@""]; 35 36 services = AUTORELEASE([NSMenu new]); 37 [menu setSubmenu: services 38 forItem: [menu itemWithTitle: _(@"Services")]]; 39 40 [menu addItemWithTitle: _(@"Hide") 41 action: @selector(hide:) 42 keyEquivalent: @"h"]; 43 44 [menu addItemWithTitle: _(@"Quit") 45 action: @selector(terminate:) 46 keyEquivalent: @"q"]; 47 48 49 ///// Create the info submenu ///// 50 info = [NSMenu new]; 51 [menu setSubmenu: info 52 forItem: [menu itemWithTitle: _(@"Info")]]; 53 54 [info addItemWithTitle: _(@"Info Panel...") 55 action: @selector(orderFrontStandardInfoPanel:) 56 keyEquivalent: @""]; 57 58 [info addItemWithTitle: _(@"Preferences...") 59 action: @selector(showPrefPanel:) 60 keyEquivalent: @""]; 61 62 [info addItemWithTitle: _(@"Help") 63 action: @selector(showMyHelp:) 64 keyEquivalent: @"?"]; 65 66 67 [NSApp setServicesMenu: services]; 68 [[NSApplication sharedApplication] setMainMenu: menu]; 69 70 [menu update]; 71 [menu display]; 72} 73 74- (void) dealloc 75{ 76 RELEASE(player); 77 [super dealloc]; 78} 79 80- (void)applicationWillFinishLaunching:(NSNotification *)not 81{ 82 createMenu(); 83} 84 85- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 86{ 87 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 88 89 player = [Player sharedPlayer]; 90 [NSApp setServicesProvider: player]; 91 [player buildInterface]; 92 [TrackList sharedTrackList]; 93 if ([defaults integerForKey: @"ShowTrackListOnStartup"]) 94 [self showTrackList: self]; 95} 96 97- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication 98{ 99 return NO; 100} 101 102- (BOOL)applicationShouldTerminate:(NSApplication *)sender 103{ 104 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 105 106 switch ([defaults integerForKey: @"OnExit"]) 107 { 108 // auto stop 109 case 1: 110 [player stop: self]; 111 break; 112 // auto eject 113 case 2: 114 [player eject: self]; 115 break; 116 // none 117 case 0: 118 default: 119 break; 120 } 121 122 return YES; 123} 124 125- (void) showPrefPanel: (id)sender 126{ 127 [[Preferences singleInstance] showPanel: self]; 128} 129 130- (void) showTrackList: (id)sender 131{ 132 [[TrackList sharedTrackList] activate]; 133} 134 135- (void) queryCddb: (id)sender 136{ 137 [[TrackList sharedTrackList] queryCddb: sender]; 138} 139 140- (void) showMyHelp: (id)sender 141{ 142 NSBundle *mb = [NSBundle mainBundle]; 143 NSString *file = [mb pathForResource: @"CDPlayer" ofType: @"help"]; 144 145 if (file) { 146 [[NSWorkspace sharedWorkspace] openFile: file]; 147 return; 148 } 149 NSBeep(); 150} 151 152- (BOOL) validateMenuItem: (NSMenuItem*)item 153{ 154 BOOL ret = [[TrackList sharedTrackList] validateMenuItem: item]; 155 if (!ret) 156 return ret; 157 158 return YES; 159} 160 161 162@end 163