diff --git a/MacPass/MPEntryInspectorViewController.m b/MacPass/MPEntryInspectorViewController.m index 818dc6f3..58f97f25 100644 --- a/MacPass/MPEntryInspectorViewController.m +++ b/MacPass/MPEntryInspectorViewController.m @@ -36,6 +36,7 @@ #import "MPEntryAttributeViewController.h" #import "MPEntryPasswordAttributeViewController.h" #import "MPNodeExpirationViewController.h" +#import "MPNodeIconViewController.h" #import "MPPrettyPasswordTransformer.h" #import "NSString+MPPasswordCreation.h" @@ -91,6 +92,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) { @property (strong) MPEntryAttributeViewController *urlEditorViewController; @property (strong) MPNodeExpirationViewController *expiresEditorViewController; @property (strong) MPEntryPasswordAttributeViewController *passwordEditorViewController; +@property (strong) MPNodeIconViewController *iconViewController; @property (strong) MPTemporaryFileStorage *quicklookStorage; @@ -603,6 +605,10 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) { } - (void)_setupAttributeEditors { + self.iconViewController = [[MPNodeIconViewController alloc] init]; + self.iconViewController.isEditor = NO; + [self.fieldsStackView addArrangedSubview:self.iconViewController.view]; + self.titleEditorViewController = [[MPEntryAttributeViewController alloc] init]; self.titleEditorViewController.isEditor = NO; [self.fieldsStackView addArrangedSubview:self.titleEditorViewController.view]; @@ -630,6 +636,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) { } - (void)_updateEditors { + self.iconViewController.representedObject = self.representedObject; self.totpViewController.representedObject = self.representedObject; self.expiresEditorViewController.representedObject = self.representedEntry.timeInfo; diff --git a/MacPass/MPNodeIconViewController.m b/MacPass/MPNodeIconViewController.m index 1b9ab458..6fe1f6b8 100644 --- a/MacPass/MPNodeIconViewController.m +++ b/MacPass/MPNodeIconViewController.m @@ -9,8 +9,11 @@ #import "MPNodeIconViewController.h" #import -@interface MPNodeIconViewController () +#import "KPKNode+IconImage.h" +@interface MPNodeIconViewController () +@property (strong) IBOutlet NSImageView *imageView; +@property (strong) IBOutlet NSTextField *textField; @end @implementation MPNodeIconViewController @@ -19,10 +22,42 @@ - (void)viewDidLoad { [super viewDidLoad]; + self.imageView.cell.backgroundStyle = NSBackgroundStyleRaised; + self.textField.placeholderString = NSLocalizedString(@"NO_TITLE", @"Fallback to items with no title"); } - (void)setRepresentedObject:(id)representedObject { - + // FIXME: register for correct notifications + if(self.representedNode) { + KPKNode *node = self.representedNode; + if(node.asEntry) { + [NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillChangeEntryNotification object:self.representedObject]; + [NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidChangeEntryNotification object:self.representedObject]; + } + else if(node.asGroup) { + [NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillChangeGroupNotification object:self.representedObject]; + [NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidChangeGroupNotification object:self.representedObject]; + } + else { + NSLog(@"Inconsitant state for notification handling"); + } + } + super.representedObject = representedObject; + if(self.representedNode) { + KPKNode *node = self.representedNode; + if(node.asEntry) { + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_willChangeNode:) name:KPKWillChangeEntryNotification object:self.representedObject]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didChangeNode:) name:KPKDidChangeEntryNotification object:self.representedObject]; + } + else if(node.asGroup) { + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_willChangeNode:) name:KPKWillChangeGroupNotification object:self.representedObject]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didChangeNode:) name:KPKDidChangeGroupNotification object:self.representedObject]; + } + else { + NSLog(@"Inconsitant state for notification handling"); + } + } + [self _updateValues]; } - (KPKNode *)representedNode { @@ -32,11 +67,24 @@ return nil; } -/* -- (void)commitChanges { - <#code#> +- (void)_updateValues { + self.imageView.image = self.representedNode.iconImage; + self.textField.stringValue = self.representedNode.title.length > 0 ? self.representedNode.title : @""; } +- (void)commitChanges { + // fixme +} + + +- (void)_willChangeNode:(NSNotification *)notification { + +} + +- (void)_didChangeNode:(NSNotification *)notification { + [self _updateValues]; +} +/* - (BOOL)commitEditingAndReturnError:(NSError *__autoreleasing _Nullable * _Nullable)error { <#code#> } diff --git a/MacPass/MPNodeIconViewController.xib b/MacPass/MPNodeIconViewController.xib index 41494c21..b7f75307 100644 --- a/MacPass/MPNodeIconViewController.xib +++ b/MacPass/MPNodeIconViewController.xib @@ -8,33 +8,43 @@ + + - + - - + + - - + + - + + + + + + + + + - - - + + + + + + - + - - -