Skip to content

Commit

Permalink
Menu items for Start/Stop Timer, New Project/Task. Use
Browse files Browse the repository at this point in the history
validateUserInterfaceItem to set the enabled/disabled state of all
menu/toolbar items.

* MainController.h, MainController.m
  (startMenuItem): An outlet for the new Start/Stop menu item.
  (validateUserInterfaceItem): Created.  Now used instead of
    updateToolbarState to enable/disable all menu/toolbar items.
  (toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar): Use
    autovalidate instead of updateToolbarState.  Renamed "Add Project/Task"
    to "New Project/Task".
  (updateStartStopState): Sets the title of the new Start/Stop menu item.
  (updateToolbarState): Removed.  Functionality was ported to
    validateUserInterfaceItem.  All callers changed.


git-svn-id: https://time-tracker-mac.googlecode.com/svn/trunk@21 4511c099-ca26-0410-9445-25cf1b1ba2ba
  • Loading branch information
gruen0aermel committed Jan 21, 2007
1 parent 7442c58 commit 52c725c
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 107 deletions.
17 changes: 9 additions & 8 deletions English.lproj/MainMenu.nib/classes.nib

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion English.lproj/MainMenu.nib/info.nib

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified English.lproj/MainMenu.nib/keyedobjects.nib
Binary file not shown.
31 changes: 0 additions & 31 deletions English.lproj/MainMenu~.nib/classes.nib

This file was deleted.

21 changes: 0 additions & 21 deletions English.lproj/MainMenu~.nib/info.nib

This file was deleted.

Binary file removed English.lproj/MainMenu~.nib/keyedobjects.nib
Binary file not shown.
5 changes: 4 additions & 1 deletion MainController.h
Expand Up @@ -34,6 +34,8 @@
IBOutlet NSDatePicker *dtpEditWorkPeriodStartTime;
IBOutlet NSDatePicker *dtpEditWorkPeriodEndTime;

IBOutlet NSMenuItem *startMenuItem;

NSToolbarItem *startstopToolbarItem;
NSToolbarItem *addProjectToolbarItem;
NSToolbarItem *addTaskToolbarItem;
Expand Down Expand Up @@ -67,6 +69,7 @@
- (void) saveData;

- (void) updateStartStopState;
- (void) updateToolbarState;

- (BOOL) validateUserInterfaceItem:(id)anItem;

@end
71 changes: 26 additions & 45 deletions MainController.m
Expand Up @@ -39,7 +39,6 @@ - (void)startTimer
userInfo: nil repeats: YES];

[self updateStartStopState];
[self updateToolbarState];

_curWorkPeriod = [TWorkPeriod new];
[_curWorkPeriod setStartTime: [NSDate date]];
Expand Down Expand Up @@ -72,7 +71,6 @@ - (void)stopTimer:(NSDate*)endTime
[self saveData];

[self updateStartStopState];
[self updateToolbarState];

[tvProjects reloadData];
[tvTasks reloadData];
Expand All @@ -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;
Expand Down Expand Up @@ -235,7 +228,6 @@ - (void)awakeFromNib
[mainWindow setToolbar: toolbar];

[self updateStartStopState];
[self updateToolbarState];

[tvWorkPeriods setTarget: self];
[tvWorkPeriods setDoubleAction: @selector(doubleClickWorkPeriod:)];
Expand Down Expand Up @@ -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];
}
Expand Down Expand Up @@ -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) {
Expand All @@ -583,6 +588,8 @@ - (void)updateStartStopState

[statusItem setImage:playItemImage];
[statusItem setAlternateImage:playItemHighlightImage];

[startMenuItem setTitle:@"Start Timer"];
} else {
[startstopToolbarItem setLabel:@"Stop"];
[startstopToolbarItem setPaletteLabel:@"Stop"];
Expand All @@ -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
Expand Down

0 comments on commit 52c725c

Please sign in to comment.