--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cocoaTouch/GeneralSettingsViewController.m Tue Apr 06 18:14:15 2010 +0000
@@ -0,0 +1,339 @@
+//
+// SettingsViewController.m
+// hwengine
+//
+// Created by Vittorio on 08/01/10.
+// Copyright 2010 __MyCompanyName__. All rights reserved.
+//
+
+#import "GeneralSettingsViewController.h"
+#import "SDL_uikitappdelegate.h"
+
+@implementation GeneralSettingsViewController
+@synthesize dataDict, username, password, musicSwitch, soundSwitch, altDamageSwitch;
+
+-(void) dealloc {
+ [dataDict release];
+ [username release];
+ [password release];
+ [musicSwitch release];
+ [soundSwitch release];
+ [altDamageSwitch release];
+ [super dealloc];
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+ return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
+}
+
+#pragma mark -
+#pragma mark View Lifecycle
+-(void) viewDidLoad {
+ self.musicSwitch = [[UISwitch alloc] init];
+ self.soundSwitch = [[UISwitch alloc] init];
+ self.altDamageSwitch = [[UISwitch alloc] init];
+ [self.soundSwitch addTarget:self action:@selector(sameValueSwitch) forControlEvents:UIControlEventValueChanged];
+ [self.musicSwitch addTarget:self action:@selector(checkValueSwitch) forControlEvents:UIControlEventValueChanged];
+
+ NSString *filePath = [[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"];
+ NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:filePath];
+ self.dataDict = dictionary;
+ [dictionary release];
+ [super viewDidLoad];
+}
+
+-(void) viewDidUnload {
+ self.dataDict = nil;
+ self.username = nil;
+ self.password = nil;
+ self.musicSwitch = nil;
+ self.soundSwitch = nil;
+ self.altDamageSwitch = nil;
+ [super viewDidUnload];
+}
+
+-(void) viewWillAppear:(BOOL)animated {
+ [self.tableView setContentOffset:CGPointMake(0,0) animated:NO];
+
+ username = [NSString stringWithString:[dataDict objectForKey:@"username"]];
+ password = [NSString stringWithString:[dataDict objectForKey:@"password"]];
+
+ if (1 == [[dataDict objectForKey:@"music"] intValue]) {
+ musicSwitch.on = YES;
+ } else {
+ musicSwitch.on = NO;
+ }
+ if (1 == [[dataDict objectForKey:@"sounds"] intValue]) {
+ soundSwitch.on = YES;
+ } else {
+ soundSwitch.on = NO;
+ }
+ if (1 == [[dataDict objectForKey:@"alternate"] intValue]) {
+ altDamageSwitch.on = YES;
+ } else {
+ altDamageSwitch.on = NO;
+ }
+
+ [super viewWillAppear:animated];
+}
+
+-(void) viewWillDisappear:(BOOL)animated {
+ [super viewWillDisappear:animated];
+
+ NSMutableDictionary *saveDict = [[NSMutableDictionary alloc] init];
+ NSString *tmpMus = (musicSwitch.on) ? @"1" : @"0";
+ NSString *tmpEff = (soundSwitch.on) ? @"1" : @"0";
+ NSString *tmpAlt = (altDamageSwitch.on) ? @"1" : @"0";
+
+ [saveDict setObject:username forKey:@"username"];
+ [saveDict setObject:password forKey:@"password"];
+ [saveDict setObject:tmpMus forKey:@"music"];
+ [saveDict setObject:tmpEff forKey:@"sounds"];
+ [saveDict setObject:tmpAlt forKey:@"alternate"];
+
+ if (![dataDict isEqualToDictionary:saveDict]) {
+ NSLog(@"writing preferences to file");
+ [saveDict writeToFile:[[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"] atomically:YES];
+ // this will also relase the previous dictionary
+ self.dataDict = saveDict;
+ }
+ [saveDict release];
+}
+
+#pragma mark -
+// 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.soundSwitch.on) {
+ [musicSwitch setOn:!musicSwitch.on animated:YES];
+ }
+}
+
+/*
+// 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];
+}
+*/
+
+/*
+#pragma mark -
+#pragma mark UIActionSheet Methods
+-(IBAction) deleteData: (id)sender {
+ 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];
+}
+
+-(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
+-(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 *cellIdentifier1 = @"systemSettingsCell1";
+ static NSString *cellIdentifier2 = @"systemSettingsCell2";
+
+ UITableViewCell *cell = nil;
+
+ switch ([indexPath section]) {
+ case kNetworkFields:
+ cell = [aTableView dequeueReusableCellWithIdentifier:cellIdentifier1];
+ if (nil == cell) {
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
+ reuseIdentifier:cellIdentifier1] autorelease];
+ }
+ cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
+
+ switch ([indexPath row]) {
+ case 0:
+ cell.textLabel.text = NSLocalizedString(@"Nickname", @"");
+ if ([username isEqualToString:@""]) {
+ cell.detailTextLabel.text = @"insert username...";
+ cell.detailTextLabel.font = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
+ cell.detailTextLabel.textColor = [UIColor grayColor];
+ } else {
+ cell.detailTextLabel.text = username;
+ }
+ break;
+ case 1:
+ cell.textLabel.text = NSLocalizedString(@"Password", @"");
+ if ([password isEqualToString:@""]) {
+ cell.detailTextLabel.text = @"insert password...";
+ cell.detailTextLabel.font = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
+ cell.detailTextLabel.textColor = [UIColor grayColor];
+ } else {
+ cell.detailTextLabel.text = @"••••••••";
+ }
+ break;
+ default:
+ NSLog(@"Warning: unset case value in kNetworkFields section!");
+ break;
+ }
+ break;
+
+ case kAudioFields:
+ cell = [aTableView dequeueReusableCellWithIdentifier:cellIdentifier2];
+ if (nil == cell) {
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
+ reuseIdentifier:cellIdentifier2] autorelease];
+ }
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
+
+ switch ([indexPath row]) {
+ case 0:
+ cell.textLabel.text = NSLocalizedString(@"Sound", @"");
+ cell.accessoryView = soundSwitch;
+ break;
+ case 1:
+ cell.textLabel.text = NSLocalizedString(@"Music", @"");
+ cell.accessoryView = musicSwitch;
+ break;
+ default:
+ NSLog(@"Warning: unset case value in kAudioFields section!");
+ break;
+ }
+ // this makes the row not selectable
+ break;
+
+ case kOtherFields:
+ cell = [aTableView dequeueReusableCellWithIdentifier:cellIdentifier2];
+ if (nil == cell) {
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
+ reuseIdentifier:cellIdentifier2] autorelease];
+ }
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
+ cell.textLabel.text = NSLocalizedString(@"Alternate Damage", @"");
+ cell.accessoryView = altDamageSwitch;
+ break;
+ default:
+ break;
+ }
+ return cell;
+}
+
+-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
+ NSString *sectionTitle = nil;
+ switch (section) {
+ case kNetworkFields:
+ sectionTitle = NSLocalizedString(@"Network Configuration", @"");
+ break;
+ case kAudioFields:
+ sectionTitle = NSLocalizedString(@"Audio Preferences", @"");
+ break;
+ case kOtherFields:
+ sectionTitle = NSLocalizedString(@"Other Settings", @"");
+ break;
+ default:
+ NSLog(@"Nope");
+ break;
+ }
+ return sectionTitle;
+}
+
+/*
+-(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