Rename 'stringify' to 'uid' where it pertains to unique action IDs.
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Thu, 28 Feb 2013 00:08:58 +0000 (01:08 +0100)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Thu, 28 Feb 2013 00:08:58 +0000 (01:08 +0100)
Config.h
Config.m
ConfigsController.m
JSAction.h
JSAction.m
Joystick.h
Joystick.m
JoystickController.m
TargetController.m

index d118262..d85ec93 100644 (file)
--- a/Config.h
+++ b/Config.h
@@ -17,7 +17,7 @@
 @property (copy) NSString *name;
 @property (readonly) NSMutableDictionary *entries;
 
-- (void)setTarget:(Target *)target forAction:(JSAction *)jsa;
-- (Target *)getTargetForAction:(JSAction *)sa;
+- (Target *)objectForKeyedSubscript:(JSAction *)action;
+- (void)setObject:(Target *)target forKeyedSubscript:(JSAction *)action;
 
 @end
index f62c40f..727b8b0 100644 (file)
--- a/Config.m
+++ b/Config.m
@@ -7,7 +7,9 @@
 
 #import "Config.h"
 
-@implementation Config
+@implementation Config {
+    NSMutableDictionary *entries;
+}
 
 @synthesize protect, name, entries;
 
     return self;
 }
 
-- (void)setTarget:(Target *)target forAction:(JSAction *)jsa {
-    entries[[jsa stringify]] = target;
+- (Target *)objectForKeyedSubscript:(JSAction *)action {
+    return action ? entries[action.uid] : nil;
 }
 
-- (Target *)getTargetForAction:(JSAction *)jsa {
-    return entries[[jsa stringify]];
+- (void)setObject:(Target *)target forKeyedSubscript:(JSAction *)action {
+    if (action) {
+        if (target)
+            entries[action.uid] = target;
+        else
+            [entries removeObjectForKey:action.uid];
+    }
 }
 
 @end
index 63211ae..58614b2 100644 (file)
        [configs removeObjectAtIndex: [tableView selectedRow]];
        
        // remove all "switch to configuration" actions
-       for(int i=0; i<[configs count]; i++) {
-               NSMutableDictionary* entries = [(Config*)configs[i] entries];
-               for(id key in entries) {
-                       Target* target = (Target*) entries[key];
-                       if([target isKindOfClass: [TargetConfig class]] && [(TargetConfig*)target config] == current_config)
+    for (Config *config in configs) {
+               NSMutableDictionary *entries = config.entries;
+               for (id key in entries) {
+                       Target *target = entries[key];
+                       if([target isKindOfClass:[TargetConfig class]] && [(TargetConfig *)target config] == current_config)
                                [entries removeObjectForKey: key];
                }
        }
index 4b35832..94d56f0 100644 (file)
 @property (copy) NSString *name;
 @property (assign) BOOL active;
 @property (readonly) float magnitude;
+@property (readonly) NSString *uid;
 
 - (id)initWithName:(NSString *)newName base:(JSAction *)newBase;
 
 - (void)notifyEvent:(IOHIDValueRef)value;
-- (NSString *)stringify;
 - (id)findSubActionForValue:(IOHIDValueRef)value;
 
 @end
index f96c10d..0cb9855 100644 (file)
     return NULL;
 }
 
-- (NSString *)stringify {
-    if (cookie)
-        return [NSString stringWithFormat: @"%@~%p", [base stringify], cookie];
-    else
-        return [NSString stringWithFormat: @"%@~%@", [base stringify], name];
+- (NSString *)uid {
+    return [NSString stringWithFormat:@"%@~%@", [self.base uid], self.name];
 }
 
 - (void)notifyEvent:(IOHIDValueRef)value {
index 04c5686..831b10b 100644 (file)
@@ -20,6 +20,7 @@
 @property (assign) IOHIDDeviceRef device;
 @property (copy) NSArray *children;
 @property (readonly) NSString *name;
+@property (readonly) NSString *uid;
 
 - (id)initWithDevice:(IOHIDDeviceRef)device;
 - (id)handlerForEvent:(IOHIDValueRef)value;
index 861ab8d..3f21818 100644 (file)
@@ -78,12 +78,11 @@ static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) {
 }
 
 - (id)base {
-    // FIXME(jfw): This is a hack because actions get joysticks as their base.
     return nil;
 }
 
-- (NSString *)stringify {
-    return [[NSString alloc] initWithFormat: @"%d~%d~%d", vendorId, productId, index];
+- (NSString *)uid {
+    return [NSString stringWithFormat: @"%d:%d:%d", vendorId, productId, index];
 }
 
 - (JSAction *)findActionByCookie:(void *)cookie {
index 317e9a5..d87dca7 100644 (file)
@@ -62,7 +62,7 @@ static void input_callback(void *ctx, IOReturn inResult, void *inSender, IOHIDVa
         [mainAction notifyEvent:value];
         NSArray *children = mainAction.children ? mainAction.children : mainAction ? @[mainAction] : @[];
         for (JSAction *subaction in children) {
-            Target *target = [controller.currentConfig getTargetForAction:subaction];
+            Target *target = controller.currentConfig[subaction];
             target.magnitude = mainAction.magnitude;
             target.running = subaction.active;
             if (target.running && target.isContinuous)
index 82eec03..074c487 100644 (file)
 }
 
 -(void) commit {
-       id action = [joystickController selectedAction];
-       if(action) {
-               Target* target = [self state];
-               [[configsController currentConfig] setTarget: target forAction: action];
+       JSAction *action = [joystickController selectedAction];
+       if (action) {
+        configsController.currentConfig[action] = self.state;
        }
 }
 
        } else {
                [self setEnabled: YES];
        }
-       Target* target = [[configsController currentConfig] getTargetForAction: jsaction];
+       Target* target = configsController.currentConfig[jsaction];
        
        id act = jsaction;
        NSString* actFullName = [act name];