Unified Validation for Actions more

This commit is contained in:
michael starke
2014-10-24 16:19:06 +02:00
parent 3a2dff5e07
commit d3afe1069a

View File

@@ -630,28 +630,43 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey
id<MPTargetNodeResolving> entryResolver = [NSApp targetForAction:@selector(currentTargetEntry)]; id<MPTargetNodeResolving> entryResolver = [NSApp targetForAction:@selector(currentTargetEntry)];
id<MPTargetNodeResolving> groupResolver = [NSApp targetForAction:@selector(currentTargetGroup)]; id<MPTargetNodeResolving> groupResolver = [NSApp targetForAction:@selector(currentTargetGroup)];
id<MPTargetNodeResolving> nodeResolver = [NSApp targetForAction:@selector(currentTargetNode)]; id<MPTargetNodeResolving> nodeResolver = [NSApp targetForAction:@selector(currentTargetNode)];
NSLog(@"entryResolver:%@", [entryResolver class]);
NSLog(@"groupResolver:%@", [groupResolver class]);
NSLog(@"nodeResolver:%@", [nodeResolver class]);
KPKNode *targetNode = [nodeResolver currentTargetNode]; KPKNode *targetNode = [nodeResolver currentTargetNode];
KPKEntry *targetEntry = [entryResolver currentTargetEntry]; KPKEntry *targetEntry = [entryResolver currentTargetEntry];
KPKGroup *targetGroup = [groupResolver currentTargetGroup]; KPKGroup *targetGroup = [groupResolver currentTargetGroup];
if([targetNode asGroup]) {
NSLog(@"targetNode:%@", ((KPKGroup *)targetNode).name);
}
else if([targetNode asEntry]) {
NSLog(@"targetNode:%@", ((KPKEntry *)targetNode).title);
}
NSLog(@"targetGroup:%@", targetGroup.name);
NSLog(@"tagetEntry:%@", targetEntry.title );
if(self.encrypted || self.isReadOnly) { return NO; } if(self.encrypted || self.isReadOnly) { return NO; }
BOOL valid = self.selectedItem ? self.selectedItem.isEditable : YES; BOOL valid = targetNode ? targetNode.isEditable : YES;
switch([MPActionHelper typeForAction:[anItem action]]) { switch([MPActionHelper typeForAction:[anItem action]]) {
case MPActionAddGroup: case MPActionAddGroup:
valid &= (nil != self.selectedGroup); valid &= (nil != targetGroup);
valid &= (self.trash != self.selectedGroup); valid &= (self.trash != targetGroup);
valid &= ![self isItemTrashed:self.selectedGroup]; valid &= ![self isItemTrashed:targetGroup];
break; break;
case MPActionAddEntry: case MPActionAddEntry:
valid &= (nil != self.selectedGroup); valid &= (nil != targetGroup);
valid &= (self.trash != self.selectedGroup); valid &= (self.trash != targetGroup);
valid &= ![self isItemTrashed:self.selectedGroup]; valid &= ![self isItemTrashed:targetGroup];
break; break;
case MPActionDelete: case MPActionDelete:
valid &= (nil != self.selectedItem); valid &= (nil != targetNode);
valid &= (self.trash != self.selectedItem); valid &= (self.trash != targetNode);
valid &= ![self isItemTrashed:self.selectedItem]; valid &= ![self isItemTrashed:targetNode];
break; break;
case MPActionCloneEntry: case MPActionCloneEntry:
valid &= (nil != targetEntry); valid &= (nil != targetEntry);
@@ -667,9 +682,9 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey
valid &= self.compositeKey.hasPasswordOrKeyFile; valid &= self.compositeKey.hasPasswordOrKeyFile;
break; break;
case MPActionShowHistory: case MPActionShowHistory:
valid &= (self.selectedEntry && (self.selectedItem == (id)self.selectedEntry)); valid &= (nil != targetEntry);
break; break;
/* Entry View Actions */ /* Entry View Actions */
case MPActionCopyUsername: case MPActionCopyUsername:
valid &= (nil != targetEntry) && ([targetEntry.username length] > 0); valid &= (nil != targetEntry) && ([targetEntry.username length] > 0);
break; break;