Rename methods uniquely between mapping/device controllers.
[enjoyable.git] / Classes / NJMappingsController.m
index 8f0492c..6902504 100644 (file)
@@ -11,8 +11,6 @@
 #import "NJOutput.h"
 #import "NJEvents.h"
 
-#define PB_ROW @"com.yukkurigames.Enjoyable.MappingRow"
-
 @implementation NJMappingsController {
     NSMutableArray *_mappings;
     NJMapping *_manualMapping;
     return self;
 }
 
-- (NJMapping *)objectForKeyedSubscript:(NSString *)name {
+- (NJMapping *)mappingForKey:(NSString *)name {
     for (NJMapping *mapping in _mappings)
         if ([name isEqualToString:mapping.name])
             return mapping;
     return nil;
 }
 
-- (NJMapping *)objectAtIndexedSubscript:(NSUInteger)idx {
-    return idx < _mappings.count ? _mappings[idx] : nil;
-}
-
 - (void)mappingsSet {
     [self postLoadProcess];
     [NSNotificationCenter.defaultCenter
     [self mappingsSet];
 }
 
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
-                                  objects:(__unsafe_unretained id [])buffer
-                                    count:(NSUInteger)len {
-    return [_mappings countByEnumeratingWithState:state
-                                          objects:buffer
-                                            count:len];
-}
-
 - (void)activateMappingForProcess:(NSRunningApplication *)app {
     NJMapping *oldMapping = _manualMapping;
     NSArray *names = app.possibleMappingNames;
     BOOL found = NO;
     for (NSString *name in names) {
-        NJMapping *mapping = self[name];
+        NJMapping *mapping = [self mappingForKey:name];
         if (mapping) {
             [self activateMapping:mapping];
             found = YES;
     _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 {
 }
 
 - (void)postLoadProcess {
-    for (NJMapping *mapping in self)
-        [mapping postLoadProcess:self];
+    for (NJMapping *mapping in self.mappings)
+        [mapping postLoadProcess:self.mappings];
 }
 
 - (void)load {
     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 {
 - (void)removeMappingAtIndex:(NSInteger)idx {
     NSInteger currentIdx = [self indexOfMapping:_currentMapping];
     [_mappings removeObjectAtIndex:idx];
-    [self activateMapping:self[MIN(currentIdx, _mappings.count - 1)]];
+    [self activateMapping:self.mappings[MIN(currentIdx, _mappings.count - 1)]];
     [self mappingsChanged];
 }
 
     [self mappingsChanged];
 }
 
-- (NSUInteger)count {
-    return _mappings.count;
-}
-
 @end