completed simple merge workflow. Made passwordInputController better reusabel

This commit is contained in:
michael starke
2017-09-01 16:41:33 +02:00
parent 716a822dc0
commit 70650fc20f
7 changed files with 113 additions and 49 deletions

View File

@@ -26,6 +26,11 @@
@property (weak) IBOutlet NSTextField *errorInfoTextField;
@property (weak) IBOutlet NSButton *togglePasswordButton;
@property (weak) IBOutlet NSButton *enablePasswordCheckBox;
@property (weak) IBOutlet NSButton *unlockButton;
@property (weak) IBOutlet NSButton *cancelButton;
@property (copy) NSString *message;
@property (copy) NSString *cancelLabel;
@property (assign) BOOL showPassword;
@property (nonatomic, assign) BOOL enablePassword;
@@ -66,11 +71,17 @@
return self.passwordTextField;
}
- (void)requestPasswordWithCompletionHandler:(passwordInputCompletionBlock)completionHandler {
- (void)requestPasswordWithMessage:(NSString *)message cancelLabel:(NSString *)cancelLabel completionHandler:(passwordInputCompletionBlock)completionHandler {
self.completionHandler = completionHandler;
self.message = message;
self.cancelLabel = cancelLabel;
[self _reset];
}
- (void)requestPasswordWithCompletionHandler:(passwordInputCompletionBlock)completionHandler {
[self requestPasswordWithMessage:nil cancelLabel:nil completionHandler:completionHandler];
}
#pragma mark Properties
- (void)setEnablePassword:(BOOL)enablePassword {
if(_enablePassword != enablePassword) {
@@ -87,14 +98,24 @@
#pragma mark -
#pragma mark Private
- (IBAction)_submit:(id)sender {
if(self.completionHandler) {
/* No password is different than an empty password */
NSError *error = nil;
NSString *password = self.enablePassword ? self.passwordTextField.stringValue : nil;
if(!self.completionHandler(password, self.keyPathControl.URL, &error)) {
[self _showError:error];
[self.view.window shakeWindow:nil];
}
if(!self.completionHandler) {
return;
}
/* No password is different than an empty password */
NSError *error = nil;
NSString *password = self.enablePassword ? self.passwordTextField.stringValue : nil;
BOOL cancel = (sender == self.cancelButton);
BOOL result = self.completionHandler(password, self.keyPathControl.URL, cancel, &error);
if(cancel || result) {
return;
}
[self _showError:error];
/* do not shake if we are a sheet */
if(!self.view.window.isSheet) {
[self.view.window shakeWindow:nil];
}
}
@@ -112,8 +133,15 @@
self.showPassword = NO;
self.enablePassword = YES;
self.passwordTextField.stringValue = @"";
self.errorInfoTextField.hidden = YES;
self.errorImageView.hidden = YES;
self.errorInfoTextField.hidden = (nil == self.message);
if(self.message) {
self.errorInfoTextField.stringValue = self.message;
}
self.errorImageView.hidden = (nil == self.message);;
self.cancelButton.hidden = (nil == self.cancelLabel);
if(self.cancelLabel) {
self.cancelButton.stringValue = self.cancelLabel;
}
[self resetKeyFile:self];
}