mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-14 23:52:21 +00:00
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:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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];
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (NSWindow *)window {
|
- (NSWindow *)window {
|
||||||
NSWindow *window = [super window];
|
NSWindow *window = super.window;
|
||||||
[self updateView];
|
[self updateView];
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user