consolidate other validations

This commit is contained in:
Andrew Schleifer
2013-11-23 10:46:07 -06:00
parent 62a4f9f3e3
commit 71939a4497
3 changed files with 18 additions and 42 deletions

View File

@@ -520,31 +520,35 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
- (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)anItem { - (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)anItem {
if(self.encrypted || self.isReadOnly) { return NO; } if(self.encrypted || self.isReadOnly) { return NO; }
BOOL valid = YES;
switch([MPActionHelper typeForAction:[anItem action]]) { switch([MPActionHelper typeForAction:[anItem action]]) {
case MPActionAddGroup:
valid &= (nil != self.selectedGroup);
// fall-through
case MPActionAddEntry:
// fall-through
case MPActionDelete: { case MPActionDelete: {
BOOL valid = (nil != self.selectedItem); valid &= (nil != self.selectedItem);
valid &= (self.selectedItem != self.trash); valid &= (self.trash != self.selectedItem);
valid &= ![self isItemTrashed:self.selectedItem]; valid &= ![self isItemTrashed:self.selectedItem];
return valid; break;
} }
case MPActionEmptyTrash: { case MPActionEmptyTrash: {
BOOL hasGroups = [self.trash.groups count] > 0; valid &= [self.trash.groups count] > 0;
BOOL hasEntries = [self.trash.entries count] > 0; valid &= [self.trash.entries count] > 0;
return (hasEntries || hasGroups); break;
} }
case MPActionDatabaseSettings: case MPActionDatabaseSettings:
case MPActionEditPassword: case MPActionEditPassword:
return !self.encrypted; valid &= !self.encrypted;
case MPActionAddGroup: break;
case MPActionAddEntry:
return (nil != self.selectedGroup);
case MPActionLock: case MPActionLock:
return self.compositeKey.hasPasswordOrKeyFile; valid &= self.compositeKey.hasPasswordOrKeyFile;
break;
default: default:
return YES; valid = YES;
} }
return valid;
return [super validateUserInterfaceItem:anItem];
} }
- (void)_storeKeyURL:(NSURL *)keyURL { - (void)_storeKeyURL:(NSURL *)keyURL {

View File

@@ -676,11 +676,6 @@ NSString *const _MPTAbleSecurCellView = @"PasswordCell";
// // // //
//} //}
#pragma mark Validation
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
return YES;
}
- (IBAction)_toggleFilterSpace:(id)sender { - (IBAction)_toggleFilterSpace:(id)sender {
if(![sender isKindOfClass:[NSButton class]]) { if(![sender isKindOfClass:[NSButton class]]) {
return; // Wrong sender return; // Wrong sender

View File

@@ -158,29 +158,6 @@ NSString *const _MPOutlinveViewHeaderViewIdentifier = @"HeaderCell";
return [[self.outlineView itemAtRow:row] representedObject]; return [[self.outlineView itemAtRow:row] representedObject];
} }
#pragma mark Validation
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
MPActionType actionType = [MPActionHelper typeForAction:[menuItem action]];
switch(actionType) {
case MPActionAddEntry:
case MPActionAddGroup:
case MPActionDelete: {
MPDocument *document = [[self windowController] document];
id selected = [self _clickedOrSelectedGroup];
if(!selected) {
return NO;
}
if(selected == document.trash) {
return NO;
}
return ![document isItemTrashed:selected];
}
default:
return YES; // We are only validated for three targets
}
}
#pragma mark - #pragma mark -
#pragma mark Actions #pragma mark Actions