diff --git a/English.lproj/MainMenu.nib/classes.nib b/English.lproj/MainMenu.nib/classes.nib index 6727392..b8ed296 100644 --- a/English.lproj/MainMenu.nib/classes.nib +++ b/English.lproj/MainMenu.nib/classes.nib @@ -14,14 +14,15 @@ CLASS = MainController; LANGUAGE = ObjC; OUTLETS = { - dtpEditWorkPeriodEndTime = id; - dtpEditWorkPeriodStartTime = id; - mainWindow = id; - panelEditWorkPeriod = id; - panelIdleNotification = id; - tvProjects = id; - tvTasks = id; - tvWorkPeriods = id; + dtpEditWorkPeriodEndTime = NSDatePicker; + dtpEditWorkPeriodStartTime = NSDatePicker; + mainWindow = NSWindow; + panelEditWorkPeriod = NSPanel; + panelIdleNotification = NSPanel; + startMenuItem = NSMenuItem; + tvProjects = NSTableView; + tvTasks = NSTableView; + tvWorkPeriods = NSTableView; }; SUPERCLASS = NSObject; }, diff --git a/English.lproj/MainMenu.nib/info.nib b/English.lproj/MainMenu.nib/info.nib index 3785db2..03a3f0b 100644 --- a/English.lproj/MainMenu.nib/info.nib +++ b/English.lproj/MainMenu.nib/info.nib @@ -7,13 +7,14 @@ IBEditorPositions 29 - 382 658 338 44 0 0 1440 878 + 102 572 338 44 0 0 1024 746 IBFramework Version 446.1 IBOpenObjects 21 + 29 IBSystem Version 8L127 diff --git a/English.lproj/MainMenu.nib/keyedobjects.nib b/English.lproj/MainMenu.nib/keyedobjects.nib index 9bf6b3a..37cadb8 100644 Binary files a/English.lproj/MainMenu.nib/keyedobjects.nib and b/English.lproj/MainMenu.nib/keyedobjects.nib differ diff --git a/English.lproj/MainMenu~.nib/classes.nib b/English.lproj/MainMenu~.nib/classes.nib deleted file mode 100644 index 6727392..0000000 --- a/English.lproj/MainMenu~.nib/classes.nib +++ /dev/null @@ -1,31 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = { - clickedAddProject = id; - clickedAddTask = id; - clickedChangeWorkPeriod = id; - clickedCountIdleTimeNo = id; - clickedCountIdleTimeYes = id; - clickedDelete = id; - clickedStartStopTimer = id; - }; - CLASS = MainController; - LANGUAGE = ObjC; - OUTLETS = { - dtpEditWorkPeriodEndTime = id; - dtpEditWorkPeriodStartTime = id; - mainWindow = id; - panelEditWorkPeriod = id; - panelIdleNotification = id; - tvProjects = id; - tvTasks = id; - tvWorkPeriods = id; - }; - SUPERCLASS = NSObject; - }, - {CLASS = NSDatePicker; LANGUAGE = ObjC; SUPERCLASS = NSControl; } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/English.lproj/MainMenu~.nib/info.nib b/English.lproj/MainMenu~.nib/info.nib deleted file mode 100644 index ec02525..0000000 --- a/English.lproj/MainMenu~.nib/info.nib +++ /dev/null @@ -1,21 +0,0 @@ - - - - - IBDocumentLocation - 125 79 356 240 0 0 1440 878 - IBEditorPositions - - 29 - 382 658 338 44 0 0 1440 878 - - IBFramework Version - 446.1 - IBOpenObjects - - 21 - - IBSystem Version - 8L2127 - - diff --git a/English.lproj/MainMenu~.nib/keyedobjects.nib b/English.lproj/MainMenu~.nib/keyedobjects.nib deleted file mode 100644 index 4d7724d..0000000 Binary files a/English.lproj/MainMenu~.nib/keyedobjects.nib and /dev/null differ diff --git a/MainController.h b/MainController.h index 21b6b64..2701df1 100644 --- a/MainController.h +++ b/MainController.h @@ -34,6 +34,8 @@ IBOutlet NSDatePicker *dtpEditWorkPeriodStartTime; IBOutlet NSDatePicker *dtpEditWorkPeriodEndTime; + IBOutlet NSMenuItem *startMenuItem; + NSToolbarItem *startstopToolbarItem; NSToolbarItem *addProjectToolbarItem; NSToolbarItem *addTaskToolbarItem; @@ -67,6 +69,7 @@ - (void) saveData; - (void) updateStartStopState; -- (void) updateToolbarState; + +- (BOOL) validateUserInterfaceItem:(id)anItem; @end diff --git a/MainController.m b/MainController.m index c438da1..7c07fcc 100644 --- a/MainController.m +++ b/MainController.m @@ -39,7 +39,6 @@ - (void)startTimer userInfo: nil repeats: YES]; [self updateStartStopState]; - [self updateToolbarState]; _curWorkPeriod = [TWorkPeriod new]; [_curWorkPeriod setStartTime: [NSDate date]]; @@ -72,7 +71,6 @@ - (void)stopTimer:(NSDate*)endTime [self saveData]; [self updateStartStopState]; - [self updateToolbarState]; [tvProjects reloadData]; [tvTasks reloadData]; @@ -98,32 +96,27 @@ - (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString startstopToolbarItem = toolbarItem; [toolbarItem setTarget:self]; [toolbarItem setAction:@selector(clickedStartStopTimer:)]; - [toolbarItem setAutovalidates: NO]; [self updateStartStopState]; - [self updateToolbarState]; } if ([itemIdentifier isEqual: @"AddProject"]) { addProjectToolbarItem = toolbarItem; - [toolbarItem setLabel:@"Add project"]; - [toolbarItem setPaletteLabel:@"Add project"]; - [toolbarItem setToolTip:@"Add project"]; + [toolbarItem setLabel:@"New project"]; + [toolbarItem setPaletteLabel:@"New project"]; + [toolbarItem setToolTip:@"New project"]; [toolbarItem setImage: addProjectToolImage]; [toolbarItem setTarget:self]; [toolbarItem setAction:@selector(clickedAddProject:)]; - [self updateToolbarState]; } if ([itemIdentifier isEqual: @"AddTask"]) { addTaskToolbarItem = toolbarItem; - [toolbarItem setLabel:@"Add task"]; - [toolbarItem setPaletteLabel:@"Add task"]; - [toolbarItem setToolTip:@"Add task"]; + [toolbarItem setLabel:@"New task"]; + [toolbarItem setPaletteLabel:@"New task"]; + [toolbarItem setToolTip:@"New task"]; [toolbarItem setImage: addTaskToolImage]; [toolbarItem setTarget:self]; [toolbarItem setAction:@selector(clickedAddTask:)]; - [toolbarItem setAutovalidates: NO]; - [self updateToolbarState]; } return toolbarItem; @@ -235,7 +228,6 @@ - (void)awakeFromNib [mainWindow setToolbar: toolbar]; [self updateStartStopState]; - [self updateToolbarState]; [tvWorkPeriods setTarget: self]; [tvWorkPeriods setDoubleAction: @selector(doubleClickWorkPeriod:)]; @@ -433,17 +425,13 @@ - (void)tableViewSelectionDidChange:(NSNotification *)notification [tvTasks selectRowIndexes:[NSIndexSet indexSetWithIndex:[lastTask intValue]] byExtendingSelection:NO]; } } - - [self updateToolbarState]; } if ([notification object] == tvTasks) { if ([tvTasks selectedRow] == -1) { _selTask = nil; - [self updateToolbarState]; } else { _selTask = [[_selProject tasks] objectAtIndex: [tvTasks selectedRow]]; - [self updateToolbarState]; } [tvWorkPeriods reloadData]; } @@ -572,6 +560,23 @@ - (IBAction)clickedCountIdleTimeYes:(id)sender [NSApp stopModal]; } +- (BOOL) validateUserInterfaceItem:(id)anItem +{ + if ([anItem action] == @selector(clickedStartStopTimer:)) { + if (timer != nil) return YES; + if (_selTask != nil) return YES; + return NO; + } else + if ([anItem action] == @selector(clickedAddProject:)) { + return YES; + } else + if ([anItem action] == @selector(clickedAddTask:)) { + if (_selProject != nil) return YES; + return NO; + } + return YES; +} + - (void)updateStartStopState { if (timer == nil) { @@ -583,6 +588,8 @@ - (void)updateStartStopState [statusItem setImage:playItemImage]; [statusItem setAlternateImage:playItemHighlightImage]; + + [startMenuItem setTitle:@"Start Timer"]; } else { [startstopToolbarItem setLabel:@"Stop"]; [startstopToolbarItem setPaletteLabel:@"Stop"]; @@ -591,36 +598,10 @@ - (void)updateStartStopState [statusItem setImage:stopItemImage]; [statusItem setAlternateImage:stopItemHighlightImage]; - } - -} - -- (void)updateToolbarState -{ - if (timer == nil) { - // Timer is stopped - - if (_selTask == nil) { - // No task is selected - [startstopToolbarItem setEnabled: NO]; - } else { - // A task is selected - [startstopToolbarItem setEnabled: YES]; - } - } else { - // Timer is running - [startstopToolbarItem setEnabled:YES]; + [startMenuItem setTitle:@"Stop Timer"]; } - - // The Add Task button - if (_selProject == nil) { - // No project is selected - [addTaskToolbarItem setEnabled:NO]; - } else { - [addTaskToolbarItem setEnabled:YES]; - } } - (IBAction)clickedCountIdleTimeNo:(id)sender