Blame client/iOS/Controllers/CredentialsInputController.m

Packit 1fb8d4
/*
Packit 1fb8d4
 Credentials input controller
Packit Service 5a9772
Packit 1fb8d4
 Copyright 2013 Thincast Technologies GmbH, Author: Martin Fleisz
Packit Service 5a9772
Packit Service 5a9772
 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
Packit Service 5a9772
 If a copy of the MPL was not distributed with this file, You can obtain one at
Packit Service 5a9772
 http://mozilla.org/MPL/2.0/.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#import "CredentialsInputController.h"
Packit 1fb8d4
#import "RDPSession.h"
Packit 1fb8d4
#import "Utils.h"
Packit 1fb8d4
Packit 1fb8d4
@implementation CredentialsInputController
Packit 1fb8d4
Packit Service 5a9772
- (id)initWithNibName:(NSString *)nibNameOrNil
Packit Service 5a9772
               bundle:(NSBundle *)nibBundleOrNil
Packit Service 5a9772
              session:(RDPSession *)session
Packit Service 5a9772
               params:(NSMutableDictionary *)params
Packit 1fb8d4
{
Packit Service 5a9772
	self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
Packit Service 5a9772
	if (self)
Packit Service 5a9772
	{
Packit Service 5a9772
		_session = session;
Packit Service 5a9772
		_params = params;
Packit Service 5a9772
		[self setModalPresentationStyle:UIModalPresentationFormSheet];
Packit Service 5a9772
Packit Service 5a9772
		// on iphone we have the problem that the buttons are hidden by the keyboard
Packit Service 5a9772
		// we solve this issue by registering keyboard notification handlers and adjusting the
Packit Service 5a9772
		// scrollview accordingly
Packit Service 5a9772
		if (IsPhone())
Packit Service 5a9772
		{
Packit Service 5a9772
			[[NSNotificationCenter defaultCenter] addObserver:self
Packit Service 5a9772
			                                         selector:@selector(keyboardWillShow:)
Packit Service 5a9772
			                                             name:UIKeyboardWillShowNotification
Packit Service 5a9772
			                                           object:nil];
Packit Service 5a9772
			[[NSNotificationCenter defaultCenter] addObserver:self
Packit Service 5a9772
			                                         selector:@selector(keyboardWillHide:)
Packit Service 5a9772
			                                             name:UIKeyboardWillHideNotification
Packit Service 5a9772
			                                           object:nil];
Packit Service 5a9772
		}
Packit Service 5a9772
	}
Packit Service 5a9772
	return self;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (void)viewDidLoad
Packit 1fb8d4
{
Packit Service 5a9772
	[super viewDidLoad];
Packit Service 5a9772
Packit Service 5a9772
	// set localized strings
Packit Service 5a9772
	[_lbl_message
Packit Service 5a9772
	    setText:NSLocalizedString(
Packit Service 5a9772
	                @"Please provide the missing user information in order to proceed and login.",
Packit Service 5a9772
	                @"Credentials input view message")];
Packit Service 5a9772
	[_textfield_username
Packit Service 5a9772
	    setPlaceholder:NSLocalizedString(@"Username", @"Credentials Input Username hint")];
Packit Service 5a9772
	[_textfield_password
Packit Service 5a9772
	    setPlaceholder:NSLocalizedString(@"Password", @"Credentials Input Password hint")];
Packit Service 5a9772
	[_textfield_domain
Packit Service 5a9772
	    setPlaceholder:NSLocalizedString(@"Domain", @"Credentials Input Domain hint")];
Packit Service 5a9772
	[_btn_login setTitle:NSLocalizedString(@"Login", @"Login Button")
Packit Service 5a9772
	            forState:UIControlStateNormal];
Packit Service 5a9772
	[_btn_cancel setTitle:NSLocalizedString(@"Cancel", @"Cancel Button")
Packit Service 5a9772
	             forState:UIControlStateNormal];
Packit Service 5a9772
Packit Service 5a9772
	// init scrollview content size
Packit Service 5a9772
	[_scroll_view setContentSize:[_scroll_view frame].size];
Packit Service 5a9772
Packit Service 5a9772
	// set params in the view
Packit Service 5a9772
	[_textfield_username setText:[_params valueForKey:@"username"]];
Packit Service 5a9772
	[_textfield_password setText:[_params valueForKey:@"password"]];
Packit Service 5a9772
	[_textfield_domain setText:[_params valueForKey:@"domain"]];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (void)viewDidUnload
Packit 1fb8d4
{
Packit Service 5a9772
	[super viewDidUnload];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (void)viewDidDisappear:(BOOL)animated
Packit 1fb8d4
{
Packit Service 5a9772
	[super viewDidDisappear:animated];
Packit Service 5a9772
	// set signal
Packit Service 5a9772
	[[_session uiRequestCompleted] signal];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
Packit 1fb8d4
{
Packit Service 5a9772
	return YES;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (void)dealloc
Packit 1fb8d4
{
Packit Service 5a9772
	[super dealloc];
Packit Service 5a9772
	[[NSNotificationCenter defaultCenter] removeObserver:self];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
#pragma mark -
Packit 1fb8d4
#pragma mark iOS Keyboard Notification Handlers
Packit 1fb8d4
Packit 1fb8d4
- (void)keyboardWillShow:(NSNotification *)notification
Packit Service 5a9772
{
Packit Service 5a9772
	CGRect keyboardEndFrame =
Packit Service 5a9772
	    [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
Packit Service 5a9772
	CGRect keyboardFrame = [[self view] convertRect:keyboardEndFrame toView:nil];
Packit Service 5a9772
Packit Service 5a9772
	[UIView beginAnimations:nil context:NULL];
Packit Service 5a9772
	[UIView setAnimationCurve:[[[notification userInfo]
Packit Service 5a9772
	                              objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
Packit Service 5a9772
	[UIView
Packit Service 5a9772
	    setAnimationDuration:[[[notification userInfo]
Packit Service 5a9772
	                             objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
Packit 1fb8d4
	CGRect frame = [_scroll_view frame];
Packit Service 5a9772
	frame.size.height -= keyboardFrame.size.height;
Packit 1fb8d4
	[_scroll_view setFrame:frame];
Packit Service 5a9772
	[UIView commitAnimations];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (void)keyboardWillHide:(NSNotification *)notification
Packit 1fb8d4
{
Packit Service 5a9772
	CGRect keyboardEndFrame =
Packit Service 5a9772
	    [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
Packit Service 5a9772
	CGRect keyboardFrame = [[self view] convertRect:keyboardEndFrame toView:nil];
Packit Service 5a9772
Packit Service 5a9772
	[UIView beginAnimations:nil context:NULL];
Packit Service 5a9772
	[UIView setAnimationCurve:[[[notification userInfo]
Packit Service 5a9772
	                              objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
Packit Service 5a9772
	[UIView
Packit Service 5a9772
	    setAnimationDuration:[[[notification userInfo]
Packit Service 5a9772
	                             objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
Packit 1fb8d4
	CGRect frame = [_scroll_view frame];
Packit Service 5a9772
	frame.size.height += keyboardFrame.size.height;
Packit 1fb8d4
	[_scroll_view setFrame:frame];
Packit Service 5a9772
	[UIView commitAnimations];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
#pragma mark - Action handlers
Packit 1fb8d4
Packit 1fb8d4
- (IBAction)loginPressed:(id)sender
Packit 1fb8d4
{
Packit Service 5a9772
	// read input back in
Packit Service 5a9772
	[_params setValue:[_textfield_username text] forKey:@"username"];
Packit Service 5a9772
	[_params setValue:[_textfield_password text] forKey:@"password"];
Packit Service 5a9772
	[_params setValue:[_textfield_domain text] forKey:@"domain"];
Packit Service 5a9772
	[_params setValue:[NSNumber numberWithBool:YES] forKey:@"result"];
Packit Service 5a9772
Packit Service 5a9772
	// dismiss controller
Packit Service 5a9772
	[self dismissModalViewControllerAnimated:YES];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (IBAction)cancelPressed:(id)sender
Packit 1fb8d4
{
Packit Service 5a9772
	[_params setValue:[NSNumber numberWithBool:NO] forKey:@"result"];
Packit Service 5a9772
Packit Service 5a9772
	// dismiss controller
Packit Service 5a9772
	[self dismissModalViewControllerAnimated:YES];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
@end