Merge pull request #207 from jamesrhurst/save-password-settings

Added ability to set default password generation settings. Fixes #166
This commit is contained in:
Michael Starke
2014-08-05 11:55:15 +02:00
4 changed files with 50 additions and 5 deletions

View File

@@ -19,6 +19,7 @@
<outlet property="passwordLengthTextFiedl" destination="182" id="473"/> <outlet property="passwordLengthTextFiedl" destination="182" id="473"/>
<outlet property="passwordLengthTextField" destination="182" id="481"/> <outlet property="passwordLengthTextField" destination="182" id="481"/>
<outlet property="passwordTextField" destination="152" id="482"/> <outlet property="passwordTextField" destination="152" id="482"/>
<outlet property="setDefaultButton" destination="yil-UB-jtO" id="nhh-ys-rmw"/>
<outlet property="shouldCopyPasswordToPasteboardButton" destination="500" id="n2M-pB-2ol"/> <outlet property="shouldCopyPasswordToPasteboardButton" destination="500" id="n2M-pB-2ol"/>
<outlet property="symbolsButton" destination="464" id="596"/> <outlet property="symbolsButton" destination="464" id="596"/>
<outlet property="upperCaseButton" destination="452" id="592"/> <outlet property="upperCaseButton" destination="452" id="592"/>
@@ -233,6 +234,17 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yil-UB-jtO">
<rect key="frame" x="20" y="18" width="83" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="roundTextured" title="Set Default" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<connections>
<action selector="_setDefault:" target="-2" id="EwI-y0-Luh"/>
</connections>
</buttonCell>
</button>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstItem="148" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="151"/> <constraint firstItem="148" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="151"/>

View File

@@ -49,6 +49,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
@property (weak) IBOutlet NSButton *numbersButton; @property (weak) IBOutlet NSButton *numbersButton;
@property (weak) IBOutlet NSButton *symbolsButton; @property (weak) IBOutlet NSButton *symbolsButton;
@property (weak) IBOutlet NSButton *customButton; @property (weak) IBOutlet NSButton *customButton;
@property (weak) IBOutlet NSButton *setDefaultButton;
@property (weak) IBOutlet NSTextField *entropyTextField; @property (weak) IBOutlet NSTextField *entropyTextField;
@property (weak) IBOutlet NSLevelIndicator *entropyIndicator; @property (weak) IBOutlet NSLevelIndicator *entropyIndicator;
@@ -65,19 +66,24 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
self = [super initWithNibName:@"PasswordCreatorView" bundle:nil]; self = [super initWithNibName:@"PasswordCreatorView" bundle:nil];
if (self) { if (self) {
_password = @""; _password = @"";
_passwordLength = 12; _passwordLength = [[NSUserDefaults standardUserDefaults] integerForKey:kMPSettingsKeyDefaultPasswordLength];
_characterFlags = MPPasswordCharactersAll; _characterFlags = [[NSUserDefaults standardUserDefaults] integerForKey:kMPSettingsKeyPasswordCharacterFlags];
_useCustomString = NO; _useCustomString = [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyPasswordUseCustomString];
_customString = @""; _customString = [[NSUserDefaults standardUserDefaults] stringForKey:kMPSettingsKeyPasswordCustomString];
_entropy = 0.0; _entropy = 0.0;
} }
return self; return self;
} }
- (void)awakeFromNib { - (void)awakeFromNib {
[self.setDefaultButton setEnabled:NO];
[self.passwordLengthSlider setMinValue:MIN_PASSWORD_LENGTH]; [self.passwordLengthSlider setMinValue:MIN_PASSWORD_LENGTH];
[self.passwordLengthSlider setMaxValue:MAX_PASSWORD_LENGTH]; [self.passwordLengthSlider setMaxValue:MAX_PASSWORD_LENGTH];
[self.passwordLengthSlider setContinuous:YES]; [self.passwordLengthSlider setContinuous:YES];
[self.customCharactersTextField setStringValue:_customString];
/* Value Transformer */ /* Value Transformer */
id formatter = [[MPUniqueCharactersFormatter alloc] init]; id formatter = [[MPUniqueCharactersFormatter alloc] init];
@@ -125,6 +131,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
} }
- (IBAction)_toggleCharacters:(id)sender { - (IBAction)_toggleCharacters:(id)sender {
[_setDefaultButton setEnabled:YES];
_characterFlags ^= [sender tag]; _characterFlags ^= [sender tag];
self.useCustomString = NO; self.useCustomString = NO;
[self reset]; [self reset];
@@ -142,6 +149,16 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
[[self _findCloseTarget] performClose:nil]; [[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 -
#pragma mark Custom Setter #pragma mark Custom Setter
@@ -155,6 +172,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
- (void)setUseCustomString:(BOOL)useCustomString { - (void)setUseCustomString:(BOOL)useCustomString {
if(_useCustomString != useCustomString) { if(_useCustomString != useCustomString) {
[_setDefaultButton setEnabled:YES];
_useCustomString = useCustomString; _useCustomString = useCustomString;
[self _resetCharacters]; [self _resetCharacters];
} }
@@ -162,6 +180,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
- (void)setPasswordLength:(NSUInteger)passwordLength { - (void)setPasswordLength:(NSUInteger)passwordLength {
if(_passwordLength != passwordLength) { if(_passwordLength != passwordLength) {
[_setDefaultButton setEnabled:YES];
_passwordLength = passwordLength; _passwordLength = passwordLength;
[self _generatePassword:nil]; [self _generatePassword:nil];
} }
@@ -172,6 +191,7 @@ typedef NS_ENUM(NSUInteger, MPPasswordRating) {
- (void)controlTextDidChange:(NSNotification *)obj { - (void)controlTextDidChange:(NSNotification *)obj {
if([obj object] == self.customCharactersTextField) { if([obj object] == self.customCharactersTextField) {
[_setDefaultButton setEnabled:YES];
[self _generatePassword:nil]; [self _generatePassword:nil];
} }
} }

View File

@@ -61,6 +61,10 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyEnableQuicklookPreview;
/* Password Generation */ /* Password Generation */
APPKIT_EXTERN NSString *const kMPSettingsKeyCopyGeneratedPasswordToClipboard; APPKIT_EXTERN NSString *const kMPSettingsKeyCopyGeneratedPasswordToClipboard;
APPKIT_EXTERN NSString *const kMPSettingsKeyDefaultPasswordRounds; 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) { typedef NS_ENUM(NSUInteger, MPPasswordEncoding) {
MPPasswordEncodingUTF8, MPPasswordEncodingUTF8,

View File

@@ -7,6 +7,7 @@
// //
#import "MPSettingsHelper.h" #import "MPSettingsHelper.h"
#import "NSString+MPPasswordCreation.h"
NSString *const kMPSettingsKeyPasteboardClearTimeout = @"ClipboardClearTimeout"; NSString *const kMPSettingsKeyPasteboardClearTimeout = @"ClipboardClearTimeout";
NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearClipboardOnQuit"; NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearClipboardOnQuit";
@@ -44,6 +45,10 @@ NSString *const kMPSettingsKeyEnableQuicklookPreview = @"Enable
NSString *const kMPSettingsKeyCopyGeneratedPasswordToClipboard = @"CopyGeneratedPasswordToClipboard"; NSString *const kMPSettingsKeyCopyGeneratedPasswordToClipboard = @"CopyGeneratedPasswordToClipboard";
NSString *const kMPSettingsKeyDefaultPasswordRounds = @"KeyDefaultPasswordRounds"; NSString *const kMPSettingsKeyDefaultPasswordRounds = @"KeyDefaultPasswordRounds";
NSString *const kMPSettingsKeyDefaultPasswordLength = @"DefaultPasswordLength";
NSString *const kMPSettingsKeyPasswordCharacterFlags = @"PasswordCharacterFlags";
NSString *const kMPSettingsKeyPasswordUseCustomString = @"PasswordUseCustomString";
NSString *const kMPSettingsKeyPasswordCustomString = @"PasswordCustomString";
@implementation MPSettingsHelper @implementation MPSettingsHelper
@@ -84,7 +89,11 @@ NSString *const kMPSettingsKeyDefaultPasswordRounds = @"KeyDef
kMPSettingsKeyEnableGlobalAutotype: @NO, kMPSettingsKeyEnableGlobalAutotype: @NO,
kMPSettingsKeyEnableQuicklookPreview: @NO, kMPSettingsKeyEnableQuicklookPreview: @NO,
kMPSettingsKeyCopyGeneratedPasswordToClipboard: @NO, kMPSettingsKeyCopyGeneratedPasswordToClipboard: @NO,
kMPSettingsKeyDefaultPasswordRounds: @50000 kMPSettingsKeyDefaultPasswordRounds: @50000,
kMPSettingsKeyDefaultPasswordLength: @12,
kMPSettingsKeyPasswordCharacterFlags: @(MPPasswordCharactersAll),
kMPSettingsKeyPasswordUseCustomString: @NO,
kMPSettingsKeyPasswordCustomString: @""
}; };
} }