X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Classes%2FNJMappingsController.m;h=fa851b15629e23c098b3a1809899f7285a966b5f;hp=500e90150ed1277b30145530e4272f9fd496488f;hb=764667945312ea9762fba3127ec175387fa0a930;hpb=235c087385a6e959ba7edefe4a3cbbbc00b2a534 diff --git a/Classes/NJMappingsController.m b/Classes/NJMappingsController.m index 500e901..fa851b1 100644 --- a/Classes/NJMappingsController.m +++ b/Classes/NJMappingsController.m @@ -46,8 +46,7 @@ return idx < _mappings.count ? _mappings[idx] : nil; } -- (void)mappingsChanged { - [self save]; +- (void)mappingsSet { [tableView reloadData]; [self updateInterfaceForCurrentMapping]; [NSNotificationCenter.defaultCenter @@ -57,6 +56,11 @@ NJMappingKey: _currentMapping }]; } +- (void)mappingsChanged { + [self save]; + [self mappingsSet]; +} + - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(__unsafe_unretained id [])buffer count:(NSUInteger)len { @@ -116,6 +120,7 @@ } - (IBAction)addPressed:(id)sender { + [self mappingPressed:sender]; NJMapping *newMapping = [[NJMapping alloc] init]; [_mappings addObject:newMapping]; [self activateMapping:newMapping]; @@ -167,11 +172,7 @@ - (void)load { NSUInteger selected = [NSUserDefaults.standardUserDefaults integerForKey:@"selected"]; - NSArray *mappings = [NSUserDefaults.standardUserDefaults arrayForKey:@"mappings"]; - [self loadAllFrom:mappings andActivate:selected]; -} - -- (void)loadAllFrom:(NSArray *)storedMappings andActivate:(NSUInteger)selected { + NSArray *storedMappings = [NSUserDefaults.standardUserDefaults arrayForKey:@"mappings"]; NSMutableArray* newMappings = [[NSMutableArray alloc] initWithCapacity:storedMappings.count]; // Requires two passes to deal with inter-mapping references. First make @@ -194,7 +195,7 @@ if (selected >= newMappings.count) selected = 0; [self activateMapping:_mappings[selected]]; - [self mappingsChanged]; + [self mappingsSet]; } } @@ -246,6 +247,10 @@ didEndSelector:@selector(mappingConflictDidResolve:returnCode:contextInfo:) contextInfo:(void *)CFBridgingRetain(@{ @"old mapping": mergeInto, @"new mapping": mapping })]; + } else if (mergeInto) { + [mergeInto mergeEntriesFrom:mapping]; + [self activateMapping:mergeInto]; + [self mappingsChanged]; } else { [_mappings addObject:mapping]; [self activateMapping:mapping];