// // ViewController.m // C9Quickpost // // Created by Mrithula on 10/1/12. // Copyright (c) 2012 Mrithula. All rights reserved. // #import "ViewController.h" #import "Globals.h" #define TAG_LOGIN_VIEW 500 @interface ViewController () @end @implementation ViewController -(void)removeSplashScreen{ splashImageView.alpha = 0.0; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(removeSplashScreen) userInfo:nil repeats:NO]; userDefaults = [NSUserDefaults standardUserDefaults]; appDelegate = [[UIApplication sharedApplication] delegate]; [appDelegate showFooterLabel:NO]; } -(void)viewWillAppear:(BOOL)animated{ self.navigationController.navigationBar.hidden = TRUE; if ([[userDefaults valueForKey:USERDEFAULTS_REMEMBER_LOGIN] intValue]==1) { rememberButton.selected = YES; emailTextField.text = [userDefaults valueForKey:USERDEFAULTS_LOGIN_USERID]; passwordTextField.text = [userDefaults valueForKey:USERDEFAULTS_LOGIN_PASSWORD]; [self postLoginRequest]; }else{ rememberButton.selected = NO; emailTextField.text = @""; passwordTextField.text = @""; } } #pragma mark - UITextField Delegate -(BOOL)textFieldShouldReturn:(UITextField *)textField{ if (textField==emailTextField) { [passwordTextField becomeFirstResponder]; [self animateViewIn]; }else{ [textField resignFirstResponder]; [self animateViewOut]; } return YES; } -(void)animateViewIn{ [UIView animateWithDuration:0.3 animations:^{ self.view.frame = CGRectMake(self.view.frame.origin.x, -40.0, self.view.frame.size.width, self.view.frame.size.height); }]; } -(void)animateViewOut{ [UIView animateWithDuration:0.3 animations:^{ self.view.frame = CGRectMake(self.view.frame.origin.x, 0.0, self.view.frame.size.width, self.view.frame.size.height); }]; } #pragma mark - NSURLConnection Request and Delegates -(BOOL)validateEmail:(NSString*)string { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9]+(\\.[a-z]{2,4})+"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailRegex]; return [emailTest evaluateWithObject:string]; } -(BOOL)validateFields { fieldValidationMessage = @""; BOOL valid; if ([[emailTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) { fieldValidationMessage = @"Please enter the Email address"; valid = NO; } else if ([[passwordTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) { fieldValidationMessage = @"Please enter the Password"; valid = NO; } else { valid = YES; } return valid; } -(void)postLoginRequest{ NSMutableURLRequest *loginRequest = [[[NSMutableURLRequest alloc] init] autorelease]; [loginRequest setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@Authorization/",SERVER_URL]]]; NSString *loginRequestString = [NSString stringWithFormat:@"{\"APIKey\":\"%@\",\"UserEmail\":\"%@\",\"Password\":\"%@\"}",API_KEY,emailTextField.text,passwordTextField.text]; NSData *loginRequestData = [NSData dataWithBytes:[loginRequestString UTF8String] length:[loginRequestString length]]; [loginRequest setHTTPMethod: @"POST" ]; [loginRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [loginRequest setHTTPBody:loginRequestData]; loginURLConnection = [[NSURLConnection alloc] initWithRequest:loginRequest delegate:self]; if (loginURLConnection) { receivedData = [[NSMutableData data] retain]; } } - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ [receivedData setLength:0]; } - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [receivedData appendData:data]; } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { [appDelegate stopLoading]; NSError *error = nil; NSString *responseString = [[[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding] autorelease]; NSData *data = [responseString dataUsingEncoding:NSASCIIStringEncoding]; if (data != nil) { NSString *resultString = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; if (error == nil) { appDelegate.auth_token = resultString; [self performSegueWithIdentifier:@"PushSegueToHome" sender:self]; }else { [appDelegate showDismissiveAlertWithMessage:JSON_PARSE_ERROR WithTag:TAG_OTHER_ALERT]; } }else [appDelegate showDismissiveAlertWithMessage:@"Could not login. Please try later." WithTag:TAG_OTHER_ALERT]; [receivedData release]; receivedData = nil; [loginURLConnection release]; loginURLConnection = nil; } - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { [appDelegate showDismissiveAlertWithMessage:[error localizedDescription] WithTag:TAG_OTHER_ALERT]; [appDelegate stopLoading]; [receivedData release]; receivedData = nil; [loginURLConnection release]; loginURLConnection = nil; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)dealloc { [emailTextField release]; [passwordTextField release]; [splashImageView release]; [super dealloc]; } - (void)viewDidUnload { [emailTextField release]; emailTextField = nil; [passwordTextField release]; passwordTextField = nil; [splashImageView release]; splashImageView = nil; [super viewDidUnload]; } #pragma mark - IBAction - (IBAction)loginButtonClicked:(id)sender { if ([self validateFields]) { if ([self validateEmail:emailTextField.text]) { [appDelegate startLoading]; if (rememberButton.selected) { [userDefaults setObject:emailTextField.text forKey:USERDEFAULTS_LOGIN_USERID]; [userDefaults setObject:passwordTextField.text forKey:USERDEFAULTS_LOGIN_PASSWORD]; [userDefaults synchronize]; } [self postLoginRequest]; }else{ [appDelegate showDismissiveAlertWithMessage:@"Invalid E-mail address" WithTag:TAG_OTHER_ALERT]; } }else{ [appDelegate showDismissiveAlertWithMessage:fieldValidationMessage WithTag:TAG_OTHER_ALERT]; } } - (IBAction)rememberButtonClicked:(id)sender { rememberButton = sender; if (rememberButton.selected) { rememberButton.selected = NO; [userDefaults setObject:@"0" forKey:USERDEFAULTS_REMEMBER_LOGIN]; [userDefaults removeObjectForKey:USERDEFAULTS_LOGIN_USERID]; [userDefaults removeObjectForKey:USERDEFAULTS_LOGIN_PASSWORD]; }else{ rememberButton.selected = YES; [userDefaults setObject:@"1" forKey:USERDEFAULTS_REMEMBER_LOGIN]; } [userDefaults synchronize]; } @end
0 comments:
Post a Comment