Fixed #61 searching in passwords is now supported

Fixed #80 nested groups can be selected as templates or trash
Trash UUID now get's stored correctly
Enhanced and fixed some undo errors in moving groups and/or entries
Added action names for moving groups/entries via drag and drop
This commit is contained in:
michael starke
2013-09-10 00:57:47 +02:00
parent 5511dd1207
commit 5796333a2e
8 changed files with 986 additions and 862 deletions

View File

@@ -70,7 +70,7 @@
<CommandLineArguments>
<CommandLineArgument
argument = "-NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints YES"
isEnabled = "NO">
isEnabled = "YES">
</CommandLineArgument>
</CommandLineArguments>
<AdditionalOptions>

File diff suppressed because it is too large Load Diff

View File

@@ -42,10 +42,39 @@
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSButton" id="786439399">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{234, 6}, {74, 17}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="498286707"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="150863911">
<int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">134348800</int>
<string key="NSContents">Password</string>
<object class="NSFont" key="NSSupport" id="29">
<string key="NSName">LucidaGrande-Bold</string>
<double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="786439399"/>
<int key="NSButtonFlags">-1232846848</int>
<int key="NSButtonFlags2">173</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSSearchField" id="498286707">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{242, 6}, {100, 19}}</string>
<string key="NSFrame">{{316, 6}, {100, 19}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="113591000"/>
@@ -121,7 +150,7 @@
<object class="NSButton" id="113591000">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{350, 6}, {42, 17}}</string>
<string key="NSFrame">{{424, 6}, {42, 17}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
@@ -148,18 +177,14 @@
<string key="NSFrame">{{188, 6}, {38, 17}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="498286707"/>
<reference key="NSNextKeyView" ref="786439399"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="149174717">
<int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">134348800</int>
<string key="NSContents">URL</string>
<object class="NSFont" key="NSSupport" id="29">
<string key="NSName">LucidaGrande-Bold</string>
<double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<reference key="NSSupport" ref="29"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="340435610"/>
<int key="NSButtonFlags">-1232846848</int>
@@ -263,7 +288,7 @@
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrameSize">{400, 30}</string>
<string key="NSFrameSize">{474, 30}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="906526407"/>
@@ -360,6 +385,22 @@
</object>
<int key="connectionID">95</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">filterPasswordButton</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="786439399"/>
</object>
<int key="connectionID">101</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">_toggleFilterSpace:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="786439399"/>
</object>
<int key="connectionID">102</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -443,7 +484,7 @@
<reference key="firstItem" ref="498286707"/>
<int key="firstAttribute">5</int>
<int key="relation">1</int>
<reference key="secondItem" ref="340435610"/>
<reference key="secondItem" ref="786439399"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
@@ -471,6 +512,38 @@
<float key="scoringTypeFloat">40</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="878591000">
<reference key="firstItem" ref="786439399"/>
<int key="firstAttribute">5</int>
<int key="relation">0</int>
<reference key="secondItem" ref="340435610"/>
<int key="secondAttribute">6</int>
<float key="multiplier">1</float>
<object class="IBNSLayoutSymbolicConstant" key="constant">
<double key="value">8</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1005"/>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">3</int>
</object>
<object class="IBNSLayoutConstraint" id="664428666">
<reference key="firstItem" ref="786439399"/>
<int key="firstAttribute">11</int>
<int key="relation">0</int>
<reference key="secondItem" ref="340435610"/>
<int key="secondAttribute">11</int>
<float key="multiplier">1</float>
<object class="IBLayoutConstant" key="constant">
<double key="value">0.0</double>
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="1005"/>
<int key="scoringType">6</int>
<float key="scoringTypeFloat">24</float>
<int key="contentType">2</int>
</object>
<object class="IBNSLayoutConstraint" id="959342076">
<reference key="firstItem" ref="1005"/>
<int key="firstAttribute">10</int>
@@ -637,6 +710,7 @@
<reference ref="340435610"/>
<reference ref="113591000"/>
<reference ref="498286707"/>
<reference ref="786439399"/>
</array>
<reference key="parent" ref="0"/>
</object>
@@ -777,8 +851,8 @@
</object>
<float key="priority">1000</float>
<reference key="containingView" ref="498286707"/>
<int key="scoringType">3</int>
<float key="scoringTypeFloat">9</float>
<int key="scoringType">9</int>
<float key="scoringTypeFloat">40</float>
<int key="contentType">1</int>
</object>
</array>
@@ -794,11 +868,6 @@
<reference key="object" ref="120785100"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">87</int>
<reference key="object" ref="312382951"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">83</int>
<reference key="object" ref="548170831"/>
@@ -814,13 +883,41 @@
<reference key="object" ref="817657248"/>
<reference key="parent" ref="498286707"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">96</int>
<reference key="object" ref="786439399"/>
<array class="NSMutableArray" key="children">
<reference ref="150863911"/>
</array>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">97</int>
<reference key="object" ref="150863911"/>
<reference key="parent" ref="786439399"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">98</int>
<reference key="object" ref="664428666"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">99</int>
<reference key="object" ref="878591000"/>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">100</int>
<reference key="object" ref="312382951"/>
<reference key="parent" ref="1005"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<array class="NSMutableArray" key="1.IBNSViewMetadataConstraints">
<array key="1.IBNSViewMetadataConstraints">
<reference ref="777287174"/>
<reference ref="201173489"/>
<reference ref="274700398"/>
@@ -831,6 +928,8 @@
<reference ref="160109106"/>
<reference ref="112675040"/>
<reference ref="959342076"/>
<reference ref="664428666"/>
<reference ref="878591000"/>
<reference ref="120785100"/>
<reference ref="312382951"/>
<reference ref="207946731"/>
@@ -840,6 +939,7 @@
<boolean value="NO" key="1.IBNSViewMetadataLastInspectedTranslatesAutoresizingMaskIntoConstraints"/>
<boolean value="NO" key="1.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="100.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="2.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -875,14 +975,18 @@
<string key="81.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="83.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="86.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="87.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="93.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="96.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="96.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="97.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="98.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="99.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">95</int>
<int key="maxID">102</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -897,6 +1001,17 @@
<object class="IBPartialClassDescription">
<string key="className">MPEntryViewController</string>
<string key="superclassName">MPViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">_toggleFilterSpace:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">_toggleFilterSpace:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">_toggleFilterSpace:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="addEntryButton">NSButton</string>
<string key="bottomBar">HNHGradientView</string>
@@ -905,11 +1020,12 @@
<string key="filterBar">NSView</string>
<string key="filterDoneButton">NSButton</string>
<string key="filterLabelTextField">NSTextField</string>
<string key="filterPasswordButton">NSButton</string>
<string key="filterSearchField">NSSearchField</string>
<string key="filterTitleButton">NSButton</string>
<string key="filterURLButton">NSButton</string>
<string key="filterUsernameButton">NSButton</string>
<string key="tableToTop">NSLayoutConstraint</string>
<string key="tableToTopConstraint">NSLayoutConstraint</string>
<string key="trashBar">HNHGradientView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -941,6 +1057,10 @@
<string key="name">filterLabelTextField</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo" key="filterPasswordButton">
<string key="name">filterPasswordButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="filterSearchField">
<string key="name">filterSearchField</string>
<string key="candidateClassName">NSSearchField</string>
@@ -957,8 +1077,8 @@
<string key="name">filterUsernameButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="tableToTop">
<string key="name">tableToTop</string>
<object class="IBToOneOutletInfo" key="tableToTopConstraint">
<string key="name">tableToTopConstraint</string>
<string key="candidateClassName">NSLayoutConstraint</string>
</object>
<object class="IBToOneOutletInfo" key="trashBar">

View File

@@ -100,8 +100,7 @@
}
- (IBAction)close:(id)sender {
[NSApp endSheet:[self window]];
[[self window] orderOut:nil];
[self dismissSheet:0];
}
- (void)updateView {
@@ -237,22 +236,26 @@
- (NSMenu *)_buildTreeMenu:(KPKTree *)tree preselect:(NSUUID *)uuid {
NSMenu *menu = [[NSMenu alloc] init];
[menu setAutoenablesItems:NO];
/*
Trash and Templates can be nested, so wee need to adhere to this :(
*/
for(KPKGroup *group in tree.root.groups) {
NSMenuItem *groupItem = [[NSMenuItem alloc] init];
[groupItem setImage:group.iconImage];
[groupItem setTitle:group.name];
[groupItem setRepresentedObject:group];
[groupItem setEnabled:YES];
if(uuid && [group.uuid isEqual:uuid]) {
[groupItem setState:NSOnState];
}
[menu addItem:groupItem];
[self _insertMenuItemsForGroup:group atLevel:0 inMenu:menu preselect:uuid];
}
return menu;
}
- (void)_insertMenuItemsForGroup:(KPKGroup *)group atLevel:(NSUInteger)level inMenu:(NSMenu *)menu preselect:(NSUUID *)uuid{
NSMenuItem *groupItem = [[NSMenuItem alloc] init];
[groupItem setImage:group.iconImage];
[groupItem setTitle:group.name];
[groupItem setRepresentedObject:group];
[groupItem setEnabled:YES];
if(uuid && [group.uuid isEqual:uuid]) {
[groupItem setState:NSOnState];
}
[groupItem setIndentationLevel:level];
[menu addItem:groupItem];
for(KPKGroup *childGroup in group.groups) {
[self _insertMenuItemsForGroup:childGroup atLevel:level + 1 inMenu:menu preselect:uuid];
}
}
@end

View File

@@ -76,10 +76,10 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
switch(version) {
case KPKLegacyVersion:
return MPLegacyDocumentUTI;
case KPKXmlVersion:
return MPXMLDocumentUTI;
default:
return @"Unknown";
}
@@ -194,7 +194,7 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
[savePanel setAccessoryView:[self.savePanelViewController view]];
[self.savePanelViewController updateView];
return YES;
}
@@ -219,7 +219,7 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
self.password = [password length] > 0 ? password : nil;
self.tree = [[KPKTree alloc] initWithData:_encryptedData password:passwordData error:error];
return (self.tree != nil);
}
@@ -405,12 +405,12 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
- (void)deleteEntry:(KPKEntry *)entry {
if(self.useTrash) {
if(!self.trash) {
[self _createTrashGroup];
}
if([self isItemTrashed:entry]) {
return; // Entry is already trashed
}
if(!self.trash) {
[self _createTrashGroup];
}
[entry moveToGroup:self.trash atIndex:[self.trash.entries count]];
[[self undoManager] setActionName:NSLocalizedString(@"TRASH_ENTRY", "Move Entry to Trash")];
}
@@ -496,17 +496,14 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
- (KPKGroup *)_createTrashGroup {
/* Maybe push the stuff to the Tree? */
KPKGroup *trash = [self.tree createGroup:self.tree.root];
BOOL wasEnabled = [self.undoManager isUndoRegistrationEnabled];
[self.undoManager disableUndoRegistration];
trash.name = NSLocalizedString(@"TRASH", @"Name for the trash group");
trash.icon = MPIconTrash;
BOOL registrationEnable = [[self undoManager] isUndoRegistrationEnabled];
if(registrationEnable) {
[[self undoManager] disableUndoRegistration];
}
[self.tree.root addGroup:trash];
if(registrationEnable) {
[[self undoManager] enableUndoRegistration];
if(wasEnabled) {
[self.undoManager enableUndoRegistration];
}
self.tree.metaData.recycleBinUuid = trash.uuid;
return trash;
}

View File

@@ -42,6 +42,7 @@ typedef NS_OPTIONS(NSUInteger, MPFilterModeType) {
MPFilterUrls = (1<<0),
MPFilterUsernames = (1<<1),
MPFilterTitles = (1<<2),
MPFilterPasswords = (1<<3),
};
typedef NS_ENUM(NSUInteger,MPOVerlayInfoType) {
@@ -64,10 +65,6 @@ NSString *const _MPTableImageCellView = @"ImageCell";
NSString *const _MPTableStringCellView = @"StringCell";
NSString *const _MPTAbleSecurCellView = @"PasswordCell";
NSString *const _toggleFilterURLButton = @"SearchURL";
NSString *const _toggleFilterTitleButton = @"SearchTitle";
NSString *const _toggleFilterUsernameButton = @"SearchUsername";
@interface MPEntryViewController () {
MPEntryContextMenuDelegate *_menuDelegate;
}
@@ -84,6 +81,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
@property (weak) IBOutlet NSButton *filterTitleButton;
@property (weak) IBOutlet NSButton *filterUsernameButton;
@property (weak) IBOutlet NSButton *filterURLButton;
@property (weak) IBOutlet NSButton *filterPasswordButton;
@property (weak) IBOutlet NSTextField *filterLabelTextField;
@property (weak) IBOutlet NSSearchField *filterSearchField;
@property (weak) IBOutlet HNHGradientView *bottomBar;
@@ -96,7 +94,6 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
@property (nonatomic, strong) MPEntryTableDataSource *dataSource;
@property (assign, nonatomic) MPFilterModeType filterMode;
@property (strong, nonatomic) NSDictionary *filterButtonToMode;
@end
@@ -111,10 +108,6 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if(self) {
_filterMode = MPFilterTitles;
_filterButtonToMode = @{ _toggleFilterUsernameButton : @(MPFilterUsernames),
_toggleFilterTitleButton : @(MPFilterTitles),
_toggleFilterURLButton : @(MPFilterUrls)
};
_entryArrayController = [[NSArrayController alloc] init];
_dataSource = [[MPEntryTableDataSource alloc] init];
_dataSource.viewController = self;
@@ -235,7 +228,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
}
else {
assert(entry.parent);
[[view textField] bind:NSValueBinding toObject:entry.parent withKeyPath:entry.parent.name options:nil];
[[view textField] bind:NSValueBinding toObject:entry.parent withKeyPath:@"parent.name" options:nil];
[[view imageView] setImage:entry.iconImage];
}
}
@@ -353,7 +346,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
}
- (void)updateFilter {
//[self _showFilterBarAnimated];
[self _showFilterBarAnimated];
if(![self hasFilter]) {
return;
}
@@ -362,16 +355,19 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
dispatch_async(backgroundQueue, ^{
MPDocument *document = [[self windowController] document];
if([self hasFilter]) {
NSMutableArray *prediactes = [NSMutableArray arrayWithCapacity:3];
if( [self _shouldFilterTitles] ) {
NSMutableArray *prediactes = [NSMutableArray arrayWithCapacity:4];
if([self _shouldFilterTitles]) {
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.title CONTAINS[cd] %@", self.filter]];
}
if( [self _shouldFilterUsernames] ) {
if([self _shouldFilterUsernames]) {
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.username CONTAINS[cd] %@", self.filter]];
}
if( [self _shouldFilterURLs] ) {
if([self _shouldFilterURLs]) {
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.url CONTAINS[cd] %@", self.filter]];
}
if([self _shouldFilterPasswords]) {
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.password CONTAINS[cd] %@", self.filter]];
}
NSPredicate *fullFilter = [NSCompoundPredicate orPredicateWithSubpredicates:prediactes];
self.filteredEntries = [[document.root childEntries] filteredArrayUsingPredicate:fullFilter];
}
@@ -397,9 +393,10 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
- (void)setupFilterBar {
if(!self.filterBar) {
[[NSBundle mainBundle] loadNibNamed:@"FilterBar" owner:self topLevelObjects:nil];
[self.filterURLButton setIdentifier:_toggleFilterURLButton];
[self.filterUsernameButton setIdentifier:_toggleFilterUsernameButton];
[self.filterTitleButton setIdentifier:_toggleFilterTitleButton];
[self.filterURLButton setTag:MPFilterUrls];
[self.filterUsernameButton setTag:MPFilterUsernames];
[self.filterTitleButton setTag:MPFilterTitles];
[self.filterPasswordButton setTag:MPFilterPasswords];
[[self.filterLabelTextField cell] setBackgroundStyle:NSBackgroundStyleRaised];
[self.filterDoneButton setAction:@selector(clearFilter:)];
[self.filterDoneButton setTarget:nil];
@@ -426,6 +423,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
[self.filterTitleButton setState:[self _shouldFilterTitles] ? NSOnState : NSOffState];
[self.filterURLButton setState:[self _shouldFilterURLs] ? NSOnState : NSOffState ];
[self.filterUsernameButton setState:[self _shouldFilterUsernames] ? NSOnState : NSOffState];
[self.filterPasswordButton setState:[self _shouldFilterPasswords] ? NSOnState : NSOffState];
if([self _showsFilterBar]) {
return; // nothing to to
@@ -670,10 +668,12 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
return YES;
}
- (void)_toggleFilterSpace:(id)sender {
- (IBAction)_toggleFilterSpace:(id)sender {
if(![sender isKindOfClass:[NSButton class]]) {
return; // Wrong sender
}
NSButton *button = sender;
NSNumber *value = self.filterButtonToMode[[button identifier]];
MPFilterModeType toggledMode = (MPFilterModeType)[value intValue];
MPFilterModeType toggledMode = [button tag];
switch ([button state]) {
case NSOnState:
self.filterMode |= toggledMode;
@@ -724,15 +724,19 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
}
- (BOOL)_shouldFilterTitles {
return ( MPFilterNone != (self.filterMode & MPFilterTitles));
return (MPFilterNone != (self.filterMode & MPFilterTitles));
}
- (BOOL)_shouldFilterURLs {
return ( MPFilterNone != (self.filterMode & MPFilterUrls));
return (MPFilterNone != (self.filterMode & MPFilterUrls));
}
- (BOOL)_shouldFilterUsernames {
return ( MPFilterNone != (self.filterMode & MPFilterUsernames));
return (MPFilterNone != (self.filterMode & MPFilterUsernames));
}
- (BOOL)_shouldFilterPasswords {
return (MPFilterNone != (self.filterMode & MPFilterPasswords));
}
@end

View File

@@ -117,10 +117,12 @@
NSString *draggedType = [types lastObject];
if([draggedType isEqualToString:KPKGroupUTI]) {
[self.draggedGroup moveToGroup:targetGroup atIndex:index];
[self.draggedGroup.undoManager setActionName:NSLocalizedString(@"MOVE_GROUP", "")];
return YES;
}
else if([draggedType isEqualToString:KPKUUIDUTI]) {
[self.draggedEntry moveToGroup:targetGroup atIndex:index];
[self.draggedEntry.undoManager setActionName:NSLocalizedString(@"MOVE_ENTRY", "")];
return YES;
}
return NO;