diff -r 18436bb84bfe -r 6d8f1c76756d cocoaTouch/SettingsViewController.m --- a/cocoaTouch/SettingsViewController.m Tue Apr 06 14:32:26 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,320 +0,0 @@ -// -// SettingsViewController.m -// hwengine -// -// Created by Vittorio on 08/01/10. -// Copyright 2010 __MyCompanyName__. All rights reserved. -// - -#import "SettingsViewController.h" -#import "SDL_uikitappdelegate.h" - -@implementation SettingsViewController - -@synthesize username, password, musicSwitch, soundsSwitch, altDamageSwitch, - settingsTable, buttonContainer, parentView; - - --(void) loadView { - self.musicSwitch = [[UISwitch alloc] init]; - self.soundsSwitch = [[UISwitch alloc] init]; - self.altDamageSwitch = [[UISwitch alloc] init]; - [self.soundsSwitch addTarget:self action:@selector(sameValueSwitch) forControlEvents:UIControlEventValueChanged]; - [self.musicSwitch addTarget:self action:@selector(checkValueSwitch) forControlEvents:UIControlEventValueChanged]; - - [super loadView]; -} - --(void) viewDidLoad { - NSString *filePath = [[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"]; - - if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { - NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath]; - username.text = [data objectForKey:@"username"]; - password.text = [data objectForKey:@"password"]; - if (1 == [[data objectForKey:@"music"] intValue]) { - musicSwitch.on = YES; - } else { - musicSwitch.on = NO; - } - if (1 == [[data objectForKey:@"sounds"] intValue]) { - soundsSwitch.on = YES; - } else { - soundsSwitch.on = NO; - } - if (1 == [[data objectForKey:@"alternate"] intValue]) { - altDamageSwitch.on = YES; - } else { - altDamageSwitch.on = NO; - } - [data release]; - } else { - [NSException raise:@"File NOT found" format:@"The file settings.plist was not found at %@", filePath]; - } - - - username.textColor = [UIColor grayColor]; - password.textColor = [UIColor grayColor]; - settingsTable.backgroundColor = [UIColor clearColor]; - settingsTable.allowsSelection = NO; - buttonContainer.backgroundColor = [UIColor clearColor]; - settingsTable.tableFooterView = buttonContainer; - - [super viewDidLoad]; -} - --(void) viewDidUnload { - self.username = nil; - self.password = nil; - self.musicSwitch = nil; - self.soundsSwitch = nil; - self.altDamageSwitch = nil; - self.settingsTable = nil; - self.buttonContainer = nil; - [super viewDidUnload]; -} - --(void) dealloc { - [username release]; - [password release]; - [musicSwitch release]; - [soundsSwitch release]; - [altDamageSwitch release]; - [settingsTable release]; - [buttonContainer release]; - [super dealloc]; -} - -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); -} - -// makes the keyboard go away when background is tapped --(IBAction) backgroundTap: (id)sender { - [username resignFirstResponder]; - [password resignFirstResponder]; -} - -// makes the keyboard go away when "Done" is tapped --(IBAction) textFieldDoneEditing: (id)sender { - [sender resignFirstResponder]; -} - -// set music off when sound is turned off --(void) sameValueSwitch { - if (YES == self.musicSwitch.on) { - [musicSwitch setOn:NO animated:YES]; - } -} - -// don't enable music when sound is off --(void) checkValueSwitch { - if (NO == self.soundsSwitch.on) { - [musicSwitch setOn:!musicSwitch.on animated:YES]; - } -} - -#pragma mark - -#pragma mark Return to mainView --(void) flushData { - NSLog(@"writing preferences to file"); - - NSMutableDictionary *saveDict = [[NSMutableDictionary alloc] init]; - NSString *tmpMus = (musicSwitch.on) ? @"1" : @"0"; - NSString *tmpEff = (soundsSwitch.on) ? @"1" : @"0"; - NSString *tmpAlt = (altDamageSwitch.on) ? @"1" : @"0"; - - [saveDict setObject:username.text forKey:@"username"]; - [saveDict setObject:password.text forKey:@"password"]; - [saveDict setObject:tmpMus forKey:@"music"]; - [saveDict setObject:tmpEff forKey:@"sounds"]; - [saveDict setObject:tmpAlt forKey:@"alternate"]; - - [saveDict writeToFile:[[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"] atomically:YES]; - [saveDict release]; -} - --(void) returnMainView { - [self flushData]; - //[self dismissModalViewControllerAnimated:YES] - - [UIView beginAnimations:@"Get Back" context:NULL]; - [UIView setAnimationDuration:1]; - - self.view.frame = CGRectMake(0, -257, 480, 278); - self.parentView.frame = CGRectMake(0, 21, 480, 278); - [UIView commitAnimations]; - - [self.view performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1]; - self.parentView = nil; -} - -#pragma mark - -#pragma mark UIActionSheet Methods --(IBAction) deleteData: (id)sender { - /* temporary commented out - UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Are you reeeeeally sure?", @"") - delegate:self - cancelButtonTitle:NSLocalizedString(@"Well, maybe not...", @"") - destructiveButtonTitle:NSLocalizedString(@"As sure as I can be!", @"") - otherButtonTitles:nil]; - [actionSheet showInView:self.view]; - [actionSheet release]; - */ - [self returnMainView]; -} - --(void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger) buttonIndex { - if ([actionSheet cancelButtonIndex] != buttonIndex) { - // get the documents dirctory - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *documentsDirectory = [paths objectAtIndex:0]; - - // get the content of the directory - NSFileManager *fm = [NSFileManager defaultManager]; - NSArray *dirContent = [fm directoryContentsAtPath:documentsDirectory]; - NSError *error; - - // delete data - for (NSString *fileName in dirContent) { - [fm removeItemAtPath:[documentsDirectory stringByAppendingPathComponent:fileName] error:&error]; - } - - // force resetting - UIAlertView *anAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Hit Home Button to Exit", @"") - message:NSLocalizedString(@"\nEverything is gone!\nNow you need to restart the game...", @"") - delegate:self - cancelButtonTitle:nil - otherButtonTitles:nil]; - [anAlert show]; - [anAlert release]; - } -} - -#pragma mark - -#pragma mark TableView Methods -#define kNetworkFields 0 -#define kAudioFields 1 -#define kOtherFields 2 - --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { - return 3; -} - --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - switch (section) { - case kNetworkFields: - return 2; - break; - case kAudioFields: - return 2; - break; - case kOtherFields: - return 1; - break; - default: - NSLog(@"Warning: unset case value for numberOfRowsInSection!"); - break; - } - return 0; -} - --(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - static NSString *cellIdentifier = @"systemSettingsCell"; - - UITableViewCell *cell; - if ( !(kAudioFields == [indexPath section] && 2 == [indexPath row]) ){ - cell = [aTableView dequeueReusableCellWithIdentifier:cellIdentifier]; - if (nil == cell) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault - reuseIdentifier:cellIdentifier] autorelease]; - } - } - - switch ([indexPath section]) { - case kNetworkFields: - switch ([indexPath row]) { - case 0: - cell.textLabel.text = NSLocalizedString(@"Nickname", @""); - cell.accessoryView = username; - break; - case 1: - cell.textLabel.text = NSLocalizedString(@"Password", @""); - cell.accessoryView = password; - break; - default: - NSLog(@"Warning: unset case value in kNetworkFields section!"); - break; - } - break; - case kAudioFields: - switch ([indexPath row]) { - case 0: - cell.accessoryView = soundsSwitch; - cell.textLabel.text = NSLocalizedString(@"Sound", @""); - break; - case 1: - cell.accessoryView = musicSwitch; - cell.textLabel.text = NSLocalizedString(@"Music", @""); - break; - default: - NSLog(@"Warning: unset case value in kAudioFields section!"); - break; - } - break; - case kOtherFields: - cell.accessoryView = altDamageSwitch; - cell.textLabel.text = NSLocalizedString(@"Alternate Damage", @""); - break; - default: - break; - } - - return cell; -} - --(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 50)] autorelease]; - UILabel *headerLabel = [[[UILabel alloc] initWithFrame:CGRectMake(10, 20, 300, 40)] autorelease]; - headerLabel.textColor = [UIColor lightGrayColor]; - headerLabel.shadowColor = [UIColor blackColor]; - headerLabel.shadowOffset = CGSizeMake(0, 1); - headerLabel.font = [UIFont boldSystemFontOfSize:20]; - headerLabel.backgroundColor = [UIColor clearColor]; - - switch (section) { - case kNetworkFields: - headerLabel.text = NSLocalizedString(@"Network Configuration", @""); - break; - case kAudioFields: - headerLabel.text = NSLocalizedString(@"Audio Preferences", @""); - break; - case kOtherFields: - headerLabel.text = NSLocalizedString(@"Other Settings", @""); - break; - default: - NSLog(@"Warning: unset case value in titleForHeaderInSection!"); - headerLabel.text = @"!"; - break; - } - - [containerView addSubview:headerLabel]; - return containerView; -} - -/* --(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (kAudioFields == [indexPath section] && 2 == [indexPath row]) - return volumeCell.frame.size.height; - else - return table.rowHeight; -} -*/ - --(CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - return 57.0; -} - -@end