Blame client/iOS/Controllers/CredentialsInputController.m

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