diff options
Diffstat (limited to 'pjsip-apps/src/ipjsua/Classes')
-rw-r--r-- | pjsip-apps/src/ipjsua/Classes/ConfigViewController.h | 32 | ||||
-rw-r--r-- | pjsip-apps/src/ipjsua/Classes/ConfigViewController.m | 158 | ||||
-rw-r--r-- | pjsip-apps/src/ipjsua/Classes/FirstViewController.h | 37 | ||||
-rw-r--r-- | pjsip-apps/src/ipjsua/Classes/FirstViewController.m | 107 | ||||
-rw-r--r-- | pjsip-apps/src/ipjsua/Classes/TabBarController.h | 26 | ||||
-rw-r--r-- | pjsip-apps/src/ipjsua/Classes/TabBarController.m | 30 | ||||
-rw-r--r-- | pjsip-apps/src/ipjsua/Classes/ipjsuaAppDelegate.h | 37 | ||||
-rw-r--r-- | pjsip-apps/src/ipjsua/Classes/ipjsuaAppDelegate.m | 252 |
8 files changed, 0 insertions, 679 deletions
diff --git a/pjsip-apps/src/ipjsua/Classes/ConfigViewController.h b/pjsip-apps/src/ipjsua/Classes/ConfigViewController.h deleted file mode 100644 index cfb4844d..00000000 --- a/pjsip-apps/src/ipjsua/Classes/ConfigViewController.h +++ /dev/null @@ -1,32 +0,0 @@ -/* $Id$ */ -/* - * Copyright (C) 2010-2011 Teluu Inc. (http://www.teluu.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#import <UIKit/UIKit.h> - - -@interface ConfigViewController : UIViewController { - IBOutlet UITextView *textView; - IBOutlet UIButton *button1; - IBOutlet UIButton *button2; -} - -@property (nonatomic, retain) IBOutlet UITextView *textView; -@property (nonatomic, retain) IBOutlet UIButton *button1; -@property (nonatomic, retain) IBOutlet UIButton *button2; - -@end diff --git a/pjsip-apps/src/ipjsua/Classes/ConfigViewController.m b/pjsip-apps/src/ipjsua/Classes/ConfigViewController.m deleted file mode 100644 index df71993c..00000000 --- a/pjsip-apps/src/ipjsua/Classes/ConfigViewController.m +++ /dev/null @@ -1,158 +0,0 @@ -/* $Id$ */ -/* - * Copyright (C) 2010-2011 Teluu Inc. (http://www.teluu.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#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 diff --git a/pjsip-apps/src/ipjsua/Classes/FirstViewController.h b/pjsip-apps/src/ipjsua/Classes/FirstViewController.h deleted file mode 100644 index d199a31f..00000000 --- a/pjsip-apps/src/ipjsua/Classes/FirstViewController.h +++ /dev/null @@ -1,37 +0,0 @@ -/* $Id$ */ -/* - * Copyright (C) 2010-2011 Teluu Inc. (http://www.teluu.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#import <UIKit/UIKit.h> - - -@interface FirstViewController : UIViewController<UITextFieldDelegate> { - IBOutlet UITextField *textField; - IBOutlet UITextView *textView; - IBOutlet UIButton *button1; - - NSString *text; - bool hasInput; -} - -@property (nonatomic, retain) IBOutlet UITextField *textField; -@property (nonatomic, retain) IBOutlet UITextView *textView; -@property (nonatomic, retain) IBOutlet UIButton *button1; -@property (nonatomic, retain) NSString *text; -@property (nonatomic) bool hasInput; - -@end diff --git a/pjsip-apps/src/ipjsua/Classes/FirstViewController.m b/pjsip-apps/src/ipjsua/Classes/FirstViewController.m deleted file mode 100644 index b3878ab4..00000000 --- a/pjsip-apps/src/ipjsua/Classes/FirstViewController.m +++ /dev/null @@ -1,107 +0,0 @@ -/* $Id$ */ -/* - * Copyright (C) 2010-2011 Teluu Inc. (http://www.teluu.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#import "FirstViewController.h" -#import "ipjsuaAppDelegate.h" - - -@implementation FirstViewController -@synthesize textField; -@synthesize textView; -@synthesize button1; -@synthesize text; -@synthesize hasInput; - -- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { - // When the user presses return, take focus away from the text field so that the keyboard is dismissed. - if (theTextField == textField) { - [self.textField resignFirstResponder]; - self.hasInput = true; - self.text = [textField.text stringByAppendingString:@"\n"]; - textField.text = @""; - } - return YES; -} - - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event -{ - // Dismiss the keyboard when the view outside the text field is touched. - [textField resignFirstResponder]; - [super touchesBegan:touches withEvent:event]; -} - -/* -// The designated initializer. Override to perform setup that is required before the view is loaded. -- (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 { -} -*/ - -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad { - [super viewDidLoad]; - - [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; - - ipjsuaAppDelegate *appd = (ipjsuaAppDelegate *)[[UIApplication sharedApplication] delegate]; - appd.mainView = self; - textField.delegate = self; - [self.textView setFont:[UIFont fontWithName:@"Courier New" size:8.9]]; - [self.textField setEnabled: false]; - [button1 addTarget:self action:@selector(button1Pressed:) forControlEvents:(UIControlEvents)UIControlEventTouchDown]; -} - -- (void)button1Pressed:(id)sender { - /* Clear the text view */ - self.textView.text = @""; -} - -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); -} - -- (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 diff --git a/pjsip-apps/src/ipjsua/Classes/TabBarController.h b/pjsip-apps/src/ipjsua/Classes/TabBarController.h deleted file mode 100644 index 343bed02..00000000 --- a/pjsip-apps/src/ipjsua/Classes/TabBarController.h +++ /dev/null @@ -1,26 +0,0 @@ -/* $Id$ */ -/* - * Copyright (C) 2010-2011 Teluu Inc. (http://www.teluu.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#import <UIKit/UIKit.h> - - -@interface TabBarController : UITabBarController { - -} - -@end diff --git a/pjsip-apps/src/ipjsua/Classes/TabBarController.m b/pjsip-apps/src/ipjsua/Classes/TabBarController.m deleted file mode 100644 index f9e44c01..00000000 --- a/pjsip-apps/src/ipjsua/Classes/TabBarController.m +++ /dev/null @@ -1,30 +0,0 @@ -/* $Id$ */ -/* - * Copyright (C) 2010-2011 Teluu Inc. (http://www.teluu.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#import "TabBarController.h" - - -@implementation TabBarController - -// Override to allow orientations other than the default portrait orientation. -- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); -} - -@end diff --git a/pjsip-apps/src/ipjsua/Classes/ipjsuaAppDelegate.h b/pjsip-apps/src/ipjsua/Classes/ipjsuaAppDelegate.h deleted file mode 100644 index 624f7c24..00000000 --- a/pjsip-apps/src/ipjsua/Classes/ipjsuaAppDelegate.h +++ /dev/null @@ -1,37 +0,0 @@ -/* $Id$ */ -/* - * Copyright (C) 2010-2011 Teluu Inc. (http://www.teluu.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#import <UIKit/UIKit.h> -#import "ConfigViewController.h" -#import "FirstViewController.h" -#import "TabBarController.h" - -@interface ipjsuaAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { - UIWindow *window; - ConfigViewController *cfgView; - FirstViewController *mainView; - TabBarController *tabBarController; -} - -@property (nonatomic, retain) IBOutlet UIWindow *window; -@property (nonatomic, retain) IBOutlet TabBarController *tabBarController; -@property (nonatomic, retain) IBOutlet ConfigViewController *cfgView; -@property (nonatomic, retain) FirstViewController *mainView; - - -@end diff --git a/pjsip-apps/src/ipjsua/Classes/ipjsuaAppDelegate.m b/pjsip-apps/src/ipjsua/Classes/ipjsuaAppDelegate.m deleted file mode 100644 index d462ae44..00000000 --- a/pjsip-apps/src/ipjsua/Classes/ipjsuaAppDelegate.m +++ /dev/null @@ -1,252 +0,0 @@ -/* $Id$ */ -/* - * Copyright (C) 2010-2011 Teluu Inc. (http://www.teluu.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#import <pjlib.h> -#import <pjsua.h> -#import "ipjsuaAppDelegate.h" - -extern pj_log_func *log_cb; - -@implementation ipjsuaAppDelegate -@synthesize window; -@synthesize tabBarController; -@synthesize mainView; -@synthesize cfgView; - -/* Sleep interval duration */ -#define SLEEP_INTERVAL 0.5 -/* Determine whether we should print the messages in the debugger - * console as well - */ -#define DEBUGGER_PRINT 1 -/* Whether we should show pj log messages in the text area */ -#define SHOW_LOG 1 -#define PATH_LENGTH PJ_MAXPATH -#define KEEP_ALIVE_INTERVAL 600 - -extern pj_bool_t app_restart; - -char argv_buf[PATH_LENGTH]; -char *argv[] = {"", "--config-file", argv_buf}; - -ipjsuaAppDelegate *app; - -bool app_running; -bool thread_quit; -NSMutableString *mstr; -pj_thread_desc a_thread_desc; -pj_thread_t *a_thread; -pjsua_call_id ccall_id; - -pj_status_t app_init(int argc, char *argv[]); -pj_status_t app_main(void); -pj_status_t app_destroy(void); -void keepAliveFunction(int timeout); - -void showMsg(const char *format, ...) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - va_list arg; - - va_start(arg, format); - NSString *str = [[NSString alloc] initWithFormat:[NSString stringWithFormat:@"%s", format] arguments: arg]; -#if DEBUGGER_PRINT - NSLog(@"%@", str); -#endif - va_end(arg); - - [mstr appendString:str]; - [pool release]; -} - -char * getInput(char *s, int n, FILE *stream) -{ - if (stream != stdin) { - return fgets(s, n, stream); - } - - app.mainView.hasInput = false; - [app.mainView.textField setEnabled: true]; - [app performSelectorOnMainThread:@selector(displayMsg:) withObject:mstr waitUntilDone:YES]; - [mstr setString:@""]; - - while (!thread_quit && !app.mainView.hasInput) { - int ctr = 0; - [NSThread sleepForTimeInterval:SLEEP_INTERVAL]; - if (ctr == 4) { - [app performSelectorOnMainThread:@selector(displayMsg:) withObject:mstr waitUntilDone:YES]; - [mstr setString:@""]; - ctr = 0; - } - ctr++; - } - - [app.mainView.text getCString:s maxLength:n encoding:NSASCIIStringEncoding]; - [app.mainView.textField setEnabled: false]; - [app performSelectorOnMainThread:@selector(displayMsg:) withObject:app.mainView.text waitUntilDone:NO]; - - return s; -} - -void showLog(int level, const char *data, int len) -{ - showMsg("%s", data); -} - -pj_bool_t showNotification(pjsua_call_id call_id) -{ -#ifdef __IPHONE_4_0 - ccall_id = call_id; - - // Create a new notification - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - UILocalNotification* alert = [[[UILocalNotification alloc] init] autorelease]; - if (alert) - { - alert.repeatInterval = 0; - alert.alertBody = @"Incoming call received..."; - alert.alertAction = @"Answer"; - - [[UIApplication sharedApplication] presentLocalNotificationNow:alert]; - } - - [pool release]; - - return PJ_FALSE; -#else - return PJ_TRUE; -#endif -} - -- (void)answer_call { - if (!pj_thread_is_registered()) - { - pj_thread_register("ipjsua", a_thread_desc, &a_thread); - } - pjsua_call_answer(ccall_id, 200, NULL, NULL); -} - -#ifdef __IPHONE_4_0 -- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { - [app performSelectorOnMainThread:@selector(answer_call) withObject:nil waitUntilDone:YES]; -} - -- (void)keepAlive { - if (!pj_thread_is_registered()) - { - pj_thread_register("ipjsua", a_thread_desc, &a_thread); - } - keepAliveFunction(KEEP_ALIVE_INTERVAL); -} - -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - [app performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; - [application setKeepAliveTimeout:KEEP_ALIVE_INTERVAL handler: ^{ - [app performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; - }]; -} - -#endif - -- (void)start_app { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - /* Wait until the view is ready */ - while (self.mainView == nil) { - [NSThread sleepForTimeInterval:SLEEP_INTERVAL]; - } - - [NSThread setThreadPriority:1.0]; - mstr = [NSMutableString stringWithCapacity:4196]; -#if SHOW_LOG - pj_log_set_log_func(&showLog); - log_cb = &showLog; -#endif - - do { - app_restart = PJ_FALSE; - if (app_init(3, argv) != PJ_SUCCESS) { - NSString *str = @"Failed to initialize pjsua\n"; - [app performSelectorOnMainThread:@selector(displayMsg:) withObject:str waitUntilDone:YES]; - } else { - app_running = true; - app_main(); - - app_destroy(); - /* This is on purpose */ - app_destroy(); - } - - [app performSelectorOnMainThread:@selector(displayMsg:) withObject:mstr waitUntilDone:YES]; - [mstr setString:@""]; - } while (app_restart); - - [pool release]; -} - -- (void)displayMsg:(NSString *)str { - self.mainView.textView.text = [self.mainView.textView.text stringByAppendingString:str]; - [self.mainView.textView scrollRangeToVisible:NSMakeRange([self.mainView.textView.text length] - 1, 1)]; -} - -- (void)applicationDidFinishLaunching:(UIApplication *)application { - /* If there is no config file in the document dir, copy the default config file into the directory */ - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *cfgPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"/config.cfg"]; - if (![[NSFileManager defaultManager] fileExistsAtPath:cfgPath]) { - NSString *resPath = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"cfg"]; - NSString *cfg = [NSString stringWithContentsOfFile:resPath encoding:NSASCIIStringEncoding error:NULL]; - [cfg writeToFile:cfgPath atomically:NO encoding:NSASCIIStringEncoding error:NULL]; - } - [cfgPath getCString:argv[2] maxLength:PATH_LENGTH encoding:NSASCIIStringEncoding]; - - // Add the tab bar controller's current view as a subview of the window - [window addSubview:tabBarController.view]; - [window makeKeyAndVisible]; - - app = self; - app_running = false; - thread_quit = false; - /* Start pjsua thread */ - [NSThread detachNewThreadSelector:@selector(start_app) toTarget:self withObject:nil]; -} - -/* -// Optional UITabBarControllerDelegate method -- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { -} -*/ - -/* -// Optional UITabBarControllerDelegate method -- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed { -} -*/ - - -- (void)dealloc { - thread_quit = true; - [NSThread sleepForTimeInterval:SLEEP_INTERVAL]; - - [tabBarController release]; - [window release]; - [super dealloc]; -} - -@end - |