From 7c103abd53e096775138d036a5bf586576f279fe Mon Sep 17 00:00:00 2001 From: michael starke Date: Sat, 23 Nov 2013 21:34:10 +0100 Subject: [PATCH] Added removed validation but calling into central document function, since the responder needs to validate the menu items #112 --- MacPass/MPDocument.m | 8 ++++---- MacPass/MPDocumentWindowController.m | 5 +++++ MacPass/MPEntryViewController.m | 10 ++++++++++ MacPass/MPOutlineViewController.m | 12 ++++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/MacPass/MPDocument.m b/MacPass/MPDocument.m index 5346157b..6f184a4e 100644 --- a/MacPass/MPDocument.m +++ b/MacPass/MPDocument.m @@ -511,10 +511,12 @@ typedef NS_ENUM(NSUInteger, MPAlertType) { } - (BOOL)validateMenuItem:(NSMenuItem *)menuItem { + NSLog(@"Valdiate MenuItem:%@", [menuItem title]); return [self validateUserInterfaceItem:menuItem]; } - (BOOL)validateToolbarItem:(NSToolbarItem *)theItem { + NSLog(@"Valdiate ToolbarItem:%@", [theItem label]); return [self validateUserInterfaceItem:theItem]; } @@ -528,17 +530,15 @@ typedef NS_ENUM(NSUInteger, MPAlertType) { // fall-through case MPActionAddEntry: // fall-through - case MPActionDelete: { + case MPActionDelete: valid &= (nil != self.selectedItem); valid &= (self.trash != self.selectedItem); valid &= ![self isItemTrashed:self.selectedItem]; break; - } - case MPActionEmptyTrash: { + case MPActionEmptyTrash: valid &= [self.trash.groups count] > 0; valid &= [self.trash.entries count] > 0; break; - } case MPActionDatabaseSettings: case MPActionEditPassword: valid &= !self.encrypted; diff --git a/MacPass/MPDocumentWindowController.m b/MacPass/MPDocumentWindowController.m index d19fb838..5d69fd1c 100644 --- a/MacPass/MPDocumentWindowController.m +++ b/MacPass/MPDocumentWindowController.m @@ -340,6 +340,11 @@ typedef NS_ENUM(NSUInteger, MPAlertContext) { [_outlineViewController showOutline]; } +#pragma makr Validation +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { + return ([[self document] validateMenuItem:menuItem]); +} + #pragma mark MPPasswordEditWindowDelegate - (void)didFinishPasswordEditing:(BOOL)changedPasswordOrKey { if(changedPasswordOrKey && _saveAfterPasswordChange) { diff --git a/MacPass/MPEntryViewController.m b/MacPass/MPEntryViewController.m index 16dd5042..8d916993 100644 --- a/MacPass/MPEntryViewController.m +++ b/MacPass/MPEntryViewController.m @@ -568,6 +568,16 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell"; self.trashBar.inactiveGradient = [[NSGradient alloc] initWithColors:inactiveColors]; } +#pragma mark Validation +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { + MPDocument *document = [[self windowController] document]; + if(![document validateMenuItem:menuItem]) { + return NO; + } + return YES; + /* TODO handle _clickedOrSlectedEnty */ +} + #pragma mark ContextMenu - (void)_setupEntryMenu { diff --git a/MacPass/MPOutlineViewController.m b/MacPass/MPOutlineViewController.m index 0cde82d4..7d605c7e 100644 --- a/MacPass/MPOutlineViewController.m +++ b/MacPass/MPOutlineViewController.m @@ -237,6 +237,18 @@ NSString *const _MPOutlinveViewHeaderViewIdentifier = @"HeaderCell"; } } +#pragma mark Validation +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { + MPDocument *document = [[self windowController] document]; + if(![document validateUserInterfaceItem:menuItem]) { + return NO; + } + id selected = [self _clickedOrSelectedGroup]; + if(!selected) { return NO; } + if(selected == document.trash) { return NO; } + return ![document isItemTrashed:selected]; +} + #pragma mark - #pragma mark Private