From 4223f9b6b87675effad767ed51f352f529ad670b Mon Sep 17 00:00:00 2001 From: Tomáš Znamenáček Date: Tue, 5 Aug 2014 17:52:18 +0200 Subject: Implemented NSCopying for MASShortcut. This makes it possible to use shortcuts as collection keys. --- Framework/MASShortcut.m | 59 +++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/Framework/MASShortcut.m b/Framework/MASShortcut.m index 20d4c11..133ce38 100644 --- a/Framework/MASShortcut.m +++ b/Framework/MASShortcut.m @@ -8,29 +8,7 @@ static NSString *const MASShortcutModifierFlags = @"ModifierFlags"; NSUInteger _modifierFlags; // 0 if empty } -#pragma mark - - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (void)encodeWithCoder:(NSCoder *)coder -{ - [coder encodeInteger:(self.keyCode != NSNotFound ? (NSInteger)self.keyCode : - 1) forKey:MASShortcutKeyCode]; - [coder encodeInteger:(NSInteger)self.modifierFlags forKey:MASShortcutModifierFlags]; -} - -- (instancetype)initWithCoder:(NSCoder *)decoder -{ - self = [super init]; - if (self) { - NSInteger code = [decoder decodeIntegerForKey:MASShortcutKeyCode]; - self.keyCode = (code < 0 ? NSNotFound : (NSUInteger)code); - self.modifierFlags = [decoder decodeIntegerForKey:MASShortcutModifierFlags]; - } - return self; -} +#pragma mark Initialization - (instancetype)initWithKeyCode:(NSUInteger)code modifierFlags:(NSUInteger)flags { @@ -52,7 +30,7 @@ static NSString *const MASShortcutModifierFlags = @"ModifierFlags"; return [[self alloc] initWithKeyCode:event.keyCode modifierFlags:event.modifierFlags]; } -#pragma mark - Shortcut accessors +#pragma mark Shortcut Accessors - (void)setModifierFlags:(NSUInteger)value { @@ -221,4 +199,37 @@ static NSString *const MASShortcutModifierFlags = @"ModifierFlags"; return (count ? [NSString stringWithCharacters:chars length:count] : @""); } +#pragma mark NSCoding + +- (void)encodeWithCoder:(NSCoder *)coder +{ + [coder encodeInteger:(self.keyCode != NSNotFound ? (NSInteger)self.keyCode : - 1) forKey:MASShortcutKeyCode]; + [coder encodeInteger:(NSInteger)self.modifierFlags forKey:MASShortcutModifierFlags]; +} + +- (instancetype)initWithCoder:(NSCoder *)decoder +{ + self = [super init]; + if (self) { + NSInteger code = [decoder decodeIntegerForKey:MASShortcutKeyCode]; + self.keyCode = (code < 0 ? NSNotFound : (NSUInteger)code); + self.modifierFlags = [decoder decodeIntegerForKey:MASShortcutModifierFlags]; + } + return self; +} + +#pragma mark NSSecureCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +#pragma mark NSCopying + +- (instancetype) copyWithZone:(NSZone *)zone +{ + return [[self class] shortcutWithKeyCode:_keyCode modifierFlags:_modifierFlags]; +} + @end -- cgit v1.2.3