modern Objective-C, added setting for template workflow

New settign added that allows to update password for entries created via a template
This commit is contained in:
michael starke
2016-07-26 16:03:50 +02:00
parent 257692c13e
commit 49206d3d74
4 changed files with 38 additions and 24 deletions

View File

@@ -59,6 +59,7 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyEnableQuicklookPreview;
/* Workflow */ /* Workflow */
APPKIT_EXTERN NSString *const kMPSettingsKeyDoubleClickURLAction; APPKIT_EXTERN NSString *const kMPSettingsKeyDoubleClickURLAction;
APPKIT_EXTERN NSString *const kMPSettingsKeyDoubleClickTitleAction; APPKIT_EXTERN NSString *const kMPSettingsKeyDoubleClickTitleAction;
APPKIT_EXTERN NSString *const kMPSettingsKeyUpdatePasswordOnTemplateEntries;
/* Plugins */ /* Plugins */
APPKIT_EXTERN NSString *const kMPSettingsKeyLoadUnsecurePlugins; // If set to YES this will load all plugins regardless of their codesignature status APPKIT_EXTERN NSString *const kMPSettingsKeyLoadUnsecurePlugins; // If set to YES this will load all plugins regardless of their codesignature status

View File

@@ -57,6 +57,7 @@ NSString *const kMPSettingsKeyPasswordDefaultsForEntry = @"Passwo
NSString *const kMPSettingsKeyDoubleClickURLAction = @"DoubleClickURLAction"; NSString *const kMPSettingsKeyDoubleClickURLAction = @"DoubleClickURLAction";
NSString *const kMPSettingsKeyDoubleClickTitleAction = @"DoubleClickTitleAction"; NSString *const kMPSettingsKeyDoubleClickTitleAction = @"DoubleClickTitleAction";
NSString *const kMPSettingsKeyUpdatePasswordOnTemplateEntries = @"UpdatePasswordOnTemplateEntries";
NSString *const kMPSettingsKeyLoadUnsecurePlugins = @"MPLoadUnsecurePlugins"; NSString *const kMPSettingsKeyLoadUnsecurePlugins = @"MPLoadUnsecurePlugins";
@@ -124,7 +125,8 @@ NSString *const kMPDeprecatedSettingsKeyShowMenuItem = @"Sh
kMPSettingsKeyPasswordCustomString: @"", kMPSettingsKeyPasswordCustomString: @"",
kMPSettingsKeyDoubleClickURLAction: @(MPDoubleClickURLActionCopy), kMPSettingsKeyDoubleClickURLAction: @(MPDoubleClickURLActionCopy),
kMPSettingsKeyDoubleClickTitleAction: @(MPDoubleClickTitleActionInspect), kMPSettingsKeyDoubleClickTitleAction: @(MPDoubleClickTitleActionInspect),
kMPSettingsKeyLoadUnsecurePlugins: @NO kMPSettingsKeyLoadUnsecurePlugins: @NO,
kMPSettingsKeyUpdatePasswordOnTemplateEntries: @YES
}; };
}); });
return standardDefaults; return standardDefaults;

View File

@@ -14,6 +14,7 @@
@property (weak) IBOutlet NSPopUpButton *browserPopup; @property (weak) IBOutlet NSPopUpButton *browserPopup;
@property (weak) IBOutlet NSPopUpButton *doubleClickURLPopup; @property (weak) IBOutlet NSPopUpButton *doubleClickURLPopup;
@property (weak) IBOutlet NSPopUpButton *doubleClickTitlePopup; @property (weak) IBOutlet NSPopUpButton *doubleClickTitlePopup;
@property (weak) IBOutlet NSButton *updatePasswordOnTemplateEntriesCheckButton;
- (IBAction)_showCustomBrowserSelection:(id)sender; - (IBAction)_showCustomBrowserSelection:(id)sender;

View File

@@ -25,7 +25,7 @@
[self.doubleClickURLPopup bind:NSSelectedIndexBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDoubleClickURLAction] options:nil]; [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.doubleClickTitlePopup bind:NSSelectedIndexBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDoubleClickTitleAction] options:nil];
[self.updatePasswordOnTemplateEntriesCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyUpdatePasswordOnTemplateEntries] options:nil];
[self _updateBrowserSelection]; [self _updateBrowserSelection];
} }
@@ -62,17 +62,17 @@
- (void)_showCustomBrowserSelection:(id)sender { - (void)_showCustomBrowserSelection:(id)sender {
NSOpenPanel *openPanel = [NSOpenPanel openPanel]; NSOpenPanel *openPanel = [NSOpenPanel openPanel];
NSURL *applicationURL = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationDirectory inDomains:NSLocalDomainMask][0]; NSURL *applicationURL = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationDirectory inDomains:NSLocalDomainMask][0];
[openPanel setDirectoryURL:applicationURL]; openPanel.directoryURL = applicationURL;
[openPanel setAllowsMultipleSelection:NO]; openPanel.allowsMultipleSelection = NO;
[openPanel setCanChooseDirectories:NO]; openPanel.canChooseDirectories = NO;
[openPanel setCanChooseFiles:YES]; openPanel.canChooseFiles = YES;
[openPanel setAllowedFileTypes:@[@"app"]]; openPanel.allowedFileTypes = @[@"app"];
[openPanel beginSheetModalForWindow:[[self view] window] completionHandler:^(NSInteger result) { [openPanel beginSheetModalForWindow:self.view.window completionHandler:^(NSInteger result) {
if(result == NSFileHandlingPanelOKButton) { if(result == NSFileHandlingPanelOKButton) {
// TODO: Autorelease pool? // TODO: Autorelease pool?
NSMenuItem *customBrowser = [[NSMenuItem alloc] init]; NSMenuItem *customBrowser = [[NSMenuItem alloc] init];
[customBrowser setRepresentedObject:[[NSBundle bundleWithPath:[[openPanel URL] path]] bundleIdentifier]]; customBrowser.representedObject = [NSBundle bundleWithPath:openPanel.URL.path].bundleIdentifier;
[self _selectBrowser:customBrowser]; [self _selectBrowser:customBrowser];
} }
else { else {
@@ -86,11 +86,14 @@
- (void)_updateBrowserSelection { - (void)_updateBrowserSelection {
/* Use a delegate ? */ /* Use a delegate ? */
NSMenu *browserMenu = [[NSMenu alloc] init]; NSMenu *browserMenu = [[NSMenu alloc] init];
[self.browserPopup setMenu:browserMenu]; self.browserPopup.menu = browserMenu;
NSMenuItem *defaultItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"DEFAULT_BROWSER", "Default Browser") action:@selector(_selectBrowser:) keyEquivalent:@""]; NSMenuItem *defaultItem = [[NSMenuItem alloc] init];
[defaultItem setRepresentedObject:nil]; defaultItem.title = NSLocalizedString(@"DEFAULT_BROWSER", "Default Browser");
[defaultItem setTarget:self]; defaultItem.action = @selector(_selectBrowser:);
defaultItem.keyEquivalent = @"";
defaultItem.representedObject = nil;
defaultItem.target = self;
[browserMenu addItem:defaultItem]; [browserMenu addItem:defaultItem];
NSString *currentDefaultBrowser = [[NSUserDefaults standardUserDefaults] objectForKey:kMPSettingsKeyBrowserBundleId]; NSString *currentDefaultBrowser = [[NSUserDefaults standardUserDefaults] objectForKey:kMPSettingsKeyBrowserBundleId];
@@ -104,9 +107,12 @@
if(nil == bundlePath || nil == browserName) { if(nil == bundlePath || nil == browserName) {
continue; // Skip missing Applications continue; // Skip missing Applications
} }
NSMenuItem *browserItem = [[NSMenuItem alloc] initWithTitle:browserName action:@selector(_selectBrowser:) keyEquivalent:@""]; NSMenuItem *browserItem = [[NSMenuItem alloc] init];
[browserItem setRepresentedObject:bundleIdentifier]; browserItem.title = browserName;
[browserItem setTarget:self]; browserItem.action = @selector(_selectBrowser:);
browserItem.keyEquivalent = @"";
browserItem.representedObject = bundleIdentifier;
browserItem.target = self;
[browserMenu addItem:browserItem]; [browserMenu addItem:browserItem];
if ([bundleIdentifier isEqualToString:currentDefaultBrowser]) { if ([bundleIdentifier isEqualToString:currentDefaultBrowser]) {
@@ -114,7 +120,7 @@
} }
} }
if([[browserMenu itemArray] count] > 2) { if(browserMenu.itemArray.count > 2) {
[browserMenu addItem:[NSMenuItem separatorItem]]; [browserMenu addItem:[NSMenuItem separatorItem]];
} }
@@ -122,19 +128,23 @@
NSString *bundlePath = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:currentDefaultBrowser]; NSString *bundlePath = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:currentDefaultBrowser];
if (bundlePath != nil) { if (bundlePath != nil) {
NSString *browserName = [[NSFileManager defaultManager] displayNameAtPath:bundlePath]; NSString *browserName = [[NSFileManager defaultManager] displayNameAtPath:bundlePath];
NSMenuItem *browserItem = [[NSMenuItem alloc] initWithTitle:browserName action:@selector(_selectBrowser:) keyEquivalent:@""]; NSMenuItem *browserItem = [[NSMenuItem alloc] init];
[browserItem setRepresentedObject:currentDefaultBrowser]; browserItem.title = browserName;
[browserItem setTarget:self]; browserItem.action = @selector(_selectBrowser:);
browserItem.keyEquivalent = @"";
browserItem.representedObject = currentDefaultBrowser;
browserItem.target = self;
[browserMenu addItem:browserItem]; [browserMenu addItem:browserItem];
selectedItem = browserItem; selectedItem = browserItem;
} }
} }
NSMenuItem *selectOtherBrowserItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"OTHER_BROWSER", "Select Browser") NSMenuItem *selectOtherBrowserItem = [[NSMenuItem alloc] init];
action:@selector(_showCustomBrowserSelection:) selectOtherBrowserItem.title = NSLocalizedString(@"OTHER_BROWSER", "Select Browser");
keyEquivalent:@""]; selectOtherBrowserItem.action = @selector(_showCustomBrowserSelection:);
[selectOtherBrowserItem setTarget:self]; selectOtherBrowserItem.keyEquivalent = @"";
selectOtherBrowserItem.target = self;
[browserMenu addItem:selectOtherBrowserItem]; [browserMenu addItem:selectOtherBrowserItem];
[self.browserPopup selectItem:selectedItem]; [self.browserPopup selectItem:selectedItem];