aboutsummaryrefslogtreecommitdiffstats
path: root/Framework
diff options
context:
space:
mode:
authorTomáš Znamenáček2014-08-05 17:52:18 +0200
committerTomáš Znamenáček2015-01-07 15:33:45 +0100
commit4223f9b6b87675effad767ed51f352f529ad670b (patch)
tree8d5e69ae74d56ff337a08528c625b616723d411c /Framework
parent90cf1f856c9d3714df6c173e770e94e50621ee82 (diff)
downloadMASShortcut-4223f9b6b87675effad767ed51f352f529ad670b.tar.bz2
Implemented NSCopying for MASShortcut.
This makes it possible to use shortcuts as collection keys.
Diffstat (limited to 'Framework')
-rw-r--r--Framework/MASShortcut.m59
1 files 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