Search criteriy is objetified. Can be stored and saved in preferences.

This is a first step to enable saved searches inside the Keepass database via use of custom data.
This commit is contained in:
michael starke
2014-08-27 19:43:03 +02:00
parent 0286ed4e5c
commit be5889c5b1
13 changed files with 170 additions and 74 deletions

View File

@@ -70,12 +70,24 @@ typedef NS_ENUM(NSUInteger, MPContextTab) {
self.emptyTrashButton.textColor = [NSColor whiteColor];
NSInteger tags[] = { MPEntrySearchTitles, MPEntrySearchUsernames, MPEntrySearchPasswords, MPEntrySearchNotes, MPEntrySearchUrls, MPEntrySearchDoublePasswords };
NSArray *buttons = @[self.titleButton, self.usernameButton, self.passwordButton, self.notesButton, self.urlButton, self.duplicatePasswordsButton ];
NSInteger tags[] = { MPEntrySearchTitles, MPEntrySearchUsernames, MPEntrySearchPasswords, MPEntrySearchNotes, MPEntrySearchUrls };
NSArray *buttons = @[self.titleButton, self.usernameButton, self.passwordButton, self.notesButton, self.urlButton ];
for(NSUInteger iIndex = 0; iIndex < [buttons count]; iIndex++) {
[buttons[iIndex] setAction:@selector(toggleSearchFlags:)];
[buttons[iIndex] setTag:tags[iIndex]];
}
NSInteger specialTags[] = { MPEntrySearchDoublePasswords, MPEntrySearchExpiredEntries };
NSArray *titles = @[ NSLocalizedString(@"SEARCH_DUPLICATE_PASSWORDS", ""), NSLocalizedString(@"SEARCH_EXPIRED_ENTRIES", "") ];
NSMenu *specialMenu = [[NSMenu alloc] initWithTitle:@"Special Filters Menu"];
[specialMenu addItemWithTitle:NSLocalizedString(@"SELECT_FILTER_WITH_DOTS", "") action:NULL keyEquivalent:@""];
[[specialMenu itemAtIndex:0] setEnabled:NO];
[[specialMenu itemAtIndex:0] setTag:MPEntrySearchNone];
for(NSInteger iIndex = 0; iIndex < [titles count]; iIndex++) {
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:titles[iIndex] action:@selector(toggleSearchFlags:) keyEquivalent:@""];
[item setTag:specialTags[iIndex]];
[specialMenu addItem:item];
}
[self.specialFilterPopUpButton setMenu:specialMenu];
[self _updateFilterButtons];
}
@@ -131,6 +143,22 @@ typedef NS_ENUM(NSUInteger, MPContextTab) {
[self.titleButton setState:HNHStateForBool(MPTestFlagInOptions(MPEntrySearchTitles, currentFlags))];
[self.urlButton setState:HNHStateForBool(MPTestFlagInOptions(MPEntrySearchUrls, currentFlags))];
[self.usernameButton setState:HNHStateForBool(MPTestFlagInOptions(MPEntrySearchUsernames, currentFlags))];
NSInteger selectedTag = MPEntrySearchNone;
for(NSMenuItem *item in [[self.specialFilterPopUpButton menu] itemArray]) {
MPEntrySearchFlags flag = [item tag];
if(flag == MPEntrySearchNone) {
[item setState:NSOffState];
[item setEnabled:NO];
}
else {
BOOL isActive = MPTestFlagInOptions(flag, currentFlags);
if(isActive) {
selectedTag = flag;
}
[item setState:HNHStateForBool(isActive)];
}
}
[self.specialFilterPopUpButton selectItemWithTag:selectedTag];
}
@end