From f266375a090ccc6e73dc649306b643f3d6526158 Mon Sep 17 00:00:00 2001 From: michael starke Date: Sun, 1 Dec 2013 23:10:25 +0100 Subject: [PATCH] Added entry creation via templates --- MacPass/MPAddEntryContextMenuDelegate.m | 4 +-- MacPass/MPDocument.m | 12 ++++++-- MacPass/MPOutlineDataSource.m | 3 ++ MacPass/MPSettingsHelper.h | 7 ++--- MacPass/MPSettingsHelper.m | 41 +++++++++++++------------ 5 files changed, 38 insertions(+), 29 deletions(-) diff --git a/MacPass/MPAddEntryContextMenuDelegate.m b/MacPass/MPAddEntryContextMenuDelegate.m index 3e1aa4ba..b9e801c3 100644 --- a/MacPass/MPAddEntryContextMenuDelegate.m +++ b/MacPass/MPAddEntryContextMenuDelegate.m @@ -36,7 +36,7 @@ /* The Method is rather brute force It's possible nicer to cache the entries and just update - the menu entries, that actuyll need updating + the menu entries, that actually need updating */ MPDocument *document = [[NSDocumentController sharedDocumentController] currentDocument]; if(!document) { @@ -51,7 +51,7 @@ NSMenuItem *templateItem = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:[NSString stringWithFormat:templateMask, entry.title] action:@selector(createEntryFromTemplate:) keyEquivalent:@""]; - [templateItem setRepresentedObject:entry]; + [templateItem setRepresentedObject:entry.uuid]; [menu addItem:templateItem]; } /* If there are no entries, add a note as disabled menu item */ diff --git a/MacPass/MPDocument.m b/MacPass/MPDocument.m index 64c84d15..e6649697 100644 --- a/MacPass/MPDocument.m +++ b/MacPass/MPDocument.m @@ -33,11 +33,13 @@ #import "DDXMLNode.h" #import "KPKEntry.h" +#import "KPKEntry+TemplateCopy.h" #import "KPKGroup.h" #import "KPKTree.h" #import "KPKTree+Serializing.h" #import "KPKCompositeKey.h" #import "KPKMetaData.h" +#import "KPKTimeInfo.h" #import "KPKAttribute.h" NSString *const MPDocumentDidChangeStoredKeyFilesSettings = @"com.hicknhack.macpass.MPDocumentDidChangeStoredKeyFilesSettings"; @@ -517,9 +519,13 @@ typedef NS_ENUM(NSUInteger, MPAlertType) { - (void)createEntryFromTemplate:(id)sender { NSMenuItem *item = sender; - KPKEntry *entry = [item representedObject]; - if(entry) { - // Create Entry from template; + NSUUID *entryUUID = [item representedObject]; + if(entryUUID) { + KPKEntry *templateEntry = [self findEntry:entryUUID]; + if(templateEntry && self.selectedGroup) { + KPKEntry *copy = [templateEntry copyWithTitle:templateEntry.title]; + [self.selectedGroup addEntry:copy]; + } } return; } diff --git a/MacPass/MPOutlineDataSource.m b/MacPass/MPOutlineDataSource.m index bcfb85a3..f43001c7 100644 --- a/MacPass/MPOutlineDataSource.m +++ b/MacPass/MPOutlineDataSource.m @@ -27,6 +27,9 @@ #import "KPKGroup.h" #import "KPKEntry.h" #import "KPKUTIs.h" +#import "KPKEntry+TemplateCopy.h" +#import "KPKGroup+TemplateCopy.h" + #import "NSUUID+KeePassKit.h" diff --git a/MacPass/MPSettingsHelper.h b/MacPass/MPSettingsHelper.h index b51ca1d1..af15b051 100644 --- a/MacPass/MPSettingsHelper.h +++ b/MacPass/MPSettingsHelper.h @@ -16,7 +16,10 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyClearPasteboardOnQuit; APPKIT_EXTERN NSString *const kMPSettingsKeyPasswordEncoding; APPKIT_EXTERN NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch; APPKIT_EXTERN NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch; + +/* URL handling */ APPKIT_EXTERN NSString *const kMPSettingsKeyDoubleClickURLToLaunch; +APPKIT_EXTERN NSString *const kMPSettingsKeyBrowserBundleId; /* Server Settings */ APPKIT_EXTERN NSString *const kMPSettingsKeyHttpPort; @@ -41,10 +44,6 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyLegacyHideURL; APPKIT_EXTERN NSString *const kMPSettingsKeyLastDatabasePath; APPKIT_EXTERN NSString *const kMPSettingsKeyRememeberdKeysForDatabases; APPKIT_EXTERN NSString *const kMPSettingsKeyRememberKeyFilesForDatabases; -/* -APPKIT_EXTERN NSString *const kMPSettingsKeyLastKeyURL; -APPKIT_EXTERN NSString *const kMPSettingsKeyRememberLastKey; -*/ /* Autotype */ APPKIT_EXTERN NSString *const kMPSettingsKeySendCommandForControlKey; diff --git a/MacPass/MPSettingsHelper.m b/MacPass/MPSettingsHelper.m index d6ff3d3d..1f764c12 100644 --- a/MacPass/MPSettingsHelper.m +++ b/MacPass/MPSettingsHelper.m @@ -8,29 +8,30 @@ #import "MPSettingsHelper.h" -NSString *const kMPSettingsKeyPasteboardClearTimeout = @"ClipboardClearTimeout"; -NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearClipboardOnQuit"; -NSString *const kMPSettingsKeyDoubleClickURLToLaunch = @"DoubleClickURLToLaunch"; -NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch = @"OpenEmptyDatabaseOnLaunch"; -NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch = @"ReopenLastDatabaseOnLaunch"; -NSString *const kMPSettingsKeyHttpPort =@"HttpPort"; -NSString *const kMPSettingsKeyEnableHttpServer = @"EnableHttpServer"; -NSString *const kMPSettingsKeyShowMenuItem = @"ShowMenuItem"; -NSString *const kMPSettingsKeyLockOnSleep = @"LockOnSleep"; -NSString *const kMPSettingsKeyIdleLockTimeOut = @"IdleLockTimeOut"; -NSString *const kMPSettingsKeyShowInspector = @"ShowInspector"; +NSString *const kMPSettingsKeyPasteboardClearTimeout = @"ClipboardClearTimeout"; +NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearClipboardOnQuit"; +NSString *const kMPSettingsKeyDoubleClickURLToLaunch = @"DoubleClickURLToLaunch"; +NSString *const kMPSettingsKeyBrowserBundleId = @"BrowserBundleId"; +NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch = @"OpenEmptyDatabaseOnLaunch"; +NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch = @"ReopenLastDatabaseOnLaunch"; +NSString *const kMPSettingsKeyHttpPort = @"HttpPort"; +NSString *const kMPSettingsKeyEnableHttpServer = @"EnableHttpServer"; +NSString *const kMPSettingsKeyShowMenuItem = @"ShowMenuItem"; +NSString *const kMPSettingsKeyLockOnSleep = @"LockOnSleep"; +NSString *const kMPSettingsKeyIdleLockTimeOut = @"IdleLockTimeOut"; +NSString *const kMPSettingsKeyShowInspector = @"ShowInspector"; -NSString *const kMPSettingsKeyLegacyHideTitle = @"LegacyHideTitle"; -NSString *const kMPSettingsKeyLegacyHideUsername = @"LegacyHideUsername "; -NSString *const kMPSettingsKeyLegacyHidePassword = @"LegacyHidePassword"; -NSString *const kMPSettingsKeyLegacyHideNotes = @"LegacyHideNotes"; -NSString *const kMPSettingsKeyLegacyHideURL = @"LegacyHideURL"; +NSString *const kMPSettingsKeyLegacyHideTitle = @"LegacyHideTitle"; +NSString *const kMPSettingsKeyLegacyHideUsername = @"LegacyHideUsername "; +NSString *const kMPSettingsKeyLegacyHidePassword = @"LegacyHidePassword"; +NSString *const kMPSettingsKeyLegacyHideNotes = @"LegacyHideNotes"; +NSString *const kMPSettingsKeyLegacyHideURL = @"LegacyHideURL"; -NSString *const kMPSettingsKeyLastDatabasePath = @"LastDatabasePath"; -NSString *const kMPSettingsKeyRememeberdKeysForDatabases = @"RememeberdKeysForDatabases"; -NSString *const kMPSettingsKeyRememberKeyFilesForDatabases = @"RememberKeyFilesForDatabases"; +NSString *const kMPSettingsKeyLastDatabasePath = @"LastDatabasePath"; +NSString *const kMPSettingsKeyRememeberdKeysForDatabases = @"RememeberdKeysForDatabases"; +NSString *const kMPSettingsKeyRememberKeyFilesForDatabases = @"RememberKeyFilesForDatabases"; -NSString *const kMPSettingsKeySendCommandForControlKey = @"SendCommandKeyForControlKey"; +NSString *const kMPSettingsKeySendCommandForControlKey = @"SendCommandKeyForControlKey"; @implementation MPSettingsHelper