diff --git a/MacPass/MPDatabaseSettingsWindowController.m b/MacPass/MPDatabaseSettingsWindowController.m index b5fbc35d..4892d1bd 100644 --- a/MacPass/MPDatabaseSettingsWindowController.m +++ b/MacPass/MPDatabaseSettingsWindowController.m @@ -32,8 +32,6 @@ NSString *_missingFeature; } -@property (nonatomic,assign) BOOL trashEnabled; - @end @implementation MPDatabaseSettingsWindowController @@ -55,8 +53,8 @@ NSAssert(self.document != nil, @"Document needs to be present"); - [self.sectionTabView setDelegate:self]; - [self.encryptionRoundsTextField setFormatter:[[MPNumericalInputFormatter alloc] init]]; + self.sectionTabView.delegate = self; + self.encryptionRoundsTextField.formatter = [[MPNumericalInputFormatter alloc] init]; } #pragma mark Actions @@ -64,14 +62,14 @@ - (IBAction)save:(id)sender { /* General */ KPKMetaData *metaData = ((MPDocument *)self.document).tree.metaData; - metaData.databaseDescription = [self.databaseDescriptionTextView string]; - metaData.databaseName = [self.databaseNameTextField stringValue]; + metaData.databaseDescription = self.databaseDescriptionTextView.string; + metaData.databaseName = self.databaseNameTextField.stringValue; - NSInteger compressionIndex = [self.databaseCompressionPopupButton indexOfSelectedItem]; + NSInteger compressionIndex = self.databaseCompressionPopupButton.indexOfSelectedItem; if(compressionIndex >= KPKCompressionNone && compressionIndex < KPKCompressionCount) { metaData.compressionAlgorithm = (uint32_t)compressionIndex; } - NSColor *databaseColor = [self.databaseColorColorWell color]; + NSColor *databaseColor = self.databaseColorColorWell.color; if([databaseColor isEqual:[NSColor clearColor]]) { metaData.color = nil; } @@ -80,37 +78,37 @@ } /* Advanced */ - metaData.useTrash = self.trashEnabled; - NSMenuItem *trashMenuItem = [self.selectTrashGoupPopUpButton selectedItem]; - KPKGroup *trashGroup = [trashMenuItem representedObject]; + metaData.useTrash = HNHBoolForState(self.enableTrashCheckButton.state); + NSMenuItem *trashMenuItem = self.selectTrashGoupPopUpButton.selectedItem; + KPKGroup *trashGroup = trashMenuItem.representedObject; ((MPDocument *)self.document).tree.trash = trashGroup; - NSMenuItem *templateMenuItem = [self.templateGroupPopUpButton selectedItem]; - KPKGroup *templateGroup = [templateMenuItem representedObject]; + NSMenuItem *templateMenuItem = self.templateGroupPopUpButton.selectedItem; + KPKGroup *templateGroup = templateMenuItem.representedObject; ((MPDocument *)self.document).templates = templateGroup; - BOOL enforceMasterKeyChange = HNHBoolForState([self.enforceKeyChangeCheckButton state]); - BOOL recommendMasterKeyChange = HNHBoolForState([self.recommendKeyChangeCheckButton state]); + BOOL enforceMasterKeyChange = HNHBoolForState(self.enforceKeyChangeCheckButton.state); + BOOL recommendMasterKeyChange = HNHBoolForState(self.recommendKeyChangeCheckButton.state); - enforceMasterKeyChange &= ([[self.enforceKeyChangeIntervalTextField stringValue] length] != 0); - recommendMasterKeyChange &= ([[self.recommendKeyChangeIntervalTextField stringValue] length] != 0); + enforceMasterKeyChange &= (self.enforceKeyChangeIntervalTextField.stringValue.length != 0); + recommendMasterKeyChange &= (self.recommendKeyChangeIntervalTextField.stringValue.length != 0); - NSInteger enfoceInterval = [self.enforceKeyChangeIntervalTextField integerValue]; - NSInteger recommendInterval = [self.recommendKeyChangeIntervalTextField integerValue]; + NSInteger enfoceInterval = self.enforceKeyChangeIntervalTextField.integerValue; + NSInteger recommendInterval = self.recommendKeyChangeIntervalTextField.integerValue; metaData.masterKeyChangeEnforcementInterval = enforceMasterKeyChange ? enfoceInterval : -1; metaData.masterKeyChangeRecommendationInterval = recommendMasterKeyChange ? recommendInterval : -1; /* Security */ - metaData.protectNotes = HNHBoolForState([self.protectNotesCheckButton state]); - metaData.protectPassword = HNHBoolForState([self.protectPasswortCheckButton state]); - metaData.protectTitle = HNHBoolForState([self.protectTitleCheckButton state]); - metaData.protectUrl = HNHBoolForState([self.protectURLCheckButton state]); - metaData.protectUserName = HNHBoolForState([self.protectUserNameCheckButton state]); + metaData.protectNotes = HNHBoolForState(self.protectNotesCheckButton.state); + metaData.protectPassword = HNHBoolForState(self.protectPasswortCheckButton.state); + metaData.protectTitle = HNHBoolForState(self.protectTitleCheckButton.state); + metaData.protectUrl = HNHBoolForState(self.protectURLCheckButton.state); + metaData.protectUserName = HNHBoolForState(self.protectUserNameCheckButton.state); - metaData.defaultUserName = [self.defaultUsernameTextField stringValue]; + metaData.defaultUserName = self.defaultUsernameTextField.stringValue; /* NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; @@ -122,8 +120,8 @@ [defaults synchronize]; */ - metaData.rounds = MAX(0,[self.encryptionRoundsTextField integerValue]); - /* Register an action to enable prompts when user closes without saving */ + metaData.rounds = MAX(0,self.encryptionRoundsTextField.integerValue); + /* Register an action to enable promts when user cloeses without saving */ [self.document updateChangeCount:NSChangeDone]; [self close:nil]; } @@ -135,8 +133,8 @@ - (IBAction)benchmarkRounds:(id)sender { [self.benchmarkButton setEnabled:NO]; [KPKCompositeKey benchmarkTransformationRounds:1 completionHandler:^(NSUInteger rounds) { - [self.encryptionRoundsTextField setIntegerValue:rounds]; - [self.benchmarkButton setEnabled:YES]; + self.encryptionRoundsTextField.integerValue = rounds; + self.benchmarkButton.enabled = YES; }]; } @@ -182,11 +180,11 @@ #pragma mark Private Helper - (void)_setupDatabaseTab:(KPKMetaData *)metaData { - [self.databaseNameTextField setStringValue:metaData.databaseName]; - [self.databaseDescriptionTextView setString:metaData.databaseDescription]; + self.databaseNameTextField.stringValue = metaData.databaseName; + self.databaseDescriptionTextView.string = metaData.databaseDescription; [self.databaseCompressionPopupButton selectItemAtIndex:metaData.compressionAlgorithm]; NSColor *databaseColor = metaData.color ? metaData.color : [NSColor clearColor]; - [self.databaseColorColorWell setColor:databaseColor]; + self.databaseColorColorWell.color = databaseColor; } - (void)_setupProtectionTab:(KPKMetaData *)metaData { @@ -202,13 +200,13 @@ - (void)_setupAdvancedTab:(KPKTree *)tree { /* 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.enableTrashCheckButton bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(trashEnabled)) options:nil]; - [self.selectTrashGoupPopUpButton bind:NSEnabledBinding toObject:self 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:tree.metaData withKeyPath:NSStringFromSelector(@selector(useTrash)) options:nil]; + [self.selectTrashGoupPopUpButton bind:NSEnabledBinding toObject:tree.metaData withKeyPath:NSStringFromSelector(@selector(useTrash)) options:nil]; [self _updateTrashFolders:tree]; - [self.defaultUsernameTextField setStringValue:tree.metaData.defaultUserName]; - [self.defaultUsernameTextField setEditable:YES]; + self.defaultUsernameTextField.stringValue = tree.metaData.defaultUserName; + self.defaultUsernameTextField.editable = YES; [self _updateTemplateGroup:tree]; HNHSetStateFromBool(self.enforceKeyChangeCheckButton, tree.metaData.enforceMasterKeyChange); @@ -238,15 +236,15 @@ switch(tab) { case MPDatabaseSettingsTabAdvanced: - [[self window] makeFirstResponder:self.defaultUsernameTextField]; + [self.window makeFirstResponder:self.defaultUsernameTextField]; break; case MPDatabaseSettingsTabSecurity: - [[self window] makeFirstResponder:self.protectTitleCheckButton]; + [self.window makeFirstResponder:self.protectTitleCheckButton]; break; case MPDatabaseSettingsTabGeneral: - [[self window] makeFirstResponder:self.databaseNameTextField]; + [self.window makeFirstResponder:self.databaseNameTextField]; break; } } diff --git a/MacPass/MPDocument.m b/MacPass/MPDocument.m index e4cd5e31..2248b4f0 100644 --- a/MacPass/MPDocument.m +++ b/MacPass/MPDocument.m @@ -506,21 +506,14 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey if(!entry) { return; // Nothing to do; } - if(self.tree.metaData.useTrash) { - if(entry.isTrashed) { - [self _presentTrashAlertForItem:entry]; - 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", "")]; + if(entry.isTrashed) { + [self _presentTrashAlertForItem:entry]; + return; } + [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) { self.selectedEntry = nil; } @@ -530,24 +523,13 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey if(!group) { return; // Nothing to do; } - if(self.tree.metaData.useTrash) { - if(group.isTrashed) { - [self _presentTrashAlertForItem:group]; - 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")]; + if(group.isTrashed) { + [self _presentTrashAlertForItem:group]; + return; } + [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 @@ -746,8 +728,8 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey } } +/* - (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]; @@ -760,7 +742,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey self.tree.metaData.trashUuid = trash.uuid; return trash; } - +*/ - (void)_emptyTrash { for(KPKEntry *entry in [self.trash childEntries]) { [[self undoManager] removeAllActionsWithTarget:entry]; diff --git a/MacPass/MPSheetWindowController.m b/MacPass/MPSheetWindowController.m index c87a6d09..67322f4b 100644 --- a/MacPass/MPSheetWindowController.m +++ b/MacPass/MPSheetWindowController.m @@ -19,7 +19,7 @@ } - (NSWindow *)window { - NSWindow *window = [super window]; + NSWindow *window = super.window; [self updateView]; return window; }