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