Skip to content

Commit

Permalink
changed nib file to 10.4
Browse files Browse the repository at this point in the history
fixed problem where selecting a task in AllProjects mode and a filter was on (nothing was displayed)


git-svn-id: https://time-tracker-mac.googlecode.com/svn/trunk@59 4511c099-ca26-0410-9445-25cf1b1ba2ba
  • Loading branch information
rburgst committed Feb 5, 2008
1 parent f8cf485 commit 4115cf0
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 15 deletions.
4 changes: 4 additions & 0 deletions English.lproj/MainMenu.nib/classes.nib

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

6 changes: 2 additions & 4 deletions 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.
2 changes: 2 additions & 0 deletions MainController.h
Expand Up @@ -83,6 +83,7 @@
NSMutableDictionary *_projects_lastTask;
id<IProject> _selProject;
id<ITask> _selTask;
NSMutableArray *_filteredTasks;
TWorkPeriod *_curWorkPeriod;
TTimeTransformer *_timeValueFormatter;
TDateTransformer *_dateValueFormatter;
Expand Down Expand Up @@ -131,6 +132,7 @@
- (bool) dataFileExists;
- (void) validateToolbarFilterItems;
- (void) applyFilter;
- (void) updateTaskFilterCache;

-(NSDate*) determineFilterStartDate;
-(NSDate*) determineFilterEndDate;
Expand Down
59 changes: 48 additions & 11 deletions MainController.m
Expand Up @@ -85,7 +85,8 @@ - (void) invalidateFilterPredicate

- (void) applyFilter
{
[workPeriodController setFilterPredicate:[self filterPredicate]];
[workPeriodController setFilterPredicate:[self filterPredicate]];
[self updateTaskFilterCache];
[tvTasks reloadData];
[tvProjects reloadData];
[self validateToolbarFilterItems];
Expand Down Expand Up @@ -739,9 +740,8 @@ - (int)numberOfRowsInTableView:(NSTableView *)tableView
if (_selProject == nil)
return 0;
else if (ONLY_NON_NULL_TASKS_FOR_OVERVIEW) {
if (_selProject == _metaProject) {
// TODO this should be cached.
return [[_selProject matchingTasks:[self filterPredicate]] count] + 1;
if (_selProject == _metaProject && _filteredTasks != nil) {
return [_filteredTasks count] + 1;
}
}
return [[_selProject tasks] count] + 1;
Expand Down Expand Up @@ -770,6 +770,7 @@ - (TTask*) taskForWorkTimeIndex: (int) rowIndex timeIndex:(int*)resultIndex {
return aTask;
}


- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)rowIndex
{
if (tableView == tvProjects) {
Expand All @@ -792,8 +793,8 @@ - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColum
if (rowIndex == 0) {
task = _metaTask;
} else if (ONLY_NON_NULL_TASKS_FOR_OVERVIEW
&& _selProject == _metaProject) {
task = [[_selProject matchingTasks:[self filterPredicate]] objectAtIndex: rowIndex - 1];
&& _selProject == _metaProject && _filteredTasks != nil) {
task = [_filteredTasks objectAtIndex: rowIndex - 1];
} else {
task = [[_selProject tasks] objectAtIndex: rowIndex - 1];
}
Expand Down Expand Up @@ -1002,6 +1003,19 @@ - (void)reloadWorkPeriods
[tvWorkPeriods reloadData];
}

/**
* This method will update the cached tasks to be displayed when a filter
* is selected.
*/
- (void) updateTaskFilterCache {
[_filteredTasks release];
_filteredTasks = nil;

if (_filterMode != FILTER_MODE_NONE) {
_filteredTasks = [[_selProject matchingTasks:[self filterPredicate]] retain];
}
}

- (void)tableViewSelectionDidChange:(NSNotification *)notification
{
if ([notification object] == tvProjects) {
Expand All @@ -1012,8 +1026,13 @@ - (void)tableViewSelectionDidChange:(NSNotification *)notification
[_projects_lastTask setObject:index forKey:[_selProject name]];
}
}


// Update the new selection
// first remove the cached tasks
[_filteredTasks release];
_filteredTasks = nil;

if ([self selectedProjectRow] == -2) {
_selProject = nil;
} else if ([self selectedProjectRow] == -1) {
Expand All @@ -1022,17 +1041,25 @@ - (void)tableViewSelectionDidChange:(NSNotification *)notification
if ([NSTableColumn instancesRespondToSelector:@selector(setHidden:)]) {
[[tvWorkPeriods tableColumnWithIdentifier:@"Project"] setHidden:NO];
}
// if we have a filter on then already cache the tasks
[self updateTaskFilterCache];
} else {
_selProject = [_projects objectAtIndex: [self selectedProjectRow]];
if ([NSTableColumn instancesRespondToSelector:@selector(setHidden:)]) {
[[tvWorkPeriods tableColumnWithIdentifier:@"Project"] setHidden:YES];
}
}

NSMutableArray *tasks = nil;
if (_filteredTasks != nil) {
tasks = _filteredTasks;
} else {
tasks = [_selProject tasks];
}
[tvTasks deselectAll: self];
[tvTasks reloadData];

if (_selProject != nil && [[_selProject tasks] count] > 0) {
if (_selProject != nil && [tasks count] > 0) {
NSNumber *lastTask = [_projects_lastTask objectForKey:[_selProject name]];
if (lastTask == nil || [lastTask intValue] == -1) {
[tvTasks selectRowIndexes:[NSIndexSet indexSetWithIndex:0] byExtendingSelection:NO];
Expand All @@ -1045,16 +1072,26 @@ - (void)tableViewSelectionDidChange:(NSNotification *)notification
}

if ([notification object] == tvTasks) {
NSMutableArray *tasks = nil;
if (_filteredTasks != nil) {
tasks = _filteredTasks;
} else {
tasks = [_selProject tasks];
}

if ([self selectedTaskRow] == -2) {
_selTask = nil;
} else if ([self selectedTaskRow] == -1) {
[self selectAndUpdateMetaTask];
[[tvWorkPeriods tableColumnWithIdentifier:@"Task"] setHidden:NO];

if ([NSTableColumn instancesRespondToSelector:@selector(setHidden:)]) {
[[tvWorkPeriods tableColumnWithIdentifier:@"Task"] setHidden:NO];
}
} else {
// assert _selProject != nil
_selTask = [[_selProject tasks] objectAtIndex: [self selectedTaskRow]];
[[tvWorkPeriods tableColumnWithIdentifier:@"Task"] setHidden:YES];
_selTask = [tasks objectAtIndex: [self selectedTaskRow]];
if ([NSTableColumn instancesRespondToSelector:@selector(setHidden:)]) {
[[tvWorkPeriods tableColumnWithIdentifier:@"Task"] setHidden:YES];
}
}
[self reloadWorkPeriods];
[self updateProminentDisplay];
Expand Down

0 comments on commit 4115cf0

Please sign in to comment.