diff --git a/MacPass/Base.lproj/PasswordCreatorView.xib b/MacPass/Base.lproj/PasswordCreatorView.xib
index 035406ef..91824d97 100644
--- a/MacPass/Base.lproj/PasswordCreatorView.xib
+++ b/MacPass/Base.lproj/PasswordCreatorView.xib
@@ -19,6 +19,7 @@
+
@@ -233,6 +234,17 @@
+
diff --git a/MacPass/MPPasswordCreatorViewController.m b/MacPass/MPPasswordCreatorViewController.m
index a460536f..9a364656 100644
--- a/MacPass/MPPasswordCreatorViewController.m
+++ b/MacPass/MPPasswordCreatorViewController.m
@@ -49,6 +49,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
@property (weak) IBOutlet NSButton *numbersButton;
@property (weak) IBOutlet NSButton *symbolsButton;
@property (weak) IBOutlet NSButton *customButton;
+@property (weak) IBOutlet NSButton *setDefaultButton;
@property (weak) IBOutlet NSTextField *entropyTextField;
@property (weak) IBOutlet NSLevelIndicator *entropyIndicator;
@@ -65,19 +66,24 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
self = [super initWithNibName:@"PasswordCreatorView" bundle:nil];
if (self) {
_password = @"";
- _passwordLength = 12;
- _characterFlags = MPPasswordCharactersAll;
- _useCustomString = NO;
- _customString = @"";
+ _passwordLength = [[NSUserDefaults standardUserDefaults] integerForKey:kMPSettingsKeyDefaultPasswordLength];
+ _characterFlags = [[NSUserDefaults standardUserDefaults] integerForKey:kMPSettingsKeyPasswordCharacterFlags];
+ _useCustomString = [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyPasswordUseCustomString];
+ _customString = [[NSUserDefaults standardUserDefaults] stringForKey:kMPSettingsKeyPasswordCustomString];
_entropy = 0.0;
}
return self;
}
- (void)awakeFromNib {
+ [self.setDefaultButton setEnabled:NO];
+
[self.passwordLengthSlider setMinValue:MIN_PASSWORD_LENGTH];
[self.passwordLengthSlider setMaxValue:MAX_PASSWORD_LENGTH];
[self.passwordLengthSlider setContinuous:YES];
+
+ [self.customCharactersTextField setStringValue:_customString];
+
/* Value Transformer */
id formatter = [[MPUniqueCharactersFormatter alloc] init];
@@ -125,6 +131,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
}
- (IBAction)_toggleCharacters:(id)sender {
+ [_setDefaultButton setEnabled:YES];
_characterFlags ^= [sender tag];
self.useCustomString = NO;
[self reset];
@@ -142,6 +149,16 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
[[self _findCloseTarget] performClose:nil];
}
+- (IBAction)_setDefault:(id)sender
+{
+ [[NSUserDefaults standardUserDefaults] setInteger:_passwordLength forKey:kMPSettingsKeyDefaultPasswordLength];
+ [[NSUserDefaults standardUserDefaults] setInteger:_characterFlags forKey:kMPSettingsKeyPasswordCharacterFlags];
+ [[NSUserDefaults standardUserDefaults] setBool:_useCustomString forKey:kMPSettingsKeyPasswordUseCustomString];
+ [[NSUserDefaults standardUserDefaults] setObject:[_customCharactersTextField stringValue] forKey:kMPSettingsKeyPasswordCustomString];
+
+ [_setDefaultButton setEnabled:NO];
+}
+
#pragma mark -
#pragma mark Custom Setter
@@ -155,6 +172,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
- (void)setUseCustomString:(BOOL)useCustomString {
if(_useCustomString != useCustomString) {
+ [_setDefaultButton setEnabled:YES];
_useCustomString = useCustomString;
[self _resetCharacters];
}
@@ -162,6 +180,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
- (void)setPasswordLength:(NSUInteger)passwordLength {
if(_passwordLength != passwordLength) {
+ [_setDefaultButton setEnabled:YES];
_passwordLength = passwordLength;
[self _generatePassword:nil];
}
@@ -172,6 +191,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
- (void)controlTextDidChange:(NSNotification *)obj {
if([obj object] == self.customCharactersTextField) {
+ [_setDefaultButton setEnabled:YES];
[self _generatePassword:nil];
}
}
diff --git a/MacPass/MPSettingsHelper.h b/MacPass/MPSettingsHelper.h
index 2da111a3..d5c7e481 100644
--- a/MacPass/MPSettingsHelper.h
+++ b/MacPass/MPSettingsHelper.h
@@ -61,6 +61,10 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyEnableQuicklookPreview;
/* Password Generation */
APPKIT_EXTERN NSString *const kMPSettingsKeyCopyGeneratedPasswordToClipboard;
APPKIT_EXTERN NSString *const kMPSettingsKeyDefaultPasswordRounds;
+APPKIT_EXTERN NSString *const kMPSettingsKeyDefaultPasswordLength;
+APPKIT_EXTERN NSString *const kMPSettingsKeyPasswordCharacterFlags;
+APPKIT_EXTERN NSString *const kMPSettingsKeyPasswordUseCustomString;
+APPKIT_EXTERN NSString *const kMPSettingsKeyPasswordCustomString;
typedef NS_ENUM(NSUInteger, MPPasswordEncoding) {
MPPasswordEncodingUTF8,
diff --git a/MacPass/MPSettingsHelper.m b/MacPass/MPSettingsHelper.m
index 7bf0e44d..6228d8e7 100644
--- a/MacPass/MPSettingsHelper.m
+++ b/MacPass/MPSettingsHelper.m
@@ -7,6 +7,7 @@
//
#import "MPSettingsHelper.h"
+#import "NSString+MPPasswordCreation.h"
NSString *const kMPSettingsKeyPasteboardClearTimeout = @"ClipboardClearTimeout";
NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearClipboardOnQuit";
@@ -44,6 +45,10 @@ NSString *const kMPSettingsKeyEnableQuicklookPreview = @"Enable
NSString *const kMPSettingsKeyCopyGeneratedPasswordToClipboard = @"CopyGeneratedPasswordToClipboard";
NSString *const kMPSettingsKeyDefaultPasswordRounds = @"KeyDefaultPasswordRounds";
+NSString *const kMPSettingsKeyDefaultPasswordLength = @"DefaultPasswordLength";
+NSString *const kMPSettingsKeyPasswordCharacterFlags = @"PasswordCharacterFlags";
+NSString *const kMPSettingsKeyPasswordUseCustomString = @"PasswordUseCustomString";
+NSString *const kMPSettingsKeyPasswordCustomString = @"PasswordCustomString";
@implementation MPSettingsHelper
@@ -84,7 +89,11 @@ NSString *const kMPSettingsKeyDefaultPasswordRounds = @"KeyDef
kMPSettingsKeyEnableGlobalAutotype: @NO,
kMPSettingsKeyEnableQuicklookPreview: @NO,
kMPSettingsKeyCopyGeneratedPasswordToClipboard: @NO,
- kMPSettingsKeyDefaultPasswordRounds: @50000
+ kMPSettingsKeyDefaultPasswordRounds: @50000,
+ kMPSettingsKeyDefaultPasswordLength: @12,
+ kMPSettingsKeyPasswordCharacterFlags: @(MPPasswordCharactersAll),
+ kMPSettingsKeyPasswordUseCustomString: @NO,
+ kMPSettingsKeyPasswordCustomString: @""
};
}