Tweak some animations, clean up for preparation to move to app delegate.
[enjoyable.git] / Classes / EnjoyableApplicationDelegate.m
index 26ea09c..9fef7c3 100644 (file)
     NSURL *URL = [NSURL fileURLWithPath:filename];
     NJMapping *mapping = [NJMapping mappingWithContentsOfURL:URL
                                                        error:&error];
-    if (mapping) {
-        [self.mappingsController addOrMergeMapping:mapping];
-        return YES;
+    if ([self.mappingsController[mapping.name] hasConflictWith:mapping]) {
+        [self.mappingsController promptForMapping:mapping atIndex:self.mappingsController.count];
+    } else if (self.mappingsController[mapping.name]) {
+        [self.mappingsController[mapping.name] mergeEntriesFrom:mapping];
+    } else if (mapping) {
+        [self.mappingsController addMapping:mapping];
     } else {
         [window presentError:error
               modalForWindow:window
                     delegate:nil
           didPresentSelector:nil
                  contextInfo:nil];
-        return NO;
     }
+    return !!mapping;
 }
 
 - (void)mappingWasChosen:(NJMapping *)mapping {
                       NSError *error;
                       NJMapping *mapping = [NJMapping mappingWithContentsOfURL:panel.URL
                                                                          error:&error];
-                      if (mapping) {
-                          [self.mappingsController addOrMergeMapping:mapping];
+                      if ([self.mappingsController[mapping.name] hasConflictWith:mapping]) {
+                          [self.mappingsController promptForMapping:mapping atIndex:self.mappingsController.count];
+                      } else if (self.mappingsController[mapping.name]) {
+                          [self.mappingsController[mapping.name] mergeEntriesFrom:mapping];
+                      } else if (mapping) {
+                          [self.mappingsController addMapping:mapping];
                       } else {
                           [window presentError:error
                                 modalForWindow:window