diff -r 3207e0eacd43 -r dcd248e04f3d cocoaTouch/SettingsViewController.m --- a/cocoaTouch/SettingsViewController.m Wed Jan 13 09:41:35 2010 +0000 +++ b/cocoaTouch/SettingsViewController.m Thu Jan 14 16:38:43 2010 +0000 @@ -11,23 +11,75 @@ @implementation SettingsViewController -/* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { - // Custom initialization - } - return self; +@synthesize username, password, musicOn, effectsOn, volumeSlider, volumeLabel; + +-(NSString *)dataFilePath: (NSString *)fileName { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [paths objectAtIndex:0]; + return [documentsDirectory stringByAppendingPathComponent:fileName]; } -*/ + -/* -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad { - [super viewDidLoad]; +-(void) viewDidLoad { + NSString *filePath = [self dataFilePath:@"settings.plist"]; + + if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { + NSUserDefaults *data = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath]; + username.text = [data objectForKey:@"username"]; + password.text = [data objectForKey:@"password"]; + if (1 == [[data objectForKey:@"music"] intValue]) { + musicOn.on = YES; + } else { + musicOn.on = NO; + } + if (1 == [[data objectForKey:@"effects"] intValue]) { + effectsOn.on = YES; + } else { + effectsOn.on = NO; + } + [volumeSlider setValue:[[data objectForKey:@"volume"] intValue] animated:NO]; + NSString *tmpVol = [[NSString alloc] initWithFormat:@"%d", (int) volumeSlider.value]; + volumeLabel.text = tmpVol; + [tmpVol release]; + } + + +/* + UIApplication *app = [UIApplication sharedApplication]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(applicationWillTerminate:) + name:UIApplicationWillTerminateNotification + object:app]; +*/ [super viewDidLoad]; } -*/ + +-(void) viewDidUnload { + self.username = nil; + self.password = nil; + self.musicOn = nil; + self.effectsOn = nil; + self.volumeLabel = nil; + self.volumeSlider = nil; + [super viewDidUnload]; +} +//- (void)applicationWillTerminate:(NSNotification *)notification { +-(void) viewWillDisappear:(BOOL)animated { + NSMutableDictionary *saveArray = [[NSMutableDictionary alloc] init]; + NSString *tmpMus = (musicOn.on) ? @"1" : @"0"; + NSString *tmpEff = (effectsOn.on) ? @"1" : @"0"; + + [saveArray setObject:username.text forKey:@"username"]; + [saveArray setObject:password.text forKey:@"password"]; + [saveArray setObject:tmpMus forKey:@"music"]; + [saveArray setObject:tmpEff forKey:@"effects"]; + [saveArray setObject:volumeLabel.text forKey:@"volume"]; + + [saveArray writeToFile:[self dataFilePath:@"settings.plist"] atomically:YES]; + [saveArray release]; + [super viewWillDisappear:animated]; +} + /* // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -36,20 +88,30 @@ } */ -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. +-(IBAction) backgroundTap: (id)sender { + [username resignFirstResponder]; + [password resignFirstResponder]; +} + +-(IBAction) textFieldDoneEditing: (id)sender { + [sender resignFirstResponder]; } -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; +-(IBAction) sliderChanged: (id) sender { + UISlider *slider = (UISlider *)sender; + int progress = slider.value; + NSString *newLabel = [[NSString alloc] initWithFormat:@"%d",progress]; + self.volumeLabel.text = newLabel; + [newLabel release]; } - -- (void)dealloc { +-(void) dealloc { + [username release]; + [password release]; + [musicOn release]; + [effectsOn release]; + [volumeLabel release]; + [volumeSlider release]; [super dealloc]; }