--- a/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Wed Jun 23 21:39:14 2010 +0200
+++ b/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Wed Jun 23 21:49:19 2010 +0200
@@ -1,398 +0,0 @@
-//
-// SettingsViewController.m
-// hwengine
-//
-// Created by Vittorio on 08/01/10.
-// Copyright 2010 __MyCompanyName__. All rights reserved.
-//
-
-#import "GeneralSettingsViewController.h"
-#import "CommodityFunctions.h"
-
-@implementation GeneralSettingsViewController
-@synthesize settingsDictionary, textFieldBeingEdited, musicSwitch, soundSwitch, altDamageSwitch;
-
-
--(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
- return rotationManager(interfaceOrientation);
-}
-
-
-#pragma mark -
-#pragma mark textfield methods
-// return to previous table
--(void) cancel:(id) sender {
- if (textFieldBeingEdited != nil)
- [self.textFieldBeingEdited resignFirstResponder];
-}
-
-// set the new value
--(BOOL) save:(id) sender {
- if (textFieldBeingEdited != nil) {
- if (textFieldBeingEdited.tag == 0) {
- [self.settingsDictionary setObject:textFieldBeingEdited.text forKey:@"username"];
- } else {
- [self.settingsDictionary setObject:textFieldBeingEdited.text forKey:@"password"];
- }
-
- isWriteNeeded = YES;
- [self.textFieldBeingEdited resignFirstResponder];
- return YES;
- }
- return NO;
-}
-
-// the textfield is being modified, update the navigation controller
--(void) textFieldDidBeginEditing:(UITextField *)aTextField{
- self.textFieldBeingEdited = aTextField;
- UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Cancel",@"from the settings table")
- style:UIBarButtonItemStylePlain
- target:self
- action:@selector(cancel:)];
- self.navigationItem.leftBarButtonItem = cancelButton;
- [cancelButton release];
-
- UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Save",@"from the settings table")
- style:UIBarButtonItemStyleDone
- target:self
- action:@selector(save:)];
- self.navigationItem.rightBarButtonItem = saveButton;
- [saveButton release];
-}
-
-// the textfield has been modified, check for empty strings and restore original navigation bar
--(void) textFieldDidEndEditing:(UITextField *)aTextField{
- self.textFieldBeingEdited = nil;
- self.navigationItem.rightBarButtonItem = self.navigationItem.backBarButtonItem;
- self.navigationItem.leftBarButtonItem = nil;
-}
-
-// limit the size of the field to 64 characters like in original frontend
--(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
- int limit = 64;
- return !([textField.text length] > limit && [string length] > range.length);
-}
-
-
-#pragma mark -
-#pragma mark View Lifecycle
--(void) viewDidLoad {
- [super viewDidLoad];
- self.musicSwitch = [[UISwitch alloc] init];
- self.soundSwitch = [[UISwitch alloc] init];
- self.altDamageSwitch = [[UISwitch alloc] init];
- [self.soundSwitch addTarget:self action:@selector(alsoTurnOffMusic:) forControlEvents:UIControlEventValueChanged];
- [self.musicSwitch addTarget:self action:@selector(dontTurnOnMusic:) forControlEvents:UIControlEventValueChanged];
- [self.altDamageSwitch addTarget:self action:@selector(justUpdateDictionary:) forControlEvents:UIControlEventValueChanged];
-
- NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:SETTINGS_FILE()];
- self.settingsDictionary = dictionary;
- [dictionary release];
-}
-
--(void) viewWillAppear:(BOOL)animated {
- [self.tableView setContentOffset:CGPointMake(0,0) animated:NO];
- isWriteNeeded = NO;
-
- musicSwitch.on = [[settingsDictionary objectForKey:@"music"] boolValue];
- soundSwitch.on = [[settingsDictionary objectForKey:@"sound"] boolValue];
- altDamageSwitch.on = [[settingsDictionary objectForKey:@"alternate"] boolValue];
-
- [super viewWillAppear:animated];
-}
-
--(void) viewWillDisappear:(BOOL)animated {
- [super viewWillDisappear:animated];
-
- if (isWriteNeeded) {
- NSLog(@"writing preferences to file");
- [self.settingsDictionary writeToFile:SETTINGS_FILE() atomically:YES];
- isWriteNeeded = NO;
- }
-}
-
-#pragma mark -
-// if the sound system is off, turn off also the background music
--(void) alsoTurnOffMusic:(id) sender {
- [self.settingsDictionary setObject:[NSNumber numberWithBool:soundSwitch.on] forKey:@"sound"];
- if (YES == self.musicSwitch.on) {
- [musicSwitch setOn:NO animated:YES];
- [self.settingsDictionary setObject:[NSNumber numberWithBool:musicSwitch.on] forKey:@"music"];
- }
- isWriteNeeded = YES;
-}
-
-// if the sound system is off, don't enable background music
--(void) dontTurnOnMusic:(id) sender {
- if (NO == self.soundSwitch.on) {
- [musicSwitch setOn:NO animated:YES];
- } else {
- [self.settingsDictionary setObject:[NSNumber numberWithBool:musicSwitch.on] forKey:@"music"];
- isWriteNeeded = YES;
- }
-}
-
--(void) justUpdateDictionary:(id) sender {
- UISwitch *theSwitch = (UISwitch *)sender;
- [self.settingsDictionary setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"alternate"];
- isWriteNeeded = YES;
-}
-
-/*
-#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:
- break;
- }
- return 0;
-}
-
--(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- static NSString *cellIdentifier = @"systemSettingsCell";
- NSInteger row = [indexPath row];
- NSInteger section = [indexPath section];
-
- UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:cellIdentifier];
- if (nil == cell) {
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
- if (section == kNetworkFields) {
- UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(-15, 10, 100, 25)];
- label.textAlignment = UITextAlignmentRight;
- label.backgroundColor = [UIColor clearColor];
- label.font = [UIFont boldSystemFontOfSize:[UIFont systemFontSize] + 2];
- if (row == 0)
- label.text = NSLocalizedString(@"Nickname","from the settings table");
- else
- label.text = NSLocalizedString(@"Password","from the settings table");
- [cell.contentView addSubview:label];
- [label release];
-
- UITextField *aTextField = [[UITextField alloc] initWithFrame:
- CGRectMake(110, 12, (cell.frame.size.width + cell.frame.size.width/3) - 90, 25)];
- aTextField.clearsOnBeginEditing = NO;
- aTextField.returnKeyType = UIReturnKeyDone;
- aTextField.adjustsFontSizeToFitWidth = YES;
- aTextField.delegate = self;
- aTextField.tag = row;
- aTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
- [aTextField addTarget:self action:@selector(save:) forControlEvents:UIControlEventEditingDidEndOnExit];
- [cell.contentView addSubview:aTextField];
- [aTextField release];
- }
- }
-
- cell.accessoryType = UITableViewCellAccessoryNone;
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
- cell.imageView.image = nil;
-
- UITextField *aTextField;
- switch (section) {
- case kNetworkFields:
- for (UIView *oneView in cell.contentView.subviews)
- if ([oneView isMemberOfClass:[UITextField class]])
- aTextField = (UITextField *)oneView;
-
- switch (row) {
- case 0:
- aTextField.placeholder = NSLocalizedString(@"Insert your username (if you have one)",@"");
- aTextField.text = [self.settingsDictionary objectForKey:@"username"];
- break;
- case 1:
- aTextField.placeholder = NSLocalizedString(@"Insert your password",@"");
- aTextField.text = [self.settingsDictionary objectForKey:@"password"];
- aTextField.secureTextEntry = YES;
- break;
- default:
- break;
- }
- break;
-
- case kAudioFields:
- switch (row) {
- case 0:
- cell.textLabel.text = NSLocalizedString(@"Sound", @"");
- cell.accessoryView = soundSwitch;
- break;
- case 1:
- cell.textLabel.text = NSLocalizedString(@"Music", @"");
- cell.accessoryView = musicSwitch;
- break;
- default:
- break;
- }
- break;
-
- case kOtherFields:
- 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;
-}
-*/
-
-
-#pragma mark -
-#pragma mark Table view delegate
--(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- UITableViewCell *cell;
- if (kNetworkFields == [indexPath section]) {
- cell = [aTableView cellForRowAtIndexPath:indexPath];
- for (UIView *oneView in cell.contentView.subviews) {
- if ([oneView isMemberOfClass:[UITextField class]]) {
- textFieldBeingEdited = (UITextField *)oneView;
- [textFieldBeingEdited becomeFirstResponder];
- }
- }
- [aTableView deselectRowAtIndexPath:indexPath animated:NO];
- }
-}
-
-
-#pragma mark -
-#pragma mark Memory management
--(void) didReceiveMemoryWarning {
- // Releases the view if it doesn't have a superview.
- [super didReceiveMemoryWarning];
- // Relinquish ownership any cached data, images, etc that aren't in use.
-}
-
--(void) viewDidUnload {
- self.settingsDictionary = nil;
- self.textFieldBeingEdited = nil;
- self.musicSwitch = nil;
- self.soundSwitch = nil;
- self.altDamageSwitch = nil;
- [super viewDidUnload];
- MSG_DIDUNLOAD();
-}
-
--(void) dealloc {
- [settingsDictionary release];
- [textFieldBeingEdited release];
- [musicSwitch release];
- [soundSwitch release];
- [altDamageSwitch release];
- [super dealloc];
-}
-
-
-@end