X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Classes%2FNJMappingsController.m;fp=Classes%2FNJMappingsController.m;h=0000000000000000000000000000000000000000;hp=69025049f351a1cd1eab592872f398539cb862d3;hb=93d9951d6bd16b37e88b8fb6c38bc4afd6c9401e;hpb=6a8c6539cc3f7a4b32a9f226da6ae06074e4f0cb diff --git a/Classes/NJMappingsController.m b/Classes/NJMappingsController.m deleted file mode 100644 index 6902504..0000000 --- a/Classes/NJMappingsController.m +++ /dev/null @@ -1,166 +0,0 @@ -// -// NJMappingsController.m -// Enjoy -// -// Created by Sam McCall on 4/05/09. -// - -#import "NJMappingsController.h" - -#import "NJMapping.h" -#import "NJOutput.h" -#import "NJEvents.h" - -@implementation NJMappingsController { - NSMutableArray *_mappings; - NJMapping *_manualMapping; -} - -- (id)init { - if ((self = [super init])) { - _mappings = [[NSMutableArray alloc] init]; - _currentMapping = [[NJMapping alloc] initWithName: - NSLocalizedString(@"(default)", @"default name for first the mapping")]; - _manualMapping = _currentMapping; - [_mappings addObject:_currentMapping]; - } - return self; -} - -- (NJMapping *)mappingForKey:(NSString *)name { - for (NJMapping *mapping in _mappings) - if ([name isEqualToString:mapping.name]) - return mapping; - return nil; -} - -- (void)mappingsSet { - [self postLoadProcess]; - [NSNotificationCenter.defaultCenter - postNotificationName:NJEventMappingListChanged - object:self - userInfo:@{ NJMappingListKey: _mappings, - NJMappingKey: _currentMapping }]; -} - -- (void)mappingsChanged { - [self save]; - [self mappingsSet]; -} - -- (void)activateMappingForProcess:(NSRunningApplication *)app { - NJMapping *oldMapping = _manualMapping; - NSArray *names = app.possibleMappingNames; - BOOL found = NO; - for (NSString *name in names) { - NJMapping *mapping = [self mappingForKey:name]; - if (mapping) { - [self activateMapping:mapping]; - found = YES; - break; - } - } - - if (!found) { - [self activateMapping:oldMapping]; - if ([oldMapping.name.lowercaseString isEqualToString:@"@application"] - || [oldMapping.name.lowercaseString isEqualToString: - NSLocalizedString(@"@Application", nil).lowercaseString]) { - oldMapping.name = app.bestMappingName; - [self mappingsChanged]; - } - } - _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; - _manualMapping = mapping; - [self activateMappingForcibly:mapping]; -} - -- (void)save { - NSLog(@"Saving mappings to defaults."); - NSMutableArray *ary = [[NSMutableArray alloc] initWithCapacity:_mappings.count]; - for (NJMapping *mapping in _mappings) - [ary addObject:[mapping serialize]]; - [NSUserDefaults.standardUserDefaults setObject:ary forKey:@"mappings"]; -} - -- (void)postLoadProcess { - for (NJMapping *mapping in self.mappings) - [mapping postLoadProcess:self.mappings]; -} - -- (void)load { - NSUInteger selected = [NSUserDefaults.standardUserDefaults integerForKey:@"selected"]; - NSArray *storedMappings = [NSUserDefaults.standardUserDefaults arrayForKey:@"mappings"]; - NSMutableArray* newMappings = [[NSMutableArray alloc] initWithCapacity:storedMappings.count]; - - for (NSDictionary *serialization in storedMappings) - [newMappings addObject: - [[NJMapping alloc] initWithSerialization:serialization]]; - - if (newMappings.count) { - _mappings = newMappings; - if (selected >= newMappings.count) - selected = 0; - [self activateMapping:_mappings[selected]]; - [self mappingsSet]; - } -} - -- (NSInteger)indexOfMapping:(NJMapping *)mapping { - return [_mappings indexOfObjectIdenticalTo:mapping]; -} - -- (void)mergeMapping:(NJMapping *)mapping intoMapping:(NJMapping *)existing { - [existing mergeEntriesFrom:mapping]; - [self mappingsChanged]; - if (existing == _currentMapping) - [self activateMappingForcibly:mapping]; -} - -- (void)renameMapping:(NJMapping *)mapping to:(NSString *)name { - mapping.name = name; - [self mappingsChanged]; - if (mapping == _currentMapping) - [self activateMappingForcibly:mapping]; -} - -- (void)addMapping:(NJMapping *)mapping { - [self insertMapping:mapping atIndex:_mappings.count]; -} - -- (void)insertMapping:(NJMapping *)mapping atIndex:(NSInteger)idx { - [_mappings insertObject:mapping atIndex:idx]; - [self mappingsChanged]; -} - -- (void)removeMappingAtIndex:(NSInteger)idx { - NSInteger currentIdx = [self indexOfMapping:_currentMapping]; - [_mappings removeObjectAtIndex:idx]; - [self activateMapping:self.mappings[MIN(currentIdx, _mappings.count - 1)]]; - [self mappingsChanged]; -} - -- (void)moveMoveMappingFromIndex:(NSInteger)fromIdx toIndex:(NSInteger)toIdx { - [_mappings moveObjectAtIndex:fromIdx toIndex:toIdx]; - [self mappingsChanged]; -} - -@end