diff options
Diffstat (limited to 'Demo/AppDelegate.m')
| -rw-r--r-- | Demo/AppDelegate.m | 116 | 
1 files changed, 116 insertions, 0 deletions
diff --git a/Demo/AppDelegate.m b/Demo/AppDelegate.m new file mode 100644 index 0000000..62425c0 --- /dev/null +++ b/Demo/AppDelegate.m @@ -0,0 +1,116 @@ +#import "AppDelegate.h" +#import "MASShortcutView.h" +#import "MASShortcutView+UserDefaults.h" +#import "MASShortcut+UserDefaults.h" +#import "MASShortcut+Monitoring.h" + +NSString *const MASPreferenceKeyShortcut = @"MASDemoShortcut"; +NSString *const MASPreferenceKeyShortcutEnabled = @"MASDemoShortcutEnabled"; +NSString *const MASPreferenceKeyConstantShortcutEnabled = @"MASDemoConstantShortcutEnabled"; + +@implementation AppDelegate { +    __weak id _constantShortcutMonitor; +} + +@synthesize window = _window; +@synthesize shortcutView = _shortcutView; + +#pragma mark - + +- (void)awakeFromNib +{ +    [super awakeFromNib]; + +    // Checkbox will enable and disable the shortcut view +    [self.shortcutView bind:@"enabled" toObject:self withKeyPath:@"shortcutEnabled" options:nil]; +} + +- (void)dealloc +{ +    // Cleanup +    [self.shortcutView unbind:@"enabled"]; +} + +#pragma mark - NSApplicationDelegate + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ +    // Uncomment the following lines to make Command-Shift-D the default shortcut +//    MASShortcut *defaultShortcut = [MASShortcut shortcutWithKeyCode:0x2 modifierFlags:NSCommandKeyMask|NSShiftKeyMask]; +//    [MASShortcut setGlobalShortcut:defaultShortcut forUserDefaultsKey:MASPreferenceKeyShortcut]; + +    // Shortcut view will follow and modify user preferences automatically +    self.shortcutView.associatedUserDefaultsKey = MASPreferenceKeyShortcut; + +    // Activate the global keyboard shortcut if it was enabled last time +    [self resetShortcutRegistration]; + +    // Activate the shortcut Command-F1 if it was enabled +    [self resetConstantShortcutRegistration]; +} + +- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender +{ +    return YES; +} + +#pragma mark - Custom shortcut + +- (BOOL)isShortcutEnabled +{ +    return [[NSUserDefaults standardUserDefaults] boolForKey:MASPreferenceKeyShortcutEnabled]; +} + +- (void)setShortcutEnabled:(BOOL)enabled +{ +    if (self.shortcutEnabled != enabled) { +        [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:MASPreferenceKeyShortcutEnabled]; +        [self resetShortcutRegistration]; +    } +} + +- (void)resetShortcutRegistration +{ +    if (self.shortcutEnabled) { +        [MASShortcut registerGlobalShortcutWithUserDefaultsKey:MASPreferenceKeyShortcut handler:^{ +            [[NSAlert alertWithMessageText:NSLocalizedString(@"Global hotkey has been pressed.", @"Alert message for custom shortcut") +                             defaultButton:NSLocalizedString(@"OK", @"Default button for the alert on custom shortcut") +                           alternateButton:nil otherButton:nil informativeTextWithFormat:@""] runModal]; +        }]; +    } +    else { +        [MASShortcut unregisterGlobalShortcutWithUserDefaultsKey:MASPreferenceKeyShortcut]; +    } +} + +#pragma mark - Constant shortcut + +- (BOOL)isConstantShortcutEnabled +{ +    return [[NSUserDefaults standardUserDefaults] boolForKey:MASPreferenceKeyConstantShortcutEnabled]; +} + +- (void)setConstantShortcutEnabled:(BOOL)enabled +{ +    if (self.constantShortcutEnabled != enabled) { +        [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:MASPreferenceKeyConstantShortcutEnabled]; +        [self resetConstantShortcutRegistration]; +    } +} + +- (void)resetConstantShortcutRegistration +{ +    if (self.constantShortcutEnabled) { +        MASShortcut *shortcut = [MASShortcut shortcutWithKeyCode:kVK_F2 modifierFlags:NSCommandKeyMask]; +        _constantShortcutMonitor = [MASShortcut addGlobalHotkeyMonitorWithShortcut:shortcut handler:^{ +            [[NSAlert alertWithMessageText:NSLocalizedString(@"⌘F2 has been pressed.", @"Alert message for constant shortcut") +                             defaultButton:NSLocalizedString(@"OK", @"Default button for the alert on constant shortcut") +                           alternateButton:nil otherButton:nil informativeTextWithFormat:@""] runModal]; +        }]; +    } +    else { +        [MASShortcut removeGlobalHotkeyMonitor:_constantShortcutMonitor]; +    } +} + +@end  | 
