// // FlipsideViewController.m // QuickTweet // // Created by Floyd Price on 10/09/2009. // Copyright Component Workshop Ltd 2009. All rights reserved. // #import "FlipsideViewController.h" @implementation FlipsideViewController @synthesize delegate; NSUserDefaults *defaults; NSString *followersToken; #pragma mark - #pragma mark UIViewController Stuff - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor]; defaults = [NSUserDefaults standardUserDefaults]; [usernameTextField setText:[defaults stringForKey:@"username"]]; [passwordTextField setText:[defaults stringForKey:@"password"]]; engine = [[MGTwitterEngine twitterEngineWithDelegate:self] retain]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; } - (void)viewDidUnload { [super viewDidUnload]; [engine release]; engine = nil; } - (void)dealloc { [super dealloc]; [engine closeAllConnections]; [engine release]; } #pragma mark - #pragma mark UITableViewDataSource Protocol -(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ if (indexPath.section == 0) { if (indexPath.row == 0) { return usernameCell; } if (indexPath.row == 1) { return passwordCell; } } return [[UITableViewCell alloc] init]; } -(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section{ switch (section) { case 0: return 2; break; case 1: return 2; break; case 2: return 1; break; default: return 0; break; } } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } -(NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ switch (section) { case 0: return @"Your Twitter Details"; break; case 1: return @"BLAH"; break; case 2: return @"KAKU"; break; default: return nil; break; } } #pragma mark - #pragma mark Actions - (IBAction)done { if ([defaults boolForKey:@"setupcomplete"] ==YES) { [self.delegate flipsideViewControllerDidFinish:self]; } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"You must enter your twitter details before you continue" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } } -(IBAction)saveSettings { [defaults setBool:FALSE forKey:@"setupcomplete"]; [defaults setObject:usernameTextField.text forKey:@"username"]; [defaults setObject:passwordTextField.text forKey:@"password"]; [self hideKeyboard]; [saveProgress startAnimating]; [saveButton setEnabled:NO]; [engine setUsername:[defaults stringForKey:@"username"] password:[defaults stringForKey:@"password"]]; [engine setClientName:@"QuickTweet" version:@"1.0" URL:@"" token:@""]; followersToken = [engine getFollowersIncludingCurrentStatus:YES]; } - (IBAction)hideKeyboard{ [usernameTextField resignFirstResponder]; [passwordTextField resignFirstResponder]; } #pragma mark - #pragma mark Twitter Delegate Methods - (void)requestSucceeded:(NSString *)requestIdentifier{ NSLog(@"requestSucceeded : %@", requestIdentifier); if ([requestIdentifier isEqual:followersToken]) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Settings Saved" message:@"Your twitter details have been saved and tested" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [saveProgress stopAnimating]; [saveButton setEnabled:YES]; [engine closeAllConnections]; [defaults setBool:TRUE forKey:@"setupcomplete"]; [alert show]; } } - (void)requestFailed:(NSString *)requestIdentifier withError:(NSError *)error{ NSLog(@"requestFailed:%@withError%@", requestIdentifier, error ); if ([requestIdentifier isEqual:followersToken]) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"Your twitter details are either incorrect or Twitter is down." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [saveProgress stopAnimating]; [saveButton setEnabled:YES]; [alert show]; } } - (void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)identifier{ //NSLog(@"statusesReceived:%@forRequest&@", statuses, identifier); } - (void)directMessagesReceived:(NSArray *)messages forRequest:(NSString *)identifier { //NSLog(@"directMessagesReceived:%@forRequest%@", messages, identifier); } - (void)userInfoReceived:(NSArray *)userInfo forRequest:(NSString *)identifier{ NSLog(@"userInfoReceived%@forRequest%@", userInfo, identifier); if ([identifier isEqual:followersToken]) { NSMutableArray *followers = [[NSMutableArray arrayWithCapacity:1] retain]; NSArray *ar = [[NSArray arrayWithArray:userInfo] retain]; NSLog(@"Recived %d new followers", [ar count]); for (int i = 0; i < [ar count]; i++) { NSObject *o = [ar objectAtIndex:i]; [followers addObject:[o valueForKey:@"screen_name"]]; } [defaults setObject:followers forKey:@"followers"]; [followers release]; [ar release]; } } @end