#import "NJOutput.h"
#import "NJEvents.h"
-#define PB_ROW @"com.yukkurigames.Enjoyable.MappingRow"
-
@implementation NJMappingsController {
NSMutableArray *_mappings;
NJMapping *_manualMapping;
_manualMapping = oldMapping;
}
+- (void)activateMappingForcibly:(NJMapping *)mapping {
+ NSLog(@"Switching to mapping %@.", mapping.name);
+ _currentMapping = mapping;
+ NSUInteger idx = [self indexOfMapping:_currentMapping];
+ [NSNotificationCenter.defaultCenter
+ postNotificationName:NJEventMappingChanged
+ object:self
+ userInfo:@{ NJMappingKey : _currentMapping,
+ NJMappingIndexKey: @(idx) }];
+}
+
- (void)activateMapping:(NJMapping *)mapping {
if (!mapping)
mapping = _manualMapping;
if (mapping == _currentMapping)
return;
- NSLog(@"Switching to mapping %@.", mapping.name);
_manualMapping = mapping;
- _currentMapping = mapping;
- NSUInteger idx = [_mappings indexOfObjectIdenticalTo:_currentMapping];
- [NSNotificationCenter.defaultCenter
- postNotificationName:NJEventMappingChanged
- object:self
- userInfo:@{ NJMappingKey : _currentMapping,
- NJMappingIndexKey: @(idx) }];
+ [self activateMappingForcibly:mapping];
}
- (void)save {
NSArray *storedMappings = [NSUserDefaults.standardUserDefaults arrayForKey:@"mappings"];
NSMutableArray* newMappings = [[NSMutableArray alloc] initWithCapacity:storedMappings.count];
- for (unsigned i = 0; i < storedMappings.count; ++i) {
- NJMapping *mapping = [[NJMapping alloc] initWithSerialization:storedMappings[i]];
- [newMappings addObject:mapping];
- }
-
+ for (NSDictionary *serialization in storedMappings)
+ [newMappings addObject:
+ [[NJMapping alloc] initWithSerialization:serialization]];
if (newMappings.count) {
_mappings = newMappings;
- (void)mergeMapping:(NJMapping *)mapping intoMapping:(NJMapping *)existing {
[existing mergeEntriesFrom:mapping];
[self mappingsChanged];
- if (existing == _currentMapping) {
- // FIXME: Hack to trigger updates in the rest of the UI.
- _currentMapping = nil;
- NJMapping *manual = _manualMapping;
- [self activateMapping:existing];
- _manualMapping = manual;
- }
+ if (existing == _currentMapping)
+ [self activateMappingForcibly:mapping];
}
- (void)renameMapping:(NJMapping *)mapping to:(NSString *)name {
mapping.name = name;
- if (mapping == _currentMapping) {
- // FIXME: Hack to trigger updates in the rest of the UI.
- _currentMapping = nil;
- NJMapping *manual = _manualMapping;
- [self activateMapping:mapping];
- _manualMapping = manual;
- }
[self mappingsChanged];
+ if (mapping == _currentMapping)
+ [self activateMappingForcibly:mapping];
}
- (void)addMapping:(NJMapping *)mapping {