SourceForge: timemon/timemon: changeset 187:8204198ca120
Undo support for delete project.
authorFrank <wixardy@ceresalto.ca>
Sat Sep 26 22:05:44 2009 -0400 (8 weeks ago)
changeset 1878204198ca120
parent 1861774fe56155b
child 188843e8884cfcf
Undo support for delete project.
TimeMon.m
     1.1 --- a/TimeMon.m	Sat Sep 26 21:45:39 2009 -0400
     1.2 +++ b/TimeMon.m	Sat Sep 26 22:05:44 2009 -0400
     1.3 @@ -328,6 +328,10 @@
     1.4  	[fetch setPredicate:predicate];
     1.5  	NSArray *results = [moc executeFetchRequest:fetch error:nil];
     1.6  	
     1.7 +	//undo registration
     1.8 +	[moc.undoManager registerUndoWithTarget:self selector:@selector(undoDeleteProject:) object:[NSMutableDictionary dictionaryWithObjectsAndKeys:results, @"times", oldItem, @"project", nil]];
     1.9 +	[moc.undoManager setActionName:NSLocalizedString(@"Delete Project", nil)];
    1.10 +	
    1.11  	//delete times
    1.12  	for (NSManagedObject *entry in results)
    1.13  		[moc deleteObject:entry];
    1.14 @@ -1104,6 +1108,33 @@
    1.15  		[moc insertObject:(NSManagedObject *)aProject];
    1.16  }
    1.17  
    1.18 +- (void)undoDeleteProject:(NSNotification *)aProjectAndTimes;
    1.19 +{
    1.20 +	//redo registration
    1.21 +	[moc.undoManager registerUndoWithTarget:self selector:@selector(undoDeleteProject:) object:aProjectAndTimes];
    1.22 +	[moc.undoManager setActionName:NSLocalizedString(@"Delete Project", nil)];
    1.23 +	
    1.24 +	if (moc.undoManager.isUndoing){
    1.25 +		//add project and times
    1.26 +		[moc insertObject:[(NSDictionary *)aProjectAndTimes objectForKey:@"project"]];
    1.27 +		
    1.28 +		NSArray *times = [(NSDictionary *)aProjectAndTimes objectForKey:@"times"];
    1.29 +		for (NSManagedObject *time in times){
    1.30 +			[moc insertObject:time];
    1.31 +			[time setValue:[(NSDictionary *)aProjectAndTimes objectForKey:@"project"] forKey:@"project"];
    1.32 +		}
    1.33 +	}
    1.34 +	else if (moc.undoManager.isRedoing){
    1.35 +		//delete project and times
    1.36 +		[moc deleteObject:[(NSDictionary *)aProjectAndTimes objectForKey:@"project"]];
    1.37 +		
    1.38 +		NSArray *times = [(NSDictionary *)aProjectAndTimes objectForKey:@"times"];
    1.39 +		for (NSManagedObject *time in times){
    1.40 +			[moc deleteObject:time];
    1.41 +		}
    1.42 +	}
    1.43 +}
    1.44 +
    1.45  - (void)undoRenameProject:(NSNotification *)aProjectInfo;
    1.46  {
    1.47  	//redo registration