blob: 7287e8c3dfda711f797ee46fbaab8f6aa938d7b9 [file] [log] [blame]
//
// ConfigViewController.m
// ipjsua
//
// Created by Liong Sauw Ming on 3/25/10.
// Copyright 2010 Teluu Inc. (http://www.teluu.com). All rights reserved.
//
#import "ConfigViewController.h"
#import "ipjsuaAppDelegate.h"
@implementation ConfigViewController
@synthesize textView;
@synthesize button1;
@synthesize button2;
bool kshow = false;
/*
// 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;
}
*/
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// Dismiss the keyboard when the view outside the text view is touched.
[textView resignFirstResponder];
[super touchesBegan:touches withEvent:event];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[textView setFont:[UIFont fontWithName:@"Courier" size:10]];
ipjsuaAppDelegate *appd = (ipjsuaAppDelegate *)[[UIApplication sharedApplication] delegate];
appd.cfgView = self;
/* Load config file and display it in the text view */
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *cfgPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"/config.cfg"];
textView.text = [NSMutableString stringWithContentsOfFile:cfgPath encoding:NSASCIIStringEncoding error:NULL];
/* Add keyboard show/hide notifications so that we can resize the text view */
kshow = false;
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(keyboardWillShow:) name: UIKeyboardWillShowNotification object:nil];
[nc addObserver:self selector:@selector(keyboardWillHide:) name: UIKeyboardWillHideNotification object:nil];
/* Add button press event-handlers */
[self.button1 addTarget:self action:@selector(button1Pressed:) forControlEvents:(UIControlEvents)UIControlEventTouchDown];
[self.button2 addTarget:self action:@selector(button2Pressed:) forControlEvents:(UIControlEvents)UIControlEventTouchDown];
}
-(void) keyboardWillShow:(NSNotification *) note
{
if (kshow) return;
/* Shrink the text view area when the keyboard appears */
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect r = self.textView.frame, t;
[[note.userInfo valueForKey:UIKeyboardBoundsUserInfoKey] getValue: &t];
r.size.height -= t.size.height - 51;
self.textView.frame = r;
[UIView commitAnimations];
kshow = true;
[self.button1 setEnabled:true];
[self.button1.titleLabel setEnabled:true];
[self.button2 setEnabled:true];
[self.button2.titleLabel setEnabled:true];
}
-(void) keyboardWillHide:(NSNotification *) note
{
CGRect r = self.textView.frame, t;
[[note.userInfo valueForKey:UIKeyboardBoundsUserInfoKey] getValue: &t];
r.size.height += t.size.height - 51;
self.textView.frame = r;
kshow = false;
}
- (void)button1Pressed:(id)sender {
/* Save the config file */
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *cfgPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"/config.cfg"];
[self.textView.text writeToFile:cfgPath atomically:NO encoding:NSASCIIStringEncoding error:NULL];
[self.textView resignFirstResponder];
[self.button1 setEnabled:false];
[self.button1.titleLabel setEnabled:false];
[self.button2 setEnabled:false];
[self.button2.titleLabel setEnabled:false];
}
- (void)button2Pressed:(id)sender {
/* Reload the config file */
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *cfgPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"/config.cfg"];
self.textView.text = [NSMutableString stringWithContentsOfFile:cfgPath encoding:NSASCIIStringEncoding error:NULL];
[self.textView resignFirstResponder];
[self.button1 setEnabled:false];
[self.button1.titleLabel setEnabled:false];
[self.button2 setEnabled:false];
[self.button2.titleLabel setEnabled:false];
}
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/
- (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.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end