From 1d19b08f21407f27ba00a134f1c8bfa325c25591 Mon Sep 17 00:00:00 2001 From: James Hurst Date: Sun, 17 Aug 2014 19:28:29 -0400 Subject: [PATCH] Implemented workflow double click settings --- MacPass/Base.lproj/GeneralSettings.xib | 41 +++---------------- MacPass/Base.lproj/WorkflowSettings.xib | 8 ++-- MacPass/MPEntryViewController.m | 22 ++++++++-- MacPass/MPGeneralSettingsController.h | 1 - MacPass/MPGeneralSettingsController.m | 1 - MacPass/MPSettingsHelper.h | 16 +++++++- MacPass/MPSettingsHelper.m | 33 ++++++++------- MacPass/MPWorkflowSettingsController.h | 2 + MacPass/MPWorkflowSettingsController.m | 5 +++ MacPass/de.lproj/WorkflowSettings.strings | 2 +- MacPass/en.lproj/WorkflowSettings.strings | 4 +- MacPass/fr.lproj/WorkflowSettings.strings | 4 +- MacPass/nl.lproj/WorkflowSettings.strings | 4 +- .../zh-Hans.lproj/WorkflowSettings.strings | 2 +- 14 files changed, 78 insertions(+), 67 deletions(-) diff --git a/MacPass/Base.lproj/GeneralSettings.xib b/MacPass/Base.lproj/GeneralSettings.xib index a375c720..949010ed 100644 --- a/MacPass/Base.lproj/GeneralSettings.xib +++ b/MacPass/Base.lproj/GeneralSettings.xib @@ -1,8 +1,8 @@ - + - + @@ -10,7 +10,6 @@ - @@ -22,33 +21,9 @@ - + - - - - - - - - - - - - - - - - - @@ -196,7 +171,7 @@ - + @@ -238,13 +213,9 @@ - - - - - + - \ No newline at end of file + diff --git a/MacPass/Base.lproj/WorkflowSettings.xib b/MacPass/Base.lproj/WorkflowSettings.xib index f04ddbf4..1c0c551e 100644 --- a/MacPass/Base.lproj/WorkflowSettings.xib +++ b/MacPass/Base.lproj/WorkflowSettings.xib @@ -8,6 +8,8 @@ + + @@ -36,7 +38,7 @@ - + @@ -59,13 +61,13 @@ - + - + diff --git a/MacPass/MPEntryViewController.m b/MacPass/MPEntryViewController.m index 50beb8ce..acb71219 100644 --- a/MacPass/MPEntryViewController.m +++ b/MacPass/MPEntryViewController.m @@ -660,7 +660,17 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell"; NSTableColumn *column = [self.entryTable tableColumns][[self.entryTable clickedColumn]]; NSString *identifier = [column identifier]; if([identifier isEqualToString:MPEntryTableTitleColumnIdentifier]) { - [[self windowController] showInspector:nil]; + MPDoubleClickTitleAction action = [[NSUserDefaults standardUserDefaults] integerForKey:kMPSettingsKeyDoubleClickTitleAction]; + if (action == MPDoubleClickTitleActionInspect) { + [[self windowController] showInspector:nil]; + } + else if (action == MPDoubleClickTitleActionIgnore) { + + } + else { + NSLog(@"Unknown double click action"); + } + } else if([identifier isEqualToString:MPEntryTablePasswordColumnIdentifier]) { [self copyPassword:nil]; @@ -669,10 +679,16 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell"; [self copyUsername:nil]; } else if([identifier isEqualToString:MPEntryTableURLColumnIdentifier]) { - if([[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyDoubleClickURLToLaunch]) + MPDoubleClickURLAction action = [[NSUserDefaults standardUserDefaults] integerForKey:kMPSettingsKeyDoubleClickURLAction]; + if(action == MPDoubleClickURLActionOpen) { [self openURL:nil]; - else + } + else if (action == MPDoubleClickURLActionCopy) { [self copyURL:nil]; + } + else { + NSLog(@"Unknown double click URL action"); + } } // TODO: Add more actions for new columns } diff --git a/MacPass/MPGeneralSettingsController.h b/MacPass/MPGeneralSettingsController.h index 95d7aa34..4e206ce2 100644 --- a/MacPass/MPGeneralSettingsController.h +++ b/MacPass/MPGeneralSettingsController.h @@ -13,7 +13,6 @@ @interface MPGeneralSettingsController : MPViewController @property (weak) IBOutlet NSButton *clearPasteboardOnQuitCheckButton; -@property (weak) IBOutlet NSButton *doubleClickURLToLaunchCheckButton; @property (weak) IBOutlet NSPopUpButton *clearPasteboardTimeoutPopup; @property (weak) IBOutlet NSPopUpButton *idleTimeOutPopup; @property (weak) IBOutlet NSButton *lockOnSleepCheckButton; diff --git a/MacPass/MPGeneralSettingsController.m b/MacPass/MPGeneralSettingsController.m index 248d38d5..dc545e90 100644 --- a/MacPass/MPGeneralSettingsController.m +++ b/MacPass/MPGeneralSettingsController.m @@ -34,7 +34,6 @@ NSString *const MPGeneralSetingsIdentifier = @"GeneralSettingsTab"; NSUserDefaultsController *defaultsController = [NSUserDefaultsController sharedUserDefaultsController]; [self.clearPasteboardOnQuitCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyClearPasteboardOnQuit] options:nil]; - [self.doubleClickURLToLaunchCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDoubleClickURLToLaunch] options:nil]; [self.clearPasteboardTimeoutPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyPasteboardClearTimeout] options:nil]; [self.lockOnSleepCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyLockOnSleep] options:nil]; [self.idleTimeOutPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyIdleLockTimeOut] options:nil]; diff --git a/MacPass/MPSettingsHelper.h b/MacPass/MPSettingsHelper.h index da94f14f..a87014c9 100644 --- a/MacPass/MPSettingsHelper.h +++ b/MacPass/MPSettingsHelper.h @@ -18,7 +18,6 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch; APPKIT_EXTERN NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch; /* URL handling */ -APPKIT_EXTERN NSString *const kMPSettingsKeyDoubleClickURLToLaunch; APPKIT_EXTERN NSString *const kMPSettingsKeyBrowserBundleId; /* Server Settings */ @@ -50,7 +49,6 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyRememberKeyFilesForDatabases; // APPKIT_EXTERN NSString *const kMPSettingsKeySendCommandForControlKey; // Should MacPass swap control for command. This is usefull in a cross plattform environment APPKIT_EXTERN NSString *const kMPSettingsKeyEnableGlobalAutotype; // Is Global Autotype enabled? APPKIT_EXTERN NSString *const kMPSettingsKeyGlobalAutotypeKeyDataKey; // The stored Data for the useder defined global autotype key -APPKIT_EXTERN NSString *const kMPDepricatedSettingsKeyDocumentsAutotypeFixNoteWasShown; // YES if Autotype fix was shown /* Search */ APPKIT_EXTERN NSString *const kMPSettingsKeyEntrySearchFilterMode; @@ -58,6 +56,20 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyEntrySearchFilterMode; /* Quicklook */ APPKIT_EXTERN NSString *const kMPSettingsKeyEnableQuicklookPreview; +/* Workflow */ +APPKIT_EXTERN NSString *const kMPSettingsKeyDoubleClickURLAction; +APPKIT_EXTERN NSString *const kMPSettingsKeyDoubleClickTitleAction; + +typedef NS_ENUM(NSUInteger, MPDoubleClickURLAction) { + MPDoubleClickURLActionCopy, + MPDoubleClickURLActionOpen, +}; + +typedef NS_ENUM(NSUInteger, MPDoubleClickTitleAction) { + MPDoubleClickTitleActionInspect, + MPDoubleClickTitleActionIgnore, +}; + /* Password Generation */ APPKIT_EXTERN NSString *const kMPSettingsKeyCopyGeneratedPasswordToClipboard; APPKIT_EXTERN NSString *const kMPSettingsKeyDefaultPasswordRounds; diff --git a/MacPass/MPSettingsHelper.m b/MacPass/MPSettingsHelper.m index 8c3c5081..91580275 100644 --- a/MacPass/MPSettingsHelper.m +++ b/MacPass/MPSettingsHelper.m @@ -11,7 +11,6 @@ NSString *const kMPSettingsKeyPasteboardClearTimeout = @"ClipboardClearTimeout"; NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearClipboardOnQuit"; -NSString *const kMPSettingsKeyDoubleClickURLToLaunch = @"DoubleClickURLToLaunch"; NSString *const kMPSettingsKeyBrowserBundleId = @"BrowserBundleId"; NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch = @"OpenEmptyDatabaseOnLaunch"; NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch = @"ReopenLastDatabaseOnLaunch"; @@ -49,10 +48,14 @@ NSString *const kMPSettingsKeyPasswordCharacterFlags = @"Passwo NSString *const kMPSettingsKeyPasswordUseCustomString = @"PasswordUseCustomString"; NSString *const kMPSettingsKeyPasswordCustomString = @"PasswordCustomString"; -/* Depricated */ -NSString *const kMPDepricatedSettingsKeyRememberKeyFilesForDatabases = @"kMPSettingsKeyRememberKeyFilesForDatabases"; -NSString *const kMPDepricatedSettingsKeyLastDatabasePath = @"MPLastDatabasePath"; -NSString *const kMPDepricatedSettingsKeyDocumentsAutotypeFixNoteWasShown = @"DocumentsAutotypeFixNoteWasShown"; +NSString *const kMPSettingsKeyDoubleClickURLAction = @"DoubleClickURLAction"; +NSString *const kMPSettingsKeyDoubleClickTitleAction = @"DoubleClickTitleAction"; + +/* Deprecated */ +NSString *const kMPDeprecatedSettingsKeyRememberKeyFilesForDatabases = @"kMPSettingsKeyRememberKeyFilesForDatabases"; +NSString *const kMPDeprecatedSettingsKeyLastDatabasePath = @"MPLastDatabasePath"; +NSString *const kMPDeprecatedSettingsKeyDocumentsAutotypeFixNoteWasShown = @"DocumentsAutotypeFixNoteWasShown"; +NSString *const kMPDeprecatedSettingsKeyDoubleClickURLToLaunch = @"DoubleClickURLToLaunch"; @implementation MPSettingsHelper @@ -77,7 +80,6 @@ NSString *const kMPDepricatedSettingsKeyDocumentsAutotypeFixNoteWasShown = @"Do kMPSettingsKeyShowInspector: @YES, // Show the Inspector by default kMPSettingsKeyPasteboardClearTimeout: @30, // 30 seconds kMPSettingsKeyClearPasteboardOnQuit: @YES, - kMPSettingsKeyDoubleClickURLToLaunch: @NO, kMPSettingsKeyOpenEmptyDatabaseOnLaunch: @NO, kMPSettingsKeyReopenLastDatabaseOnLaunch: @YES, kMPSettingsKeyHttpPort: @19455, @@ -100,27 +102,30 @@ NSString *const kMPDepricatedSettingsKeyDocumentsAutotypeFixNoteWasShown = @"Do kMPSettingsKeyDefaultPasswordLength: @12, kMPSettingsKeyPasswordCharacterFlags: @(MPPasswordCharactersAll), kMPSettingsKeyPasswordUseCustomString: @NO, - kMPSettingsKeyPasswordCustomString: @"" + kMPSettingsKeyPasswordCustomString: @"", + kMPSettingsKeyDoubleClickURLAction: @(MPDoubleClickURLActionCopy), + kMPSettingsKeyDoubleClickTitleAction: @(MPDoubleClickTitleActionInspect) }; }); return standardDefaults; } -+ (NSArray *)_depircatedSettingsKeys { - static NSArray *depircatedSettings; ++ (NSArray *)_deprecatedSettingsKeys { + static NSArray *deprecatedSettings; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - depircatedSettings = @[ kMPDepricatedSettingsKeyRememberKeyFilesForDatabases, - kMPDepricatedSettingsKeyLastDatabasePath, - kMPDepricatedSettingsKeyDocumentsAutotypeFixNoteWasShown ]; + deprecatedSettings = @[ kMPDeprecatedSettingsKeyRememberKeyFilesForDatabases, + kMPDeprecatedSettingsKeyLastDatabasePath, + kMPDeprecatedSettingsKeyDocumentsAutotypeFixNoteWasShown, + kMPDeprecatedSettingsKeyDoubleClickURLToLaunch ]; }); - return depircatedSettings; + return deprecatedSettings; } + (void)_removeObsolteValues { /* Clear old style values */ - for(NSString *key in [self _depircatedSettingsKeys]) { + for(NSString *key in [self _deprecatedSettingsKeys]) { [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; } } diff --git a/MacPass/MPWorkflowSettingsController.h b/MacPass/MPWorkflowSettingsController.h index c03c353f..38de88a7 100644 --- a/MacPass/MPWorkflowSettingsController.h +++ b/MacPass/MPWorkflowSettingsController.h @@ -12,6 +12,8 @@ @interface MPWorkflowSettingsController : MPViewController @property (weak) IBOutlet NSPopUpButton *browserPopup; +@property (weak) IBOutlet NSPopUpButton *doubleClickURLPopup; +@property (weak) IBOutlet NSPopUpButton *doubleClickTitlePopup; - (IBAction)_showCustomBrowserSelection:(id)sender; diff --git a/MacPass/MPWorkflowSettingsController.m b/MacPass/MPWorkflowSettingsController.m index ff1f21c2..cdb79cc2 100644 --- a/MacPass/MPWorkflowSettingsController.m +++ b/MacPass/MPWorkflowSettingsController.m @@ -21,6 +21,11 @@ } - (void)didLoadView { + NSUserDefaultsController *defaultsController = [NSUserDefaultsController sharedUserDefaultsController]; + + [self.doubleClickURLPopup bind:NSSelectedIndexBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDoubleClickURLAction] options:nil]; + [self.doubleClickTitlePopup bind:NSSelectedIndexBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDoubleClickTitleAction] options:nil]; + [self _updateBrowserSelection]; } diff --git a/MacPass/de.lproj/WorkflowSettings.strings b/MacPass/de.lproj/WorkflowSettings.strings index f6a48105..1698658c 100644 --- a/MacPass/de.lproj/WorkflowSettings.strings +++ b/MacPass/de.lproj/WorkflowSettings.strings @@ -20,7 +20,7 @@ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "42"; */ "42.title" = "OtherViews"; -/* Class = "NSMenuItem"; title = "is Ignored"; ObjectID = "43"; */ +/* Class = "NSMenuItem"; title = "Is Ignored"; ObjectID = "43"; */ "43.title" = "ignorieren"; /* Class = "NSMenuItem"; title = "Opens Inspector"; ObjectID = "44"; */ diff --git a/MacPass/en.lproj/WorkflowSettings.strings b/MacPass/en.lproj/WorkflowSettings.strings index 10c668c9..56e8924f 100644 --- a/MacPass/en.lproj/WorkflowSettings.strings +++ b/MacPass/en.lproj/WorkflowSettings.strings @@ -20,8 +20,8 @@ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "42"; */ "42.title" = "OtherViews"; -/* Class = "NSMenuItem"; title = "is Ignored"; ObjectID = "43"; */ -"43.title" = "is Ignored"; +/* Class = "NSMenuItem"; title = "Is Ignored"; ObjectID = "43"; */ +"43.title" = "Is Ignored"; /* Class = "NSMenuItem"; title = "Opens Inspector"; ObjectID = "44"; */ "44.title" = "Opens Inspector"; diff --git a/MacPass/fr.lproj/WorkflowSettings.strings b/MacPass/fr.lproj/WorkflowSettings.strings index 10c668c9..56e8924f 100644 --- a/MacPass/fr.lproj/WorkflowSettings.strings +++ b/MacPass/fr.lproj/WorkflowSettings.strings @@ -20,8 +20,8 @@ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "42"; */ "42.title" = "OtherViews"; -/* Class = "NSMenuItem"; title = "is Ignored"; ObjectID = "43"; */ -"43.title" = "is Ignored"; +/* Class = "NSMenuItem"; title = "Is Ignored"; ObjectID = "43"; */ +"43.title" = "Is Ignored"; /* Class = "NSMenuItem"; title = "Opens Inspector"; ObjectID = "44"; */ "44.title" = "Opens Inspector"; diff --git a/MacPass/nl.lproj/WorkflowSettings.strings b/MacPass/nl.lproj/WorkflowSettings.strings index af9777a7..0c511add 100644 --- a/MacPass/nl.lproj/WorkflowSettings.strings +++ b/MacPass/nl.lproj/WorkflowSettings.strings @@ -20,8 +20,8 @@ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "42"; */ "42.title" = "Overige"; -/* Class = "NSMenuItem"; title = "is Ignored"; ObjectID = "43"; */ -"43.title" = "is Genegeerd"; +/* Class = "NSMenuItem"; title = "Is Ignored"; ObjectID = "43"; */ +"43.title" = "Is Genegeerd"; /* Class = "NSMenuItem"; title = "Opens Inspector"; ObjectID = "44"; */ "44.title" = "Opent Inspector"; diff --git a/MacPass/zh-Hans.lproj/WorkflowSettings.strings b/MacPass/zh-Hans.lproj/WorkflowSettings.strings index 7ccd85af..5b98d640 100644 --- a/MacPass/zh-Hans.lproj/WorkflowSettings.strings +++ b/MacPass/zh-Hans.lproj/WorkflowSettings.strings @@ -20,7 +20,7 @@ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "42"; */ "42.title" = "其他视图"; -/* Class = "NSMenuItem"; title = "is Ignored"; ObjectID = "43"; */ +/* Class = "NSMenuItem"; title = "Is Ignored"; ObjectID = "43"; */ "43.title" = "被忽略了"; /* Class = "NSMenuItem"; title = "Opens Inspector"; ObjectID = "44"; */