centralize all the UI validation in MPDocument

This commit is contained in:
Andrew Schleifer
2013-11-22 22:31:11 -06:00
parent 4290e92535
commit 62a4f9f3e3
3 changed files with 33 additions and 86 deletions

View File

@@ -206,80 +206,6 @@ typedef NS_ENUM(NSUInteger, MPAlertContext) {
[self.entryViewController showFilter:sender];
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
MPDocument *document = [self document];
SEL itemAction = [menuItem action];
if(itemAction == @selector(showDatabaseSettings:)
|| itemAction == @selector(editPassword:)) {
return !document.encrypted;
}
BOOL enabled = YES;
if(itemAction == [MPActionHelper actionOfType:MPActionDelete]) {
enabled &= (nil != document.selectedItem) && (document.selectedItem != document.trash);
}
enabled &= !( document.encrypted || document.isReadOnly );
return enabled;
}
- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem {
MPDocument *document = [self document];
if(document.encrypted || document.isReadOnly) {
return NO;
}
MPActionType actionType = [MPActionHelper typeForAction:[theItem action]];
switch (actionType) {
case MPActionAddGroup:
case MPActionAddEntry:
return (nil != document.selectedGroup);
case MPActionDelete: {
BOOL valid = (nil != document.selectedItem);
valid &= (document.selectedItem != document.trash);
valid &= ![document isItemTrashed:document.selectedItem];
return valid;
}
case MPActionLock:
return document.compositeKey.hasPasswordOrKeyFile;
case MPActionToggleInspector:
return (nil != [_splitView superview]);
default:
return YES;
}
return YES;
}
- (BOOL)validateAction:(SEL)action forItem:(id)item {
MPDocument *document = [self document];
if(document.encrypted || document.isReadOnly) {
return NO;
}
MPActionType actionType = [MPActionHelper typeForAction:action];
switch (actionType) {
case MPActionAddGroup:
case MPActionAddEntry:
// test if Group is in trash
return (nil != document.selectedGroup);
case MPActionDelete: {
BOOL valid = (nil != document.selectedItem);
valid &= (document.selectedItem != document.trash);
valid &= ![document isItemTrashed:document.selectedItem];
return valid;
}
case MPActionLock:
return document.compositeKey.hasPasswordOrKeyFile;
case MPActionToggleInspector:
return (nil != [_splitView superview]);
default:
return YES;
}
return YES;
}
- (void)showPasswordInput {
if(!self.passwordInputController) {
self.passwordInputController = [[MPPasswordInputController alloc] init];