Undo support for delete project.
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