Global and Entry based defaults work. Entry defaults cannot be removed for now.

This commit is contained in:
michael starke
2014-10-22 17:39:29 +02:00
parent 8dd86ab350
commit 772a814349
2 changed files with 17 additions and 9 deletions

View File

@@ -273,6 +273,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
[self.generatePasswordButton setEnabled:NO]; [self.generatePasswordButton setEnabled:NO];
MPPasswordCreatorViewController *viewController = [[MPPasswordCreatorViewController alloc] init]; MPPasswordCreatorViewController *viewController = [[MPPasswordCreatorViewController alloc] init];
viewController.allowsEntryDefaults = YES; viewController.allowsEntryDefaults = YES;
viewController.entry = self.entry;
[self _showPopopver:viewController atView:self.passwordTextField onEdge:NSMinYEdge]; [self _showPopopver:viewController atView:self.passwordTextField onEdge:NSMinYEdge];
} }

View File

@@ -93,7 +93,6 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
[self.customCharactersTextField setStringValue:_customString]; [self.customCharactersTextField setStringValue:_customString];
/* Value Transformer */ /* Value Transformer */
id formatter = [[MPUniqueCharactersFormatter alloc] init]; id formatter = [[MPUniqueCharactersFormatter alloc] init];
[self. customCharactersTextField setFormatter:formatter]; [self. customCharactersTextField setFormatter:formatter];
@@ -166,7 +165,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
} }
- (IBAction)_setDefault:(id)sender { - (IBAction)_setDefault:(id)sender {
if(self.useEntryDefaults) { if(self.useEntryDefaults && self.entry) {
NSMutableDictionary *entryDefaults = [[self _currentEntryDefaults] mutableCopy]; NSMutableDictionary *entryDefaults = [[self _currentEntryDefaults] mutableCopy];
if(!entryDefaults) { if(!entryDefaults) {
entryDefaults = [[NSMutableDictionary alloc] initWithCapacity:4]; // we will only add one enty to new settings entryDefaults = [[NSMutableDictionary alloc] initWithCapacity:4]; // we will only add one enty to new settings
@@ -179,14 +178,18 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
if(!availableDefaults) { if(!availableDefaults) {
availableDefaults = [[NSMutableDictionary alloc] initWithCapacity:1]; availableDefaults = [[NSMutableDictionary alloc] initWithCapacity:1];
} }
availableDefaults[self.entry.uuid] = entryDefaults; availableDefaults[[self.entry.uuid UUIDString]] = entryDefaults;
[[NSUserDefaults standardUserDefaults] setObject:availableDefaults forKey:kMPSettingsKeyPasswordDefaultsForEntry];
} }
else { else if(!self.useEntryDefaults) {
[[NSUserDefaults standardUserDefaults] setInteger:self.passwordLength forKey:kMPSettingsKeyDefaultPasswordLength]; [[NSUserDefaults standardUserDefaults] setInteger:self.passwordLength forKey:kMPSettingsKeyDefaultPasswordLength];
[[NSUserDefaults standardUserDefaults] setInteger:self.characterFlags forKey:kMPSettingsKeyPasswordCharacterFlags]; [[NSUserDefaults standardUserDefaults] setInteger:self.characterFlags forKey:kMPSettingsKeyPasswordCharacterFlags];
[[NSUserDefaults standardUserDefaults] setBool:self.useCustomString forKey:kMPSettingsKeyPasswordUseCustomString]; [[NSUserDefaults standardUserDefaults] setBool:self.useCustomString forKey:kMPSettingsKeyPasswordUseCustomString];
[[NSUserDefaults standardUserDefaults] setObject:[self.customCharactersTextField stringValue] forKey:kMPSettingsKeyPasswordCustomString]; [[NSUserDefaults standardUserDefaults] setObject:[self.customCharactersTextField stringValue] forKey:kMPSettingsKeyPasswordCustomString];
} }
else {
NSLog(@"Cannot set password generator defaults. Inconsitent state. Aborting.");
}
[self.setDefaultButton setEnabled:NO]; [self.setDefaultButton setEnabled:NO];
} }
@@ -195,6 +198,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
- (void)setUseEntryDefaults:(BOOL)useEntryDefaults { - (void)setUseEntryDefaults:(BOOL)useEntryDefaults {
if(self.useEntryDefaults != useEntryDefaults) { if(self.useEntryDefaults != useEntryDefaults) {
_useEntryDefaults = useEntryDefaults; _useEntryDefaults = useEntryDefaults;
[self.setDefaultButton setEnabled:YES];
[self _setupDefaults]; [self _setupDefaults];
[self reset]; [self reset];
} }
@@ -203,8 +207,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
- (void)setEntry:(KPKEntry *)entry { - (void)setEntry:(KPKEntry *)entry {
if(_entry != entry) { if(_entry != entry) {
_entry = entry; _entry = entry;
[self _setupDefaults]; self.useEntryDefaults = [self _hasValidDefaultsForCurrentEntry];
[self reset];
} }
} }
@@ -250,18 +253,18 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
- (NSDictionary *)_currentEntryDefaults { - (NSDictionary *)_currentEntryDefaults {
if(self.entry) { if(self.entry) {
return [self _availableEntryDefaults][self.entry.uuid]; return [self _availableEntryDefaults][[self.entry.uuid UUIDString]];
} }
return nil; return nil;
} }
- (void)_setupDefaults { - (void)_setupDefaults {
NSDictionary *entryDefaults = [self _currentEntryDefaults]; NSDictionary *entryDefaults = [self _currentEntryDefaults];
if(entryDefaults) { if(entryDefaults && self.useEntryDefaults) {
self.passwordLength = [entryDefaults[kMPSettingsKeyDefaultPasswordLength] integerValue]; self.passwordLength = [entryDefaults[kMPSettingsKeyDefaultPasswordLength] integerValue];
self.characterFlags = [entryDefaults[kMPSettingsKeyPasswordCharacterFlags] integerValue]; self.characterFlags = [entryDefaults[kMPSettingsKeyPasswordCharacterFlags] integerValue];
self.useCustomString = [entryDefaults[kMPSettingsKeyPasswordUseCustomString] boolValue]; self.useCustomString = [entryDefaults[kMPSettingsKeyPasswordUseCustomString] boolValue];
self.customString = [entryDefaults[kMPSettingsKeyPasswordCustomString] stringValue]; self.customString = entryDefaults[kMPSettingsKeyPasswordCustomString];
} }
else { else {
self.passwordLength = [[NSUserDefaults standardUserDefaults] integerForKey:kMPSettingsKeyDefaultPasswordLength]; self.passwordLength = [[NSUserDefaults standardUserDefaults] integerForKey:kMPSettingsKeyDefaultPasswordLength];
@@ -271,6 +274,10 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
} }
} }
- (BOOL)_hasValidDefaultsForCurrentEntry {
return (nil != [self _currentEntryDefaults]);
}
- (void)_resetCharacters { - (void)_resetCharacters {
if(self.useCustomString) { if(self.useCustomString) {
[self.customButton setState:NSOnState]; [self.customButton setState:NSOnState];