Using trash API from KeePassKit. Minor changes to modern Objective Syntax

Signed-off-by: michael starke <michael.starke@hicknhack-software.com>
This commit is contained in:
michael starke
2015-08-05 17:39:07 +02:00
parent 252f80b161
commit bc458506e5
3 changed files with 54 additions and 74 deletions

View File

@@ -32,8 +32,6 @@
NSString *_missingFeature; NSString *_missingFeature;
} }
@property (nonatomic,assign) BOOL trashEnabled;
@end @end
@implementation MPDatabaseSettingsWindowController @implementation MPDatabaseSettingsWindowController
@@ -55,8 +53,8 @@
NSAssert(self.document != nil, @"Document needs to be present"); NSAssert(self.document != nil, @"Document needs to be present");
[self.sectionTabView setDelegate:self]; self.sectionTabView.delegate = self;
[self.encryptionRoundsTextField setFormatter:[[MPNumericalInputFormatter alloc] init]]; self.encryptionRoundsTextField.formatter = [[MPNumericalInputFormatter alloc] init];
} }
#pragma mark Actions #pragma mark Actions
@@ -64,14 +62,14 @@
- (IBAction)save:(id)sender { - (IBAction)save:(id)sender {
/* General */ /* General */
KPKMetaData *metaData = ((MPDocument *)self.document).tree.metaData; KPKMetaData *metaData = ((MPDocument *)self.document).tree.metaData;
metaData.databaseDescription = [self.databaseDescriptionTextView string]; metaData.databaseDescription = self.databaseDescriptionTextView.string;
metaData.databaseName = [self.databaseNameTextField stringValue]; metaData.databaseName = self.databaseNameTextField.stringValue;
NSInteger compressionIndex = [self.databaseCompressionPopupButton indexOfSelectedItem]; NSInteger compressionIndex = self.databaseCompressionPopupButton.indexOfSelectedItem;
if(compressionIndex >= KPKCompressionNone && compressionIndex < KPKCompressionCount) { if(compressionIndex >= KPKCompressionNone && compressionIndex < KPKCompressionCount) {
metaData.compressionAlgorithm = (uint32_t)compressionIndex; metaData.compressionAlgorithm = (uint32_t)compressionIndex;
} }
NSColor *databaseColor = [self.databaseColorColorWell color]; NSColor *databaseColor = self.databaseColorColorWell.color;
if([databaseColor isEqual:[NSColor clearColor]]) { if([databaseColor isEqual:[NSColor clearColor]]) {
metaData.color = nil; metaData.color = nil;
} }
@@ -80,37 +78,37 @@
} }
/* Advanced */ /* Advanced */
metaData.useTrash = self.trashEnabled; metaData.useTrash = HNHBoolForState(self.enableTrashCheckButton.state);
NSMenuItem *trashMenuItem = [self.selectTrashGoupPopUpButton selectedItem]; NSMenuItem *trashMenuItem = self.selectTrashGoupPopUpButton.selectedItem;
KPKGroup *trashGroup = [trashMenuItem representedObject]; KPKGroup *trashGroup = trashMenuItem.representedObject;
((MPDocument *)self.document).tree.trash = trashGroup; ((MPDocument *)self.document).tree.trash = trashGroup;
NSMenuItem *templateMenuItem = [self.templateGroupPopUpButton selectedItem]; NSMenuItem *templateMenuItem = self.templateGroupPopUpButton.selectedItem;
KPKGroup *templateGroup = [templateMenuItem representedObject]; KPKGroup *templateGroup = templateMenuItem.representedObject;
((MPDocument *)self.document).templates = templateGroup; ((MPDocument *)self.document).templates = templateGroup;
BOOL enforceMasterKeyChange = HNHBoolForState([self.enforceKeyChangeCheckButton state]); BOOL enforceMasterKeyChange = HNHBoolForState(self.enforceKeyChangeCheckButton.state);
BOOL recommendMasterKeyChange = HNHBoolForState([self.recommendKeyChangeCheckButton state]); BOOL recommendMasterKeyChange = HNHBoolForState(self.recommendKeyChangeCheckButton.state);
enforceMasterKeyChange &= ([[self.enforceKeyChangeIntervalTextField stringValue] length] != 0); enforceMasterKeyChange &= (self.enforceKeyChangeIntervalTextField.stringValue.length != 0);
recommendMasterKeyChange &= ([[self.recommendKeyChangeIntervalTextField stringValue] length] != 0); recommendMasterKeyChange &= (self.recommendKeyChangeIntervalTextField.stringValue.length != 0);
NSInteger enfoceInterval = [self.enforceKeyChangeIntervalTextField integerValue]; NSInteger enfoceInterval = self.enforceKeyChangeIntervalTextField.integerValue;
NSInteger recommendInterval = [self.recommendKeyChangeIntervalTextField integerValue]; NSInteger recommendInterval = self.recommendKeyChangeIntervalTextField.integerValue;
metaData.masterKeyChangeEnforcementInterval = enforceMasterKeyChange ? enfoceInterval : -1; metaData.masterKeyChangeEnforcementInterval = enforceMasterKeyChange ? enfoceInterval : -1;
metaData.masterKeyChangeRecommendationInterval = recommendMasterKeyChange ? recommendInterval : -1; metaData.masterKeyChangeRecommendationInterval = recommendMasterKeyChange ? recommendInterval : -1;
/* Security */ /* Security */
metaData.protectNotes = HNHBoolForState([self.protectNotesCheckButton state]); metaData.protectNotes = HNHBoolForState(self.protectNotesCheckButton.state);
metaData.protectPassword = HNHBoolForState([self.protectPasswortCheckButton state]); metaData.protectPassword = HNHBoolForState(self.protectPasswortCheckButton.state);
metaData.protectTitle = HNHBoolForState([self.protectTitleCheckButton state]); metaData.protectTitle = HNHBoolForState(self.protectTitleCheckButton.state);
metaData.protectUrl = HNHBoolForState([self.protectURLCheckButton state]); metaData.protectUrl = HNHBoolForState(self.protectURLCheckButton.state);
metaData.protectUserName = HNHBoolForState([self.protectUserNameCheckButton state]); metaData.protectUserName = HNHBoolForState(self.protectUserNameCheckButton.state);
metaData.defaultUserName = [self.defaultUsernameTextField stringValue]; metaData.defaultUserName = self.defaultUsernameTextField.stringValue;
/* /*
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
@@ -122,8 +120,8 @@
[defaults synchronize]; [defaults synchronize];
*/ */
metaData.rounds = MAX(0,[self.encryptionRoundsTextField integerValue]); metaData.rounds = MAX(0,self.encryptionRoundsTextField.integerValue);
/* Register an action to enable prompts when user closes without saving */ /* Register an action to enable promts when user cloeses without saving */
[self.document updateChangeCount:NSChangeDone]; [self.document updateChangeCount:NSChangeDone];
[self close:nil]; [self close:nil];
} }
@@ -135,8 +133,8 @@
- (IBAction)benchmarkRounds:(id)sender { - (IBAction)benchmarkRounds:(id)sender {
[self.benchmarkButton setEnabled:NO]; [self.benchmarkButton setEnabled:NO];
[KPKCompositeKey benchmarkTransformationRounds:1 completionHandler:^(NSUInteger rounds) { [KPKCompositeKey benchmarkTransformationRounds:1 completionHandler:^(NSUInteger rounds) {
[self.encryptionRoundsTextField setIntegerValue:rounds]; self.encryptionRoundsTextField.integerValue = rounds;
[self.benchmarkButton setEnabled:YES]; self.benchmarkButton.enabled = YES;
}]; }];
} }
@@ -182,11 +180,11 @@
#pragma mark Private Helper #pragma mark Private Helper
- (void)_setupDatabaseTab:(KPKMetaData *)metaData { - (void)_setupDatabaseTab:(KPKMetaData *)metaData {
[self.databaseNameTextField setStringValue:metaData.databaseName]; self.databaseNameTextField.stringValue = metaData.databaseName;
[self.databaseDescriptionTextView setString:metaData.databaseDescription]; self.databaseDescriptionTextView.string = metaData.databaseDescription;
[self.databaseCompressionPopupButton selectItemAtIndex:metaData.compressionAlgorithm]; [self.databaseCompressionPopupButton selectItemAtIndex:metaData.compressionAlgorithm];
NSColor *databaseColor = metaData.color ? metaData.color : [NSColor clearColor]; NSColor *databaseColor = metaData.color ? metaData.color : [NSColor clearColor];
[self.databaseColorColorWell setColor:databaseColor]; self.databaseColorColorWell.color = databaseColor;
} }
- (void)_setupProtectionTab:(KPKMetaData *)metaData { - (void)_setupProtectionTab:(KPKMetaData *)metaData {
@@ -202,13 +200,13 @@
- (void)_setupAdvancedTab:(KPKTree *)tree { - (void)_setupAdvancedTab:(KPKTree *)tree {
/* TODO Do not use bindings, as the user should be able to cancel */ /* TODO Do not use bindings, as the user should be able to cancel */
[self bind:NSStringFromSelector(@selector(trashEnabled)) toObject:tree.metaData withKeyPath:NSStringFromSelector(@selector(trashEnabled)) options:nil]; //[self bind:NSStringFromSelector(@selector(trashEnabled)) toObject:tree.metaData withKeyPath:NSStringFromSelector(@selector(useTrash)) options:nil];
[self.enableTrashCheckButton bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(trashEnabled)) options:nil]; [self.enableTrashCheckButton bind:NSValueBinding toObject:tree.metaData withKeyPath:NSStringFromSelector(@selector(useTrash)) options:nil];
[self.selectTrashGoupPopUpButton bind:NSEnabledBinding toObject:self withKeyPath:NSStringFromSelector(@selector(trashEnabled)) options:nil]; [self.selectTrashGoupPopUpButton bind:NSEnabledBinding toObject:tree.metaData withKeyPath:NSStringFromSelector(@selector(useTrash)) options:nil];
[self _updateTrashFolders:tree]; [self _updateTrashFolders:tree];
[self.defaultUsernameTextField setStringValue:tree.metaData.defaultUserName]; self.defaultUsernameTextField.stringValue = tree.metaData.defaultUserName;
[self.defaultUsernameTextField setEditable:YES]; self.defaultUsernameTextField.editable = YES;
[self _updateTemplateGroup:tree]; [self _updateTemplateGroup:tree];
HNHSetStateFromBool(self.enforceKeyChangeCheckButton, tree.metaData.enforceMasterKeyChange); HNHSetStateFromBool(self.enforceKeyChangeCheckButton, tree.metaData.enforceMasterKeyChange);
@@ -238,15 +236,15 @@
switch(tab) { switch(tab) {
case MPDatabaseSettingsTabAdvanced: case MPDatabaseSettingsTabAdvanced:
[[self window] makeFirstResponder:self.defaultUsernameTextField]; [self.window makeFirstResponder:self.defaultUsernameTextField];
break; break;
case MPDatabaseSettingsTabSecurity: case MPDatabaseSettingsTabSecurity:
[[self window] makeFirstResponder:self.protectTitleCheckButton]; [self.window makeFirstResponder:self.protectTitleCheckButton];
break; break;
case MPDatabaseSettingsTabGeneral: case MPDatabaseSettingsTabGeneral:
[[self window] makeFirstResponder:self.databaseNameTextField]; [self.window makeFirstResponder:self.databaseNameTextField];
break; break;
} }
} }

View File

@@ -506,21 +506,14 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey
if(!entry) { if(!entry) {
return; // Nothing to do; return; // Nothing to do;
} }
if(self.tree.metaData.useTrash) { if(entry.isTrashed) {
if(entry.isTrashed) { [self _presentTrashAlertForItem:entry];
[self _presentTrashAlertForItem:entry]; return;
return;
}
if(!self.trash) {
[self _createTrashGroup];
}
[entry moveToGroup:self.trash];
[[self undoManager] setActionName:NSLocalizedString(@"TRASH_ENTRY", "Move Entry to Trash")];
}
else {
[entry remove];
[[self undoManager] setActionName:NSLocalizedString(@"DELETE_ENTRY", "")];
} }
[entry trashOrRemove];
BOOL permanent = (nil == self.trash);
[self.undoManager setActionName:permanent ? NSLocalizedString(@"DELETE_ENTRY", "") : NSLocalizedString(@"TRASH_ENTRY", "Move Entry to Trash")];
if(self.selectedEntry == entry) { if(self.selectedEntry == entry) {
self.selectedEntry = nil; self.selectedEntry = nil;
} }
@@ -530,24 +523,13 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey
if(!group) { if(!group) {
return; // Nothing to do; return; // Nothing to do;
} }
if(self.tree.metaData.useTrash) { if(group.isTrashed) {
if(group.isTrashed) { [self _presentTrashAlertForItem:group];
[self _presentTrashAlertForItem:group]; return;
return;
}
if(!self.trash) {
[self _createTrashGroup];
}
if(group == self.trash) {
return; //Group is trash!
}
[group moveToGroup:self.trash];
[[self undoManager] setActionName:NSLocalizedString(@"TRASH_GROUP", "Move Group to Trash")];
}
else {
[group remove];
[[self undoManager] setActionName:NSLocalizedString(@"DELETE_GROUP", "Delete Group")];
} }
[group trashOrRemove];
BOOL permanent = (nil == self.trash);
[self.undoManager setActionName:permanent ? NSLocalizedString(@"DELETE_GROUP", "Delete Group") : NSLocalizedString(@"TRASH_GROUP", "Move Group to Trash")];
} }
#pragma mark Actions #pragma mark Actions
@@ -746,8 +728,8 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey
} }
} }
/*
- (KPKGroup *)_createTrashGroup { - (KPKGroup *)_createTrashGroup {
/* Maybe push the stuff to the Tree? */
KPKGroup *trash = [self.tree createGroup:self.tree.root]; KPKGroup *trash = [self.tree createGroup:self.tree.root];
BOOL wasEnabled = [self.undoManager isUndoRegistrationEnabled]; BOOL wasEnabled = [self.undoManager isUndoRegistrationEnabled];
[self.undoManager disableUndoRegistration]; [self.undoManager disableUndoRegistration];
@@ -760,7 +742,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey
self.tree.metaData.trashUuid = trash.uuid; self.tree.metaData.trashUuid = trash.uuid;
return trash; return trash;
} }
*/
- (void)_emptyTrash { - (void)_emptyTrash {
for(KPKEntry *entry in [self.trash childEntries]) { for(KPKEntry *entry in [self.trash childEntries]) {
[[self undoManager] removeAllActionsWithTarget:entry]; [[self undoManager] removeAllActionsWithTarget:entry];

View File

@@ -19,7 +19,7 @@
} }
- (NSWindow *)window { - (NSWindow *)window {
NSWindow *window = [super window]; NSWindow *window = super.window;
[self updateView]; [self updateView];
return window; return window;
} }