diff options
author | Teddy Wing | 2018-10-20 21:07:37 +0200 |
---|---|---|
committer | Teddy Wing | 2018-10-20 21:07:37 +0200 |
commit | 1a7c0f0e45633424bef4872a0cc2a19877ba25f9 (patch) | |
tree | b99f242a6a8d3d6ffc01ee2d423e261a0dcde989 | |
parent | db8ad5e7c4c4dc027b242f00278daf661ad3ef22 (diff) | |
download | DomeKey-1a7c0f0e45633424bef4872a0cc2a19877ba25f9.tar.bz2 |
Get timeout from config
Pass the config through the app, and pass the timeout it contains to
`HeadphoneKey`.
This enables us to have a user-configurable timeout through a config
file.
-rw-r--r-- | DomeKey/AppDelegate.h | 3 | ||||
-rw-r--r-- | DomeKey/AppDelegate.m | 11 | ||||
-rw-r--r-- | DomeKey/HeadphoneKey.h | 4 | ||||
-rw-r--r-- | DomeKey/HeadphoneKey.m | 16 | ||||
-rw-r--r-- | DomeKey/main.m | 2 |
5 files changed, 32 insertions, 4 deletions
diff --git a/DomeKey/AppDelegate.h b/DomeKey/AppDelegate.h index b343d6c..a8f2d01 100644 --- a/DomeKey/AppDelegate.h +++ b/DomeKey/AppDelegate.h @@ -8,12 +8,15 @@ #import <Cocoa/Cocoa.h> #import "HeadphoneKey.h" +#import "dome_key_map.h" @interface AppDelegate : NSObject <NSApplicationDelegate> { HeadphoneKey *_headphone_key; MPRemoteCommandCenter *_blargh; + Config *_config; } +- (instancetype)initWithConfig:(Config *)config; - (void)mpmediaplayerBS; @end diff --git a/DomeKey/AppDelegate.m b/DomeKey/AppDelegate.m index 32bbd47..2146ef6 100644 --- a/DomeKey/AppDelegate.m +++ b/DomeKey/AppDelegate.m @@ -10,9 +10,18 @@ @implementation AppDelegate +- (instancetype)initWithConfig:(Config *)config +{ + self = [super init]; + if (self) { + _config = config; + } + return self; +} + - (void)applicationDidFinishLaunching:(NSNotification *)notification { - _headphone_key = [[HeadphoneKey alloc] init]; + _headphone_key = [[HeadphoneKey alloc] initWithTimeout:_config->timeout]; [_headphone_key startMonitoringBluetoothEvents]; _blargh = [MPRemoteCommandCenter sharedCommandCenter]; diff --git a/DomeKey/HeadphoneKey.h b/DomeKey/HeadphoneKey.h index 4f048e0..f6533c3 100644 --- a/DomeKey/HeadphoneKey.h +++ b/DomeKey/HeadphoneKey.h @@ -18,7 +18,7 @@ typedef enum KeyPress : BOOL { KeyPressUp = NO } KeyPress; -static const unsigned int TIMEOUT_MILLISECONDS = 1000; +static const Milliseconds TIMEOUT_DEFAULT = 500; @interface HeadphoneKey : NSObject { NSArray *_mikeys; @@ -26,8 +26,10 @@ static const unsigned int TIMEOUT_MILLISECONDS = 1000; // const Trigger *_in_mode; Trigger *_in_mode; State *_state; + Milliseconds _timeout; } +- (instancetype)initWithTimeout:(Milliseconds)timeout; - (void)handleDeadKey:(HeadphoneButton)button; - (void)runAction; - (void)startMonitoringBluetoothEvents; diff --git a/DomeKey/HeadphoneKey.m b/DomeKey/HeadphoneKey.m index e5ea7b0..5a83ad0 100644 --- a/DomeKey/HeadphoneKey.m +++ b/DomeKey/HeadphoneKey.m @@ -17,6 +17,11 @@ _key_buffer = [[NSMutableArray alloc] initWithCapacity:5]; _in_mode = NULL; _state = state_new(); + + // Should never be used. We initialise it just in case, but the real + // default should always come from a `Config`, set in the Rust library. + _timeout = TIMEOUT_DEFAULT; + logger_init(); state_load_map_group(_state); @@ -30,6 +35,15 @@ return self; } +- (instancetype)initWithTimeout:(Milliseconds)timeout +{ + self = [self init]; + if (self) { + _timeout = timeout; + } + return self; +} + - (void)dealloc { state_free(_state); @@ -107,7 +121,7 @@ selector:@selector(runAction) object:nil]; - NSTimeInterval timeout_seconds = TIMEOUT_MILLISECONDS / 1000.0; + NSTimeInterval timeout_seconds = _timeout / 1000.0; [self performSelector:@selector(runAction) withObject:nil afterDelay:timeout_seconds]; diff --git a/DomeKey/main.m b/DomeKey/main.m index 0f9d6ac..cabe180 100644 --- a/DomeKey/main.m +++ b/DomeKey/main.m @@ -27,7 +27,7 @@ int main(int argc, const char * argv[]) { } else if (config->args.daemon) { @autoreleasepool { [NSApplication sharedApplication]; - AppDelegate *app = [[AppDelegate alloc] init]; + AppDelegate *app = [[AppDelegate alloc] initWithConfig:config]; [NSApp setDelegate:app]; // insert code here... |