From 11236c50f926d9c154d9cdc0a501868d96882bef Mon Sep 17 00:00:00 2001 From: michael starke Date: Fri, 3 Feb 2017 16:36:54 +0100 Subject: [PATCH] stubbed custom data popup --- MacPass.xcodeproj/project.pbxproj | 10 +- MacPass/Base.lproj/EntryInspectorView.xib | 61 ++++++--- MacPass/Base.lproj/GroupInspectorView.xib | 53 +++++--- MacPass/MPDocumentWindowController.m | 4 + MacPass/MPEntryInspectorViewController.h | 26 ++-- MacPass/MPInspectorViewController.h | 1 + MacPass/MPInspectorViewController.m | 29 ++-- MacPass/MPPluginDataViewController.h | 2 +- MacPass/MPPluginDataViewController.m | 40 +++++- MacPass/MPPluginDataViewController.xib | 19 --- MacPass/PluginDataView.xib | 156 ++++++++++++++++++++++ 11 files changed, 304 insertions(+), 97 deletions(-) delete mode 100644 MacPass/MPPluginDataViewController.xib create mode 100644 MacPass/PluginDataView.xib diff --git a/MacPass.xcodeproj/project.pbxproj b/MacPass.xcodeproj/project.pbxproj index 4e2cf55a..5fec182f 100644 --- a/MacPass.xcodeproj/project.pbxproj +++ b/MacPass.xcodeproj/project.pbxproj @@ -27,7 +27,7 @@ 4C17F108184E6B6C00E85625 /* 31_PrintTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C17F106184E6B6C00E85625 /* 31_PrintTemplate.pdf */; }; 4C17F109184E6B6C00E85625 /* 30_TerminalTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C17F107184E6B6C00E85625 /* 30_TerminalTemplate.pdf */; }; 4C1BDF2B1E4392640012A3F0 /* MPPluginDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1BDF291E4392640012A3F0 /* MPPluginDataViewController.m */; }; - 4C1BDF2C1E4392640012A3F0 /* MPPluginDataViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C1BDF2A1E4392640012A3F0 /* MPPluginDataViewController.xib */; }; + 4C1BDF2C1E4392640012A3F0 /* PluginDataView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C1BDF2A1E4392640012A3F0 /* PluginDataView.xib */; }; 4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */; }; 4C1E9885185F71A800943563 /* MPContextBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1E9884185F71A800943563 /* MPContextBarViewController.m */; }; 4C1F7FA21E3A12E600D6A40E /* MPModifiedKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1F7FA11E3A12E600D6A40E /* MPModifiedKey.m */; }; @@ -326,7 +326,7 @@ 4C17F107184E6B6C00E85625 /* 30_TerminalTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 30_TerminalTemplate.pdf; sourceTree = ""; }; 4C1BDF281E4392640012A3F0 /* MPPluginDataViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPluginDataViewController.h; sourceTree = ""; }; 4C1BDF291E4392640012A3F0 /* MPPluginDataViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPluginDataViewController.m; sourceTree = ""; }; - 4C1BDF2A1E4392640012A3F0 /* MPPluginDataViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MPPluginDataViewController.xib; sourceTree = ""; }; + 4C1BDF2A1E4392640012A3F0 /* PluginDataView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PluginDataView.xib; sourceTree = ""; }; 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PasswordCreatorWindow.xib; sourceTree = ""; }; 4C1E9883185F71A800943563 /* MPContextBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPContextBarViewController.h; sourceTree = ""; }; 4C1E9884185F71A800943563 /* MPContextBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPContextBarViewController.m; sourceTree = ""; }; @@ -1296,6 +1296,7 @@ isa = PBXGroup; children = ( 4C47D77718B37911002755E4 /* Settings */, + 4C4B7EF517A46815000234C7 /* Inspector */, 4C2E382416D1470200037A9D /* MPViewController.h */, 4C2E382516D1470200037A9D /* MPViewController.m */, 4C65FAE616D16DDB006E0577 /* MPPasswordInputController.h */, @@ -1316,7 +1317,6 @@ 4C4B7EE617A45EC5000234C7 /* MPDatePickingViewController.h */, 4C4B7EE717A45EC5000234C7 /* MPDatePickingViewController.m */, 6021FE7918E15FF300C3BC51 /* DatePickingView.xib */, - 4C4B7EF517A46815000234C7 /* Inspector */, 4C0F647917B6BC9C00D9522A /* MPSavePanelAccessoryViewController.h */, 4C0F647A17B6BC9C00D9522A /* MPSavePanelAccessoryViewController.m */, 4C1E9883185F71A800943563 /* MPContextBarViewController.h */, @@ -1333,7 +1333,7 @@ 4CAAA8261D787B8B00CDE977 /* AutotypeBuilderView.xib */, 4C1BDF281E4392640012A3F0 /* MPPluginDataViewController.h */, 4C1BDF291E4392640012A3F0 /* MPPluginDataViewController.m */, - 4C1BDF2A1E4392640012A3F0 /* MPPluginDataViewController.xib */, + 4C1BDF2A1E4392640012A3F0 /* PluginDataView.xib */, ); name = "View Controller"; sourceTree = ""; @@ -1657,7 +1657,7 @@ 4C53A7A51864C39D000DFF0D /* KPKLocalizable.strings in Resources */, 4C3826761AD04C24007D7D67 /* harddiskTemplate.pdf in Resources */, 4C0DBEF51BF508DE00F9B287 /* PluginSettings.xib in Resources */, - 4C1BDF2C1E4392640012A3F0 /* MPPluginDataViewController.xib in Resources */, + 4C1BDF2C1E4392640012A3F0 /* PluginDataView.xib in Resources */, 4C7F8B681A10B68400CCB83D /* WelcomeWindow.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/MacPass/Base.lproj/EntryInspectorView.xib b/MacPass/Base.lproj/EntryInspectorView.xib index a56fe8e1..5c544a09 100644 --- a/MacPass/Base.lproj/EntryInspectorView.xib +++ b/MacPass/Base.lproj/EntryInspectorView.xib @@ -9,7 +9,6 @@ - @@ -22,7 +21,6 @@ - @@ -39,10 +37,10 @@ - + - + @@ -54,22 +52,22 @@ - + - + - + - + @@ -93,13 +91,13 @@ - + - + - + @@ -244,11 +242,11 @@ - + - + @@ -269,13 +268,13 @@ - + - + - + @@ -408,23 +407,43 @@ + + + + + + + - + + + + - + @@ -441,7 +460,7 @@ - + diff --git a/MacPass/Base.lproj/GroupInspectorView.xib b/MacPass/Base.lproj/GroupInspectorView.xib index 80a3f07a..44685cc0 100644 --- a/MacPass/Base.lproj/GroupInspectorView.xib +++ b/MacPass/Base.lproj/GroupInspectorView.xib @@ -1,8 +1,9 @@ - - + + - + + @@ -10,7 +11,6 @@ - @@ -20,16 +20,16 @@ - + - + - + - + @@ -37,7 +37,7 @@ - + @@ -48,7 +48,7 @@ - + @@ -86,7 +86,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -113,24 +113,35 @@ - + - + - + + @@ -143,21 +154,24 @@ + + + + - @@ -177,6 +191,7 @@ + diff --git a/MacPass/MPDocumentWindowController.m b/MacPass/MPDocumentWindowController.m index a1208002..12854c13 100644 --- a/MacPass/MPDocumentWindowController.m +++ b/MacPass/MPDocumentWindowController.m @@ -386,6 +386,10 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword); [self.inspectorViewController pickExpiryDate:sender]; } +- (void)showPluginData:(id)sender { + [self.inspectorViewController showPluginData:sender]; +} + - (void)toggleInspector:(id)sender { NSView *inspectorView = self.inspectorViewController.view; BOOL inspectorWasVisible = [self _isInspectorVisible]; diff --git a/MacPass/MPEntryInspectorViewController.h b/MacPass/MPEntryInspectorViewController.h index c452b1ea..b947b976 100644 --- a/MacPass/MPEntryInspectorViewController.h +++ b/MacPass/MPEntryInspectorViewController.h @@ -15,31 +15,31 @@ @interface MPEntryInspectorViewController : MPViewController +@property (weak) IBOutlet NSSegmentedControl *infoTabControl; + +/* General */ +@property (weak) IBOutlet NSTabView *tabView; +@property (strong) IBOutlet NSView *generalView; + @property (weak) IBOutlet NSTextField *titleTextField; @property (weak) IBOutlet NSTextField *usernameTextField; @property (weak) IBOutlet NSTextField *URLTextField; @property (weak) IBOutlet HNHUIRoundedSecureTextField *passwordTextField; - +@property (weak) IBOutlet NSButton *generatePasswordButton; +@property (weak) IBOutlet NSButton *togglePassword; +@property (weak) IBOutlet NSButton *expiresCheckButton; +@property (weak) IBOutlet NSTokenField *tagsTokenField; @property (weak) IBOutlet NSTextField *uuidTextField; @property (weak) IBOutlet NSTextField *createdTextField; @property (weak) IBOutlet NSTextField *modifiedTextField; -@property (weak) IBOutlet NSSegmentedControl *infoTabControl; +/* Attachments */ @property (weak) IBOutlet NSTableView *attachmentTableView; @property (weak) IBOutlet NSTableView *customFieldsTableView; -@property (weak) IBOutlet NSTableView *pluginDataTableView; -@property (weak) IBOutlet NSButton *generatePasswordButton; -@property (weak) IBOutlet NSButton *togglePassword; - -@property (weak) IBOutlet NSTabView *tabView; -@property (strong) IBOutlet NSView *generalView; -@property (strong) IBOutlet NSView *autotypView; - -@property (weak) IBOutlet NSButton *expiresCheckButton; -@property (weak) IBOutlet NSTokenField *tagsTokenField; /* Autotype */ +@property (strong) IBOutlet NSView *autotypView; @property (weak) IBOutlet NSButton *enableAutotypeCheckButton; @property (weak) IBOutlet NSButton *obfuscateAutotypeCheckButton; @property (weak) IBOutlet NSTableView *windowAssociationsTableView; @@ -47,8 +47,6 @@ @property (weak) IBOutlet NSTextField *customEntrySequenceTextField; @property (weak) IBOutlet NSComboBox *windowTitleComboBox; -@property (weak) IBOutlet NSButton *removeAssociationButton; -@property (weak) IBOutlet NSButton *addAssociationButton; @property (weak) IBOutlet NSButton *showCustomAssociationSequenceAutotypeBuilderButton; @property (weak) IBOutlet NSTextField *associationSequenceTextField; diff --git a/MacPass/MPInspectorViewController.h b/MacPass/MPInspectorViewController.h index 10b00a0d..24b862cf 100644 --- a/MacPass/MPInspectorViewController.h +++ b/MacPass/MPInspectorViewController.h @@ -24,6 +24,7 @@ - (IBAction)pickIcon:(id)sender; - (IBAction)pickExpiryDate:(id)sender; +- (IBAction)showPluginData:(id)sender; /* Separate call to ensure all registered objects are in place */ - (void)registerNotificationsForDocument:(NSDocument *)document; diff --git a/MacPass/MPInspectorViewController.m b/MacPass/MPInspectorViewController.m index f0abef22..6b782918 100644 --- a/MacPass/MPInspectorViewController.m +++ b/MacPass/MPInspectorViewController.m @@ -15,6 +15,7 @@ #import "MPIconSelectViewController.h" #import "MPNotifications.h" #import "MPPopupImageView.h" +#import "MPPluginDataViewController.h" #import "KeePassKit/KeePassKit.h" @@ -169,33 +170,31 @@ typedef NS_ENUM(NSUInteger, MPContentTab) { #pragma mark - #pragma mark Popup - (IBAction)pickIcon:(id)sender { - if(self.popover) { - return; // There is still a popover so do nothing - } - self.popover = [[NSPopover alloc] init]; - self.popover.delegate = self; - self.popover.behavior = NSPopoverBehaviorTransient; - MPIconSelectViewController *vc = [[MPIconSelectViewController alloc] init]; - vc.representedObject = self.representedObject; - vc.popover = self.popover; - vc.observer = self.windowController.document; - self.popover.contentViewController = vc; - [self.popover showRelativeToRect:NSZeroRect ofView:sender preferredEdge:NSMinYEdge]; + NSAssert([sender isKindOfClass:[NSView class]], @""); + [self _popupViewController:[[MPIconSelectViewController alloc] init] atView:(NSView *)sender]; } - (IBAction)pickExpiryDate:(id)sender { + NSAssert([sender isKindOfClass:[NSView class]], @""); + [self _popupViewController:[[MPDatePickingViewController alloc] init] atView:(NSView *)sender]; +} + +- (IBAction)showPluginData:(id)sender { + NSAssert([sender isKindOfClass:[NSView class]], @""); + [self _popupViewController:[[MPPluginDataViewController alloc] init] atView:(NSView *)sender]; +} + +- (void)_popupViewController:(MPViewController *)vc atView:(NSView *)view { if(self.popover) { return; // Popover still active, abort } - NSAssert([sender isKindOfClass:[NSView class]], @""); self.popover = [[NSPopover alloc] init]; self.popover.delegate = self; self.popover.behavior = NSPopoverBehaviorTransient; - MPDatePickingViewController *vc = [[MPDatePickingViewController alloc] init]; vc.representedObject = self.representedObject; vc.observer = self.windowController.document; self.popover.contentViewController = vc; - [self.popover showRelativeToRect:NSZeroRect ofView:sender preferredEdge:NSMinYEdge]; + [self.popover showRelativeToRect:NSZeroRect ofView:view preferredEdge:NSMinYEdge]; } diff --git a/MacPass/MPPluginDataViewController.h b/MacPass/MPPluginDataViewController.h index d995bfa0..c3a09482 100644 --- a/MacPass/MPPluginDataViewController.h +++ b/MacPass/MPPluginDataViewController.h @@ -8,6 +8,6 @@ #import "MPViewController.h" -@interface MPPluginDataViewController : MPViewController +@interface MPPluginDataViewController : MPViewController @end diff --git a/MacPass/MPPluginDataViewController.m b/MacPass/MPPluginDataViewController.m index 0109a058..6531d64a 100644 --- a/MacPass/MPPluginDataViewController.m +++ b/MacPass/MPPluginDataViewController.m @@ -8,15 +8,49 @@ #import "MPPluginDataViewController.h" +#import + @interface MPPluginDataViewController () +@property (nonatomic, readonly, assign) KPKNode *representedNode; +@property (strong) NSDictionaryController *pluginDataController; +@property (weak) IBOutlet NSTableView *pluginDataTabelView; + @end @implementation MPPluginDataViewController -- (void)viewDidLoad { - [super viewDidLoad]; - // Do view setup here. +- (NSString *)nibName { + return @"PluginDataView"; +} + +- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if(self) { + _pluginDataController = [[NSDictionaryController alloc] init]; + } + return self; +} + +- (void)didLoadView { + [self.pluginDataController bind:NSContentDictionaryBinding toObject:self.representedObject withKeyPath:NSStringFromSelector(@selector(customData)) options:nil]; + self.pluginDataTabelView.backgroundColor = [NSColor clearColor]; +} + +- (KPKNode *)representedNode { + if([self.representedObject isKindOfClass:[KPKNode class]]) { + return self.representedObject; + } + return nil; +} + +- (IBAction)removeAllPluginData:(id)sender { + // +} + +- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { + NSTableCellView *view = [tableView makeViewWithIdentifier:@"PluginCell" owner:self]; + return view; } @end diff --git a/MacPass/MPPluginDataViewController.xib b/MacPass/MPPluginDataViewController.xib deleted file mode 100644 index eca68f05..00000000 --- a/MacPass/MPPluginDataViewController.xib +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/MacPass/PluginDataView.xib b/MacPass/PluginDataView.xib new file mode 100644 index 00000000..e367c467 --- /dev/null +++ b/MacPass/PluginDataView.xib @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +