diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index d4ee8b7fe..4e6f12c64 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -71,7 +71,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } @@ -186,6 +188,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Save message in database ChatModel *chat = [[ChatModel alloc] init]; [chat setRemoteContact:remoteAddress]; + [chat setLocalContact:@""]; [chat setMessage:message]; [chat setDirection:[NSNumber numberWithInt:0]]; [chat setTime:[NSDate date]]; @@ -207,12 +210,16 @@ static UICompositeViewDescription *compositeDescription = nil; LinphoneAddress *from = [[[notif userInfo] objectForKey:@"from"] pointerValue]; ChatModel *chat = [[notif userInfo] objectForKey:@"chat"]; if(from != NULL && chat != NULL) { - if([[NSString stringWithUTF8String:linphone_address_as_string_uri_only(from)] - caseInsensitiveCompare:remoteAddress] == NSOrderedSame) { - [chat setRead:[NSNumber numberWithInt:1]]; - [chat update]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; - [tableController addChatEntry:chat]; + char *fromStr = linphone_address_as_string_uri_only(from); + if(fromStr != NULL) { + if([[NSString stringWithUTF8String:fromStr] + caseInsensitiveCompare:remoteAddress] == NSOrderedSame) { + [chat setRead:[NSNumber numberWithInt:1]]; + [chat update]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; + [tableController addChatEntry:chat]; + } + ms_free(fromStr); } } else { [LinphoneLogger logc:LinphoneLoggerWarning format:"Invalid textReceivedEvent"]; diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 16dca20f8..390b91d5d 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -92,7 +92,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar: @"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index ca7d9f787..0c120384f 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -256,7 +256,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 2c4ebc9b4..c23b5967c 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -108,7 +108,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 41fba484b..251f90687 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -106,7 +106,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:true tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } @@ -123,9 +125,11 @@ static UICompositeViewDescription *compositeDescription = nil; name:@"LinphoneCallUpdate" object:nil]; // Update on show - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; - [self callUpdate:call state:state]; + if([LinphoneManager isLcReady]) { + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; + [self callUpdate:call state:state]; + } } - (void)viewWillDisappear:(BOOL)animated { diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 2e88af89f..47a4c9ebe 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -62,7 +62,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:nil tabBarEnabled:false - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index f8f0aef89..8dc60041e 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -68,7 +68,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } @@ -155,7 +157,7 @@ static UICompositeViewDescription *compositeDescription = nil; if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -164,6 +166,7 @@ static UICompositeViewDescription *compositeDescription = nil; address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); @@ -232,10 +235,11 @@ static UICompositeViewDescription *compositeDescription = nil; if (addr != NULL) { // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress != NULL) { [addressButton setTitle:[NSString stringWithUTF8String:lAddress] forState:UIControlStateNormal]; [addressButton setHidden:FALSE]; + ms_free(lAddress); } else { [addressButton setHidden:TRUE]; } @@ -278,7 +282,9 @@ static UICompositeViewDescription *compositeDescription = nil; addr = callLog->to; } - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); + if(lAddress == NULL) + return; NSString *displayName = nil; if(contact != nil) { @@ -301,6 +307,7 @@ static UICompositeViewDescription *compositeDescription = nil; [controller call:[NSString stringWithUTF8String:lAddress]]; } } + ms_free(lAddress); } @end diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 28d85ccc2..ad0c33234 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -137,7 +137,7 @@ if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { address = [NSString stringWithUTF8String:lAddress]; NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:address]; @@ -146,6 +146,7 @@ displayName = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 0cdae5baf..ad45dd5f3 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -65,7 +65,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index 155fbc632..9b0e9f7d2 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -219,11 +219,11 @@ enum TableSection { [cell setConferenceCell:inConference]; [cell update]; - if (linphone_core_get_calls_nb(lc) > 1 || linphone_core_get_conference_size(lc) > 0) { + /*if (linphone_core_get_calls_nb(lc) > 1 || linphone_core_get_conference_size(lc) > 0) { tableView.scrollEnabled = true; } else { tableView.scrollEnabled = false; - } + }*/ return cell; } diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 3b917bed1..6fb175e2d 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -91,7 +91,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:true tabBar:@"UICallBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:true + portraitMode:true]; } return compositeDescription; } @@ -125,6 +127,10 @@ static UICompositeViewDescription *compositeDescription = nil; [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneCallUpdate" object:nil]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIDeviceOrientationDidChangeNotification + object:nil]; } - (void)viewWillAppear:(BOOL)animated { @@ -139,10 +145,16 @@ static UICompositeViewDescription *compositeDescription = nil; name:@"LinphoneCallUpdate" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(orientationChanged:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; + // Update on show LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state animated:FALSE]; + [self orientationUpdate]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [callTableController viewDidAppear:animated]; @@ -184,6 +196,30 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - +- (void)orientationUpdate { + int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); + UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; + int newRotation = 0; + switch (orientation) { + case UIInterfaceOrientationLandscapeRight: + newRotation = 270; + break; + case UIInterfaceOrientationLandscapeLeft: + newRotation = 90; + break; + default: + newRotation = 0; + } + if (oldLinphoneOrientation != newRotation) { + linphone_core_set_device_rotation([LinphoneManager getLc], newRotation); + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + if (call && linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { + //Orientation has changed, must call update call + linphone_core_update_call([LinphoneManager getLc], call, NULL); + } + } +} + - (void)callUpdate:(LinphoneCall *)call state:(LinphoneCallState)state animated:(BOOL)animated { // Update table [callTableView reloadData]; @@ -312,8 +348,8 @@ static UICompositeViewDescription *compositeDescription = nil; } #endif -- (void)enableVideoDisplay:(BOOL)animation { - if(videoShown) +- (void)enableVideoDisplay:(BOOL)animation { + if(videoShown && animation) return; videoShown = true; @@ -366,7 +402,7 @@ static UICompositeViewDescription *compositeDescription = nil; } - (void)disableVideoDisplay:(BOOL)animation { - if(!videoShown) + if(!videoShown && animation) return; videoShown = false; @@ -416,6 +452,10 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { #pragma mark - Event Functions +- (void)orientationChanged:(NSNotification*) notif { + [self orientationUpdate]; +} + - (void)callUpdateEvent: (NSNotification*) notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 8f79f3993..2e36e4b97 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,11 +12,11 @@ YES - IBUITableViewController IBUITableView + IBUIButton IBUIActivityIndicatorView IBUIView - IBUIButton + IBUITableViewController IBProxyObject @@ -44,13 +44,13 @@ YES - 292 + 274 YES - 292 - {320, 460} + 274 + {{1000, 1000}, {320, 460}} @@ -63,18 +63,18 @@ - 292 - {{240, 354}, {80, 106}} + 265 + {{1214, 1354}, {106, 106}} - + IBCocoaTouchFramework - 292 - {{141, 212}, {37, 37}} + 301 + {{1137, 1214}, {37, 37}} @@ -86,7 +86,7 @@ 0 - {320, 460} + {{-1000, -1000}, {2320, 2460}} @@ -103,6 +103,7 @@ {{0, -10}, {320, 480}} + _NS:418 YES @@ -133,6 +134,7 @@ {85, 33} + _NS:9 NO IBCocoaTouchFramework @@ -166,7 +168,7 @@ {320, 460} - + NO IBCocoaTouchFramework @@ -224,14 +226,6 @@ 130 - - - callTableView - - - - 109 - videoCameraSwitch @@ -248,6 +242,14 @@ 167 + + + callTableView + + + + 109 + dataSource @@ -347,12 +349,6 @@ preview - - 106 - - - callTableView - 160 @@ -368,6 +364,12 @@ callTableController + + 106 + + + callTableView + diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 251a94f84..7553a0fbe 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -97,7 +97,7 @@ if (addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -106,6 +106,7 @@ address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index 0f348a891..767eb32ab 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -26,6 +26,7 @@ @interface LinphoneAppDelegate : NSObject { UIWindow *window; CTCallCenter* callCenter; + BOOL started; } - (void)loadDefaultSettings:(NSDictionary *) appDefaults; @@ -35,6 +36,7 @@ - (void)startApplication; @property (nonatomic, retain) IBOutlet UIWindow *window; +@property (assign) BOOL started; @end diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 9d125299a..fb6832fcb 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -41,6 +41,26 @@ int __aeabi_idiv(int a, int b) { @implementation LinphoneAppDelegate @synthesize window; +@synthesize started; + + +#pragma mark - Lifecycle Functions + +- (id)init { + self = [super init]; + if(self != nil) { + self->started = FALSE; + } + return self; +} + +- (void)dealloc { + [window release]; + [super dealloc]; +} + + +#pragma mark - - (void)handleGSMCallInteration: (id) cCenter { CTCallCenter* ct = (CTCallCenter*) cCenter; @@ -97,10 +117,10 @@ int __aeabi_idiv(int a, int b) { && ![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]) { // autoboot disabled, doing nothing return; - } else if ([LinphoneManager instance] == nil) { - [self startApplication]; } + [self startApplication]; + [[LinphoneManager instance] becomeActive]; if (callCenter == nil) { @@ -187,10 +207,11 @@ int __aeabi_idiv(int a, int b) { } - (void)startApplication { - /* explicitely instanciate LinphoneManager */ - LinphoneManager* lm = [[LinphoneManager alloc] init]; - assert(lm == [LinphoneManager instance]); - + if(started) + return; + + started = TRUE; + [[LinphoneManager instance] startLibLinphone]; [self setupUI]; @@ -204,11 +225,6 @@ int __aeabi_idiv(int a, int b) { - (void)applicationWillTerminate:(UIApplication *)application { } -- (void)dealloc { - [window release]; - [super dealloc]; -} - - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { if([notification.userInfo objectForKey:@"call"] != nil) { LinphoneCall* call; diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 68b3a7e35..104bd95d7 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -224,7 +224,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } - (BOOL)valueChangedForKey:(NSString*)key { - return [ [changedDict valueForKey:key] boolValue]; + return [[changedDict valueForKey:key] boolValue]; } - (void)synchronizeAccount { diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 0ff853b5b..4eb34c7fc 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -139,6 +139,10 @@ struct codec_name_pref_table codec_pref_table[]={ } + (LinphoneManager*)instance { + if(theLinphoneManager == nil) { + theLinphoneManager = [LinphoneManager alloc]; + [theLinphoneManager init]; + } return theLinphoneManager; } @@ -146,11 +150,9 @@ struct codec_name_pref_table codec_pref_table[]={ #pragma mark - Lifecycle Functions - (id)init { - assert (!theLinphoneManager); if ((self = [super init])) { fastAddressBook = [[FastAddressBook alloc] init]; database = NULL; - theLinphoneManager = self; settingsStore = nil; self.defaultExpires = 600; [self openDatabase]; @@ -161,6 +163,7 @@ struct codec_name_pref_table codec_pref_table[]={ - (void)dealloc { [fastAddressBook release]; [self closeDatabase]; + [settingsStore release]; [super dealloc]; } @@ -219,11 +222,12 @@ struct codec_name_pref_table codec_pref_table[]={ //generic log handler for debug version void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){ - NSString* format = [NSString stringWithUTF8String:fmt]; + NSString* format = [[NSString alloc] initWithUTF8String:fmt]; NSLogv(format, args); NSString* formatedString = [[NSString alloc] initWithFormat:format arguments:args]; //[[LinphoneManager instance] addLog:formatedString]; [formatedString release]; + [format release]; } //Error/warning log handler @@ -329,15 +333,22 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo - (void)onTextReceived:(LinphoneCore *)lc room:(LinphoneChatRoom *)room from:(const LinphoneAddress *)from message:(const char *)message { + char *fromStr = linphone_address_as_string_uri_only(from); + if(fromStr == NULL) + return; + // Save message in database ChatModel *chat = [[ChatModel alloc] init]; - [chat setRemoteContact:[NSString stringWithUTF8String:linphone_address_as_string_uri_only(from)]]; + [chat setLocalContact:@""]; + [chat setRemoteContact:[NSString stringWithUTF8String:fromStr]]; [chat setMessage:[NSString stringWithUTF8String:message]]; [chat setDirection:[NSNumber numberWithInt:1]]; [chat setTime:[NSDate date]]; [chat setRead:[NSNumber numberWithInt:0]]; [chat create]; + ms_free(fromStr); + // Post event NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [NSValue valueWithPointer:room], @"room", @@ -635,11 +646,6 @@ static LinphoneCoreVTable linphonec_vtable = { proxyReachability=nil; } - - if(settingsStore != nil) { - [settingsStore release]; - } - } - (BOOL)enterBackgroundMode { diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index d0ba31428..d7a671967 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -25,8 +25,9 @@ #import "UIVideoButton.h" #import "UIHangUpButton.h" #import "UIDigitButton.h" +#import "TPMultiLayoutViewController.h" -@interface UICallBar: UIViewController { +@interface UICallBar: TPMultiLayoutViewController { UIPauseButton* pauseButton; UIButton* conferenceButton; UIVideoButton* videoButton; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 19764fb4d..c8fa101d5 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -141,35 +141,70 @@ // Set selected+disabled background: IB lack ! [videoButton setImage:[UIImage imageNamed:@"video_on_disabled.png"] forState:(UIControlStateDisabled | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[videoButton tag]] + setImage:[UIImage imageNamed:@"video_on_disabled_landscape.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [videoButton setImage:[UIImage imageNamed:@"video_on_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[videoButton tag]] + setImage:[UIImage imageNamed:@"video_on_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+disabled background: IB lack ! [speakerButton setImage:[UIImage imageNamed:@"speaker_on_disabled.png"] - forState:(UIControlStateDisabled | UIControlStateSelected)]; + forState:(UIControlStateDisabled | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[speakerButton tag]] + setImage:[UIImage imageNamed:@"speaker_on_disabled_landscape.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [speakerButton setImage:[UIImage imageNamed:@"speaker_on_over.png"] - forState:(UIControlStateHighlighted | UIControlStateSelected)]; + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[speakerButton tag]] + setImage:[UIImage imageNamed:@"sspeaker_on_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+disabled background: IB lack ! [microButton setImage:[UIImage imageNamed:@"micro_on_disabled.png"] - forState:(UIControlStateDisabled | UIControlStateSelected)]; + forState:(UIControlStateDisabled | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[microButton tag]] + setImage:[UIImage imageNamed:@"micro_on_disabled_landscape.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [microButton setImage:[UIImage imageNamed:@"micro_on_over.png"] - forState:(UIControlStateHighlighted | UIControlStateSelected)]; + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[microButton tag]] + setImage:[UIImage imageNamed:@"micro_on_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [pauseButton setImage:[UIImage imageNamed:@"pause_on_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[pauseButton tag]] + setImage:[UIImage imageNamed:@"pause_on_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [optionsButton setImage:[UIImage imageNamed:@"options_over.png"] - forState:(UIControlStateHighlighted | UIControlStateSelected)]; + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[optionsButton tag]] + setImage:[UIImage imageNamed:@"options_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [dialerButton setImage:[UIImage imageNamed:@"dialer_alt_back_over.png"] - forState:(UIControlStateHighlighted | UIControlStateSelected)]; + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[dialerButton tag]] + setImage:[UIImage imageNamed:@"dialer_alt_back_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; // Set label multilines: IB lack ! [option1Button.titleLabel setLineBreakMode:UILineBreakModeWordWrap]; @@ -182,6 +217,9 @@ // Set label multilines: IB lack ! [option3Button.titleLabel setLineBreakMode:UILineBreakModeWordWrap]; [option3Button.titleLabel setTextAlignment:UITextAlignmentCenter]; + + [optionsView setHidden:TRUE]; + [padView setHidden:TRUE]; } - (void)viewWillAppear:(BOOL)animated { @@ -433,4 +471,43 @@ linphone_core_add_all_to_conference([LinphoneManager getLc]); } + +#pragma mark - TPMultiLayoutViewController Functions + +- (NSDictionary*)attributesForView:(UIView*)view { + NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; + + [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"]; + [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"]; + if([view isKindOfClass:[UIButton class]]) { + UIButton *button = (UIButton *)view; + [attributes setObject:[button imageForState:UIControlStateNormal]forKey:@"image-normal"]; + [attributes setObject:[button imageForState:UIControlStateHighlighted]forKey:@"image-highlighted"]; + [attributes setObject:[button imageForState:UIControlStateDisabled]forKey:@"image-disabled"]; + [attributes setObject:[button imageForState:UIControlStateSelected]forKey:@"image-selected"]; + [attributes setObject:[button imageForState:UIControlStateDisabled | UIControlStateHighlighted]forKey:@"image-disabled-highlighted"]; + [attributes setObject:[button imageForState:UIControlStateSelected | UIControlStateHighlighted]forKey:@"image-selected-highlighted"]; + [attributes setObject:[button imageForState:UIControlStateSelected | UIControlStateDisabled]forKey:@"image-selected-disabled"]; + } + [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"]; + + return attributes; +} + +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view { + view.frame = [[attributes objectForKey:@"frame"] CGRectValue]; + view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue]; + if([view isKindOfClass:[UIButton class]]) { + UIButton *button = (UIButton *)view; + [button setImage:[attributes objectForKey:@"image-normal"] forState:UIControlStateNormal]; + [button setImage:[attributes objectForKey:@"image-highlighted"] forState:UIControlStateHighlighted]; + [button setImage:[attributes objectForKey:@"image-disabled"] forState:UIControlStateDisabled]; + [button setImage:[attributes objectForKey:@"image-selected"] forState:UIControlStateSelected]; + [button setImage:[attributes objectForKey:@"image-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted]; + [button setImage:[attributes objectForKey:@"image-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted]; + [button setImage:[attributes objectForKey:@"image-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled]; + } + view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue]; +} + @end diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index b00a61862..11c6a1489 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -35,7 +35,7 @@ - 292 + 301 @@ -43,6 +43,7 @@ {{0, 335}, {320, 125}} + _NS:9 1 @@ -57,9 +58,9 @@ - -2147483360 + 288 - + 274 {320, 460} @@ -67,12 +68,10 @@ _NS:9 + 2 NO - - - IBCocoaTouchFramework - + NSImage background.png @@ -90,6 +89,7 @@ NO NO + 3 IBCocoaTouchFramework 0 0 @@ -97,11 +97,11 @@ 3 MC41AA - + NSImage numpad_one_over.png - + NSImage numpad_one_default.png @@ -126,15 +126,16 @@ NO NO + 4 IBCocoaTouchFramework 0 0 - + NSImage numpad_two_over.png - + NSImage numpad_two_default.png @@ -150,15 +151,16 @@ NO NO + 5 IBCocoaTouchFramework 0 0 - + NSImage numpad_three_over.png - + NSImage numpad_three_default.png @@ -174,15 +176,16 @@ NO NO + 6 IBCocoaTouchFramework 0 0 - + NSImage numpad_four_over.png - + NSImage numpad_four_default.png @@ -198,15 +201,16 @@ NO NO + 7 IBCocoaTouchFramework 0 0 - + NSImage numpad_five_over.png - + NSImage numpad_five_default.png @@ -222,15 +226,16 @@ NO NO + 8 IBCocoaTouchFramework 0 0 - + NSImage numpad_six_over.png - + NSImage numpad_six_default.png @@ -246,15 +251,16 @@ NO NO + 9 IBCocoaTouchFramework 0 0 - + NSImage numpad_seven_over.png - + NSImage numpad_seven_default.png @@ -270,15 +276,16 @@ NO NO + 10 IBCocoaTouchFramework 0 0 - + NSImage numpad_eight_over.png - + NSImage numpad_eight_default.png @@ -294,15 +301,16 @@ NO NO + 11 IBCocoaTouchFramework 0 0 - + NSImage numpad_nine_over.png - + NSImage numpad_nine_default.png @@ -318,15 +326,16 @@ NO NO + 12 IBCocoaTouchFramework 0 0 - + NSImage numpad_star_over.png - + NSImage numpad_star_default.png @@ -342,15 +351,16 @@ NO NO + 13 IBCocoaTouchFramework 0 0 - + NSImage numpad_zero_over.png - + NSImage numpad_zero_default.png @@ -363,74 +373,77 @@ {{213, 206}, {107, 54}} - + NO NO + 14 IBCocoaTouchFramework 0 0 - + NSImage numpad_sharp_over.png - + NSImage numpad_sharp_default.png - + 292 {{39, 268}, {68, 48}} - + NO NO + 100 IBCocoaTouchFramework 0 0 Option n°1 - + 3 MQA - + NSImage dialer_alt_button_options_over.png - + NSImage dialer_alt_button_options_default.png - + 292 {{126, 268}, {68, 48}} - + NO NO + 101 IBCocoaTouchFramework 0 0 Option n°2 - + - - + + - + 292 {{213, 268}, {68, 48}} @@ -439,30 +452,29 @@ NO NO + 102 IBCocoaTouchFramework 0 0 Option n°3 - + - - + + - {320, 460} + {320, 340} - + _NS:9 - + 3 - MSAwLjQAA - - 2 - + MCAwAA + 1 IBCocoaTouchFramework @@ -478,6 +490,7 @@ _NS:9 NO + 19 Video @@ -518,6 +531,7 @@ _NS:9 NO + 20 IBCocoaTouchFramework 0 @@ -530,6 +544,7 @@ _NS:9 NO + 21 Micro @@ -567,6 +582,7 @@ _NS:9 NO + 22 Speaker @@ -604,6 +620,7 @@ _NS:9 NO + 17 Add call @@ -611,6 +628,7 @@ 0 0 NO + NO NSImage @@ -636,6 +654,7 @@ _NS:9 NO + 24 Pause @@ -669,6 +688,7 @@ _NS:9 NO + 25 Start Conference @@ -698,6 +718,7 @@ _NS:9 NO + 26 Hangup @@ -727,6 +748,7 @@ _NS:9 NO + 27 Back @@ -757,10 +779,8 @@ _NS:9 - - 3 - MCAwAA - + + 18 IBCocoaTouchFramework @@ -773,6 +793,754 @@ NO IBCocoaTouchFramework + + + 301 + + + + -2147483356 + {{0, 248}, {480, 72}} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NQA + + NO + NO + NO + -1 + NO + IBCocoaTouchFramework + + + + 288 + + + + 274 + {480, 320} + + + + _NS:9 + 2 + NO + IBCocoaTouchFramework + + + + + 292 + {{71, 10}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + 3 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{178, 10}, {106, 54}} + + + + NO + NO + 4 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{284, 10}, {107, 54}} + + + + NO + NO + 5 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{71, 72}, {107, 54}} + + + + NO + NO + 6 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{178, 72}, {106, 54}} + + + + NO + NO + 7 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{284, 72}, {107, 54}} + + + + NO + NO + 8 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{71, 134}, {107, 54}} + + + + NO + NO + 9 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{178, 134}, {106, 54}} + + + + NO + NO + 10 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{284, 134}, {107, 54}} + + + + NO + NO + 11 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{71, 196}, {107, 54}} + + + + NO + NO + 12 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{178, 196}, {106, 54}} + + + + NO + NO + 13 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{284, 196}, {107, 54}} + + + + NO + NO + 14 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{20, 13}, {68, 48}} + + + + NO + NO + 100 + IBCocoaTouchFramework + 0 + 0 + Option n°1 + + + + + + + + + + 292 + {{20, 75}, {68, 48}} + + + + NO + NO + 101 + IBCocoaTouchFramework + 0 + 0 + Option n°2 + + + + + + + + + + 292 + {{20, 137}, {68, 48}} + + + + NO + NO + 102 + IBCocoaTouchFramework + 0 + 0 + Option n°3 + + + + + + + + + {480, 260} + + + + _NS:9 + + 1 + IBCocoaTouchFramework + + + + 292 + + + + 292 + {65, 55} + + + + _NS:9 + NO + 16 + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + options_transfer_over_landscape.png + + + NSImage + options_transfer_disabled_landscape.png + + + NSImage + options_transfer_default_landscape.png + + + + + + + 292 + {{0, 51}, {65, 55}} + + + + _NS:9 + NO + 17 + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + options_add_over_landscape.png + + + NSImage + options_add_disabled_landscape.png + + + NSImage + options_add_default_landscape.png + + + + + + {{415, 140}, {65, 105}} + + + + _NS:9 + + 15 + IBCocoaTouchFramework + + + + 292 + + + + 292 + {{65, 0}, {65, 82}} + + + + _NS:9 + NO + 19 + + Video + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + video_off_over_landscape.png + + + NSImage + video_off_disabled_landscape.png + + + NSImage + video_on_default_landscape.png + + + NSImage + video_off_default_landscape.png + + + + + + + -2147483356 + {{79, 20}, {37, 37}} + + + + _NS:9 + NO + 20 + IBCocoaTouchFramework + 0 + + + + 292 + {{130, 0}, {65, 82}} + + + + _NS:9 + NO + 21 + + Micro + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + micro_off_over_landscape.png + + + NSImage + micro_off_disabled_landscape.png + + + NSImage + micro_on_default_landscape.png + + + NSImage + micro_off_default_landscape.png + + + + + + + 292 + {{285, 0}, {65, 82}} + + + + _NS:9 + NO + 22 + + Speaker + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + speaker_off_over_landscape.png + + + NSImage + speaker_off_disabled_landscape.png + + + NSImage + speaker_on_default_landscape.png + + + NSImage + speaker_off_default_landscape.png + + + + + + + 292 + {{350, 0}, {65, 82}} + + + + _NS:9 + NO + 23 + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + options_over_landscape.png + + + NSImage + options_disabled_landscape.png + + + NSImage + options_selected_landscape.png + + + NSImage + options_default_landscape.png + + + + + + + 264 + {65, 82} + + + + _NS:9 + NO + 24 + + Pause + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + pause_off_over_landscape.png + + + NSImage + pause_on_default_landscape.png + + + NSImage + pause_off_default_landscape.png + + + + + + + -2147483384 + {65, 82} + + + + _NS:9 + NO + 25 + + Start Conference + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + conference_over_landscape.png + + + NSImage + conference_default_landscape.png + + + + + + + 264 + {{195, 0}, {90, 82}} + + + + _NS:9 + NO + 26 + + Hangup + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + hangup_over_landscape.png + + + NSImage + hangup_default_landscape.png + + + + + + + 264 + {{415, 0}, {65, 82}} + + + + _NS:9 + NO + 27 + + Back + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + dialer_alt_over_landscape.png + + + NSImage + dialer_alt_back_default_landscape.png + + + NSImage + dialer_alt_default_landscape.png + + + + + + {{0, 238}, {480, 82}} + + + + _NS:9 + + 18 + IBCocoaTouchFramework + + + {480, 320} + + + + _NS:9 + + NO + + 3 + 3 + + IBCocoaTouchFramework + @@ -936,6 +1704,30 @@ 86 + + + landscapeView + + + + 137 + + + + portraitView + + + + 138 + + + + dialerButton + + + + 139 + optionsAddButton @@ -948,25 +1740,25 @@ option1Button - + - 103 + 149 option2Button - + - 104 + 150 option3Button - + - 105 + 151 @@ -994,15 +1786,6 @@ 28 - - - onOptionsAddClick: - - - 7 - - 93 - onOptionsClick: @@ -1014,30 +1797,83 @@ - onOption1Click: - + onOptionsAddClick: + 7 - 106 + 93 - onOption3Click: - + onPadClick: + 7 - 108 + 132 - onOption2Click: - + onConferenceClick: + 7 - 107 + 135 + + + + onOptionsClick: + + + 7 + + 134 + + + + waitView + + + + 129 + + + + onOptionsAddClick: + + + 7 + + 130 + + + + onOptionsClick: + + + 7 + + 136 + + + + onOptionsClick: + + + 7 + + 131 + + + + onOptionsTransferClick: + + + 7 + + 133 @@ -1068,7 +1904,7 @@ - callTabBar + Portrait View 5 @@ -1140,7 +1976,7 @@ 31 - + @@ -1153,9 +1989,9 @@ - - - + + + pad @@ -1240,10 +2076,223 @@ 99 - + background + + 100 + + + + + + + + + Landscape View + + + 101 + + + + + + + optionsView + + + 102 + + + + + + + + + + + + + + + + + + + + + pad + + + 114 + + + background + + + 115 + + + 1 + + + 116 + + + 2 + + + 117 + + + 3 + + + 118 + + + 4 + + + 119 + + + 5 + + + 120 + + + 6 + + + 121 + + + 7 + + + 122 + + + 8 + + + 123 + + + 9 + + + 124 + + + * + + + 125 + + + 0 + + + 126 + + + # + + + 127 + + + optionsAddButton + + + 128 + + + optionsTansferButton + + + 103 + + + + + + + + + + + + + + buttons + + + 106 + + + dialerButton + + + 110 + + + optionsButton + + + 113 + + + videoButton + + + 112 + + + microButton + + + 111 + + + speakerButton + + + 109 + + + pauseButton + + + 108 + + + conferenceButton + + + 107 + + + hangupButton + + + 105 + + + videoWaitView + + + 104 + + + mask + 88 @@ -1251,22 +2300,40 @@ optionsAddButton - 100 - + 140 + - option1Button + option1 - 101 - + 141 + - option3Button + option2 - 102 - + 142 + - option2Button + option3 + + + 146 + + + option1 + + + 147 + + + option2 + + + 148 + + + option3 @@ -1275,24 +2342,101 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIToggleButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton + UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UISpeakerButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIMicroButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIVideoButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1357,13 +2501,35 @@ - 108 + 151 - UICallBar + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICallBar + TPMultiLayoutViewController id id @@ -1659,18 +2825,29 @@ {640, 523} {209, 136} + {130, 163} {209, 136} + {130, 163} {209, 136} + {130, 163} {136, 95} {136, 95} {209, 136} + {130, 163} {209, 136} + {130, 163} {222, 136} + {180, 163} {222, 136} + {180, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {220, 113} {220, 113} {220, 113} @@ -1696,19 +2873,40 @@ {220, 113} {220, 113} {160, 134} + {129, 109} {160, 134} + {129, 109} {160, 134} + {129, 109} + {130, 163} + {130, 163} + {130, 163} + {130, 163} + {129, 109} + {129, 109} + {129, 109} {209, 136} + {130, 163} {209, 136} + {130, 163} {209, 136} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} 1181 diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 5f364e105..d26bf2fb2 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -171,7 +171,7 @@ if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -180,6 +180,7 @@ address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index c3a0437e7..5a1b8a9c6 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -35,15 +35,15 @@ - 288 + 290 - 292 + 290 - 292 + 290 {{0, 63}, {320, 250}} @@ -81,7 +81,7 @@ - 292 + 293 {{0, 48}, {320, 262}} @@ -97,7 +97,7 @@ - 292 + 293 {{80, 65}, {160, 170}} @@ -119,16 +119,15 @@ _NS:9 NO - NO IBCocoaTouchFramework - 292 + 290 - 292 + 290 {320, 63} @@ -143,7 +142,7 @@ - 292 + 290 {320, 63} @@ -155,7 +154,7 @@ - 292 + 294 {{10, 0}, {206, 51}} @@ -4573,7 +4572,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 289 {{224, 14}, {25, 25}} @@ -4584,7 +4583,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - -2147483356 + -2147483359 {{216, 6}, {41, 41}} @@ -4614,7 +4613,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - -2147483356 + -2147483359 {{216, 6}, {41, 41}} @@ -4648,10 +4647,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 289 {{262, 12}, {50, 29}} + _NS:9 NO YES @@ -4676,7 +4676,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 294 {{0, 5}, {200, 40}} @@ -4699,7 +4699,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE _NS:9 - NO IBCocoaTouchFramework @@ -4709,7 +4708,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE _NS:9 - NO IBCocoaTouchFramework @@ -4718,6 +4716,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 460} + _NS:9 NO @@ -4999,7 +4998,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 59 + 75 diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index ee472f99b..d19634296 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -21,6 +21,7 @@ #import #import "LinphoneManager.h" +#import "TPMultiLayoutViewController.h" @interface UICompositeViewDescription: NSObject{ NSString *name; @@ -30,6 +31,8 @@ NSString *tabBar; BOOL tabBarEnabled; BOOL fullscreen; + BOOL landscapeMode; + BOOL portraitMode; } @property (retain) NSString *name; @@ -39,6 +42,8 @@ @property (retain) NSString *tabBar; @property (assign) BOOL tabBarEnabled; @property (assign) BOOL fullscreen; +@property (assign) BOOL landscapeMode; +@property (assign) BOOL portraitMode; - (id)copy; - (BOOL)equal:(UICompositeViewDescription*) description; @@ -46,7 +51,9 @@ stateBarEnabled:(BOOL) stateBarEnabled tabBar:(NSString*)tabBar tabBarEnabled:(BOOL) tabBarEnabled - fullscreen:(BOOL) fullscreen; + fullscreen:(BOOL) fullscreen + landscapeMode:(BOOL) landscapeMode + portraitMode:(BOOL) portraitMode; @end @@ -56,7 +63,7 @@ @end -@interface UICompositeViewController : UIViewController { +@interface UICompositeViewController : TPMultiLayoutViewController { @private UIView *stateBarView; UIViewController *stateBarViewController; @@ -69,6 +76,7 @@ UICompositeViewDescription *currentViewDescription; CATransition *viewTransition; + UIDeviceOrientation currentOrientation; } @property (retain) CATransition *viewTransition; @@ -77,10 +85,9 @@ @property (nonatomic, retain) IBOutlet UIView* contentView; @property (nonatomic, retain) IBOutlet UIView* tabBarView; -- (void) changeView:(UICompositeViewDescription *)description; -- (void) setFullScreen:(BOOL) enabled; -- (void) setToolBarHidden:(BOOL) hidden; - -- (UIViewController *) getCurrentViewController; +- (void)changeView:(UICompositeViewDescription *)description; +- (void)setFullScreen:(BOOL) enabled; +- (void)setToolBarHidden:(BOOL) hidden; +- (UIViewController *)getCurrentViewController; @end diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 990d30c22..ea275ea23 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -28,6 +28,8 @@ @synthesize tabBar; @synthesize tabBarEnabled; @synthesize fullscreen; +@synthesize landscapeMode; +@synthesize portraitMode; - (id)copy { UICompositeViewDescription *copy = [UICompositeViewDescription alloc]; @@ -37,6 +39,8 @@ copy.tabBar = self.tabBar; copy.tabBarEnabled = self.tabBarEnabled; copy.fullscreen = self.fullscreen; + copy.landscapeMode = self.landscapeMode; + copy.portraitMode = self.portraitMode; return copy; } @@ -48,7 +52,9 @@ stateBarEnabled:(BOOL) astateBarEnabled tabBar:(NSString*)atabBar tabBarEnabled:(BOOL) atabBarEnabled - fullscreen:(BOOL) afullscreen { + fullscreen:(BOOL) afullscreen + landscapeMode:(BOOL) alandscapeMode + portraitMode:(BOOL) aportraitMode { self.name = aname; self.content = acontent; self.stateBar = astateBar; @@ -56,6 +62,8 @@ self.tabBar = atabBar; self.tabBarEnabled = atabBarEnabled; self.fullscreen = afullscreen; + self.landscapeMode = alandscapeMode; + self.portraitMode = aportraitMode; return self; } @@ -83,6 +91,7 @@ - (void)initUICompositeViewController { self->viewControllerCache = [[NSMutableDictionary alloc] init]; + self->currentOrientation = UIDeviceOrientationUnknown; } - (id)init{ @@ -110,11 +119,14 @@ } - (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [contentView release]; [stateBarView release]; [tabBarView release]; [viewControllerCache removeAllObjects]; [currentViewDescription release]; + [super dealloc]; } @@ -126,6 +138,12 @@ [contentViewController viewWillAppear:animated]; [tabBarViewController viewWillAppear:animated]; [stateBarViewController viewWillAppear:animated]; + [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(orientationChanged:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; } - (void)viewDidAppear:(BOOL)animated { @@ -140,6 +158,11 @@ [contentViewController viewWillDisappear:animated]; [tabBarViewController viewWillDisappear:animated]; [stateBarViewController viewWillDisappear:animated]; + [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIDeviceOrientationDidChangeNotification + object:nil]; } - (void)viewDidDisappear:(BOOL)animated { @@ -149,6 +172,47 @@ [stateBarViewController viewDidDisappear:animated]; } +- (void)orientationChanged:(NSNotification *)notification { + currentOrientation = [[UIDevice currentDevice] orientation]; +} + +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; + [super willRotateToInterfaceOrientation:correctOrientation duration:duration]; + [contentViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; + [tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; + [stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; + [self update:nil tabBar:nil fullscreen:nil]; +} + +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; + [super willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; + [contentViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; + [tabBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; + [stateBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; +} + +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [contentViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [tabBarViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [stateBarViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + if(currentViewDescription != nil) { + if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && [currentViewDescription portraitMode]) { + return YES; + } + if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && [currentViewDescription landscapeMode]) { + return YES; + } + return NO; + } + return YES; +} + #pragma mark - @@ -189,14 +253,55 @@ return controller; } +- (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + if(currentViewDescription != nil) { + if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { + if ([currentViewDescription portraitMode]) { + return interfaceOrientation; + } else { + return UIInterfaceOrientationLandscapeLeft; + } + } + if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { + if ([currentViewDescription landscapeMode]) { + return interfaceOrientation; + } else { + return UIInterfaceOrientationPortrait; + } + } + } + return UIInterfaceOrientationPortrait; +} + +- (void)updateInterfaceOrientation:(UIInterfaceOrientation)correctOrientation { + UIInterfaceOrientation orientation; + + orientation = self.interfaceOrientation; + [super willRotateToInterfaceOrientation:correctOrientation duration:0]; + [super didRotateFromInterfaceOrientation:orientation]; + + orientation = contentViewController.interfaceOrientation; + [contentViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [contentViewController didRotateFromInterfaceOrientation:orientation]; + + orientation = tabBarViewController.interfaceOrientation; + [tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [contentViewController didRotateFromInterfaceOrientation:orientation]; + + orientation = stateBarViewController.interfaceOrientation; + [stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [stateBarViewController didRotateFromInterfaceOrientation:orientation]; +} + #define IPHONE_STATUSBAR_HEIGHT 20 - (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar fullscreen:(NSNumber*)fullscreen { // Copy view description - UICompositeViewDescription *oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; + UICompositeViewDescription *oldViewDescription = nil; if(description != nil) { + oldViewDescription = currentViewDescription; currentViewDescription = [description copy]; // Animate only with a previous screen @@ -222,6 +327,22 @@ stateBarViewController = [self getCachedController:description.stateBar]; contentViewController = [self getCachedController:description.content]; tabBarViewController = [self getCachedController:description.tabBar]; + + // Update rotation + UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:currentOrientation]; + if([UIApplication sharedApplication].statusBarOrientation != correctOrientation) { + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIDeviceOrientationDidChangeNotification + object:nil]; + [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)correctOrientation]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(orientationChanged:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; + } + [self updateInterfaceOrientation:correctOrientation]; + } else { + oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; } if(currentViewDescription == nil) { diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index 9ee7c0b65..a2e27d760 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -32,12 +32,12 @@ - 274 + 301 - 303 - {{0, 23}, {320, 380}} + 314 + {{0, 23}, {320, 389}} @@ -46,39 +46,101 @@ 3 MCAwAA - YES + NO + 1 IBCocoaTouchFramework - 303 + 290 {320, 23} _NS:9 + NO YES + 2 IBCocoaTouchFramework - 303 - {{0, 400}, {320, 60}} + 266 + {{0, 420}, {320, 60}} _NS:9 + NO YES + 3 IBCocoaTouchFramework - {{0, 20}, {320, 460}} + {320, 480} - + NO + IBCocoaTouchFramework + + + + 301 + + + + 314 + {{0, 24}, {480, 231}} + + + + _NS:9 + + NO + 1 + IBCocoaTouchFramework + + + + 290 + {480, 23} + + + + _NS:9 + + NO + YES + 2 + IBCocoaTouchFramework + + + + 266 + {{0, 260}, {480, 60}} + + + _NS:9 + + NO + YES + 3 + IBCocoaTouchFramework + + + {480, 320} + + + + + NO + + 3 + 3 + IBCocoaTouchFramework @@ -116,6 +178,22 @@ 19 + + + portraitView + + + + 24 + + + + landscapeView + + + + 25 + @@ -134,6 +212,7 @@ + Portrait View -1 @@ -164,6 +243,36 @@ tabBar + + 20 + + + + + + + + Landscape View + + + 22 + + + stateBar + + + 23 + + + + content + + + 21 + + + tabBar + @@ -177,18 +286,46 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 19 + 25 - UICompositeViewController + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICompositeViewController + TPMultiLayoutViewController UIView UIView diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 0c95d3f48..8b2730618 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -118,7 +118,7 @@ if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -126,6 +126,7 @@ address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); diff --git a/Classes/LinphoneUI/UIStateBar.h b/Classes/LinphoneUI/UIStateBar.h index 76be85a2c..5d0806b0d 100644 --- a/Classes/LinphoneUI/UIStateBar.h +++ b/Classes/LinphoneUI/UIStateBar.h @@ -18,8 +18,9 @@ */ #import +#import "TPMultiLayoutViewController.h" -@interface UIStateBar : UIViewController { +@interface UIStateBar : TPMultiLayoutViewController { UIImageView* registrationStateImage; UILabel* registrationStateLabel; UIImageView* callQualityImage; diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index da0d611c3..45914a3b9 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -242,4 +242,23 @@ NSTimer *callSecurityTimer; } } + +#pragma mark - TPMultiLayoutViewController Functions + +- (NSDictionary*)attributesForView:(UIView*)view { + NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; + + [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"]; + [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"]; + [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"]; + + return attributes; +} + +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view { + view.frame = [[attributes objectForKey:@"frame"] CGRectValue]; + view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue]; + view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue]; +} + @end diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index 23f0c3c49..08f79fb0a 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -44,9 +44,10 @@ _NS:9 + 1 NO IBCocoaTouchFramework - + NSImage statebar_background.png @@ -59,9 +60,10 @@ _NS:567 + 2 NO IBCocoaTouchFramework - + NSImage led_disconnected.png @@ -77,21 +79,22 @@ NO YES 7 + 3 NO IBCocoaTouchFramework CARAMBA - + 3 MC42NjY2NjY2NjY3AA 1 10 - + 1 17 - + Helvetica 17 16 @@ -100,22 +103,25 @@ 292 - {{219, 3}, {27, 17}} + {{252, 3}, {27, 17}} _NS:567 + 4 NO IBCocoaTouchFramework 292 - {{254, 3}, {27, 17}} + {{287, 3}, {27, 17}} + _NS:567 1 + 5 NO IBCocoaTouchFramework @@ -125,12 +131,98 @@ _NS:196 - + 3 MCAwAA IBCocoaTouchFramework + + + 292 + + + + 292 + {480, 23} + + + + _NS:9 + 1 + NO + IBCocoaTouchFramework + + + + + 292 + {{6, 6}, {10, 10}} + + + + _NS:567 + 2 + NO + IBCocoaTouchFramework + + + + + 292 + {{22, 0}, {189, 20}} + + + + _NS:328 + NO + YES + 7 + 3 + NO + IBCocoaTouchFramework + CARAMBA + + + 1 + 10 + + + + + + 292 + {{412, 3}, {27, 17}} + + + + _NS:567 + 4 + NO + IBCocoaTouchFramework + + + + 292 + {{447, 3}, {27, 17}} + + + + _NS:567 + 1 + 5 + NO + IBCocoaTouchFramework + + + {480, 23} + + + + _NS:196 + + IBCocoaTouchFramework + @@ -174,6 +266,22 @@ 18 + + + portraitView + + + + 25 + + + + landscapeView + + + + 26 + @@ -236,6 +344,48 @@ callSecurityImage + + 19 + + + + + + + + + + + + 20 + + + callSecurityImage + + + 21 + + + callQualityImage + + + 22 + + + background + + + 23 + + + registrationStateLabel + + + 24 + + + registrationStateImage + @@ -246,6 +396,12 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -254,13 +410,35 @@ - 18 + 26 - UIStateBar + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UIStateBar + TPMultiLayoutViewController UIImageView UIImageView diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m index c538d8028..88eec26d8 100644 --- a/Classes/Model/ChatModel.m +++ b/Classes/Model/ChatModel.m @@ -68,14 +68,22 @@ [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return; } - const char *sql = [[NSString stringWithFormat:@"INSERT INTO chat (localContact, remoteContact, direction, message, time, read) VALUES (\"%@\", \"%@\", %i, \"%@\", %f, %i)", - localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], [read intValue]] UTF8String]; + + const char *sql = "INSERT INTO chat (localContact, remoteContact, direction, message, time, read) VALUES (@LOCALCONTACT, @REMOTECONTACT, @DIRECTION, @MESSAGE, @TIME, @READ)"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [localContact UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_text(sqlStatement, 2, [remoteContact UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_int(sqlStatement, 3, [direction intValue]); + sqlite3_bind_text(sqlStatement, 4, [message UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_double(sqlStatement, 5, [time timeIntervalSince1970]); + sqlite3_bind_int(sqlStatement, 6, [read intValue]); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); @@ -95,14 +103,16 @@ return nil; } - const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE id=%i", - [chatId intValue]] UTF8String]; + const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE id=@ID"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return nil; } + // Prepare statement + sqlite3_bind_int(sqlStatement, 1, [chatId intValue]); + ChatModel* line = nil; int err = sqlite3_step(sqlStatement); if (err == SQLITE_ROW) { @@ -124,14 +134,22 @@ return; } - const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET localContact=\"%@\", remoteContact=\"%@\", direction=%i, message=\"%@\", time=%f, read=%i WHERE id=%i", - localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], [read intValue], [chatId intValue]] UTF8String]; + const char *sql = "UPDATE chat SET localContact=@LOCALCONTACT, remoteContact=@REMOTECONTACT, direction=@DIRECTION, message=@MESSAGE, time=@TIME, read=@READ WHERE id=@ID"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [localContact UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_text(sqlStatement, 2, [remoteContact UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_int(sqlStatement, 3, [direction intValue]); + sqlite3_bind_text(sqlStatement, 4, [message UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_double(sqlStatement, 5, [time timeIntervalSince1970]); + sqlite3_bind_int(sqlStatement, 6, [read intValue]); + sqlite3_bind_int(sqlStatement, 7, [chatId intValue]); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); @@ -148,14 +166,16 @@ return; } - const char *sql = [[NSString stringWithFormat:@"DELETE FROM chat WHERE id=%i", - [chatId intValue]] UTF8String]; + const char *sql = "DELETE FROM chat WHERE id=@ID"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_int(sqlStatement, 1, [chatId intValue]); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); @@ -178,7 +198,7 @@ const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat GROUP BY remoteContact ORDER BY time DESC"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)]; return array; } @@ -208,14 +228,16 @@ return array; } - const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE remoteContact=\"%@\" ORDER BY time ASC", - contact] UTF8String]; + const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE remoteContact=@REMOTECONTACT ORDER BY time ASC"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)]; return array; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [contact UTF8String], -1, SQLITE_STATIC); + int err; while ((err = sqlite3_step(sqlStatement)) == SQLITE_ROW) { ChatModel *line = [[ChatModel alloc] initWithData:sqlStatement]; @@ -240,14 +262,16 @@ return; } - const char *sql = [[NSString stringWithFormat:@"DELETE FROM chat WHERE remoteContact=\"%@\"", - contact] UTF8String]; + const char *sql = "DELETE FROM chat WHERE remoteContact=@REMOTECONTACT"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [contact UTF8String], -1, SQLITE_STATIC); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); @@ -265,9 +289,9 @@ return count; } - const char *sql = [[NSString stringWithFormat:@"SELECT count(*) FROM chat WHERE read=0"] UTF8String]; + const char *sql = "SELECT count(*) FROM chat WHERE read=0"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return count; } @@ -291,14 +315,16 @@ return; } - const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET read=1 WHERE remoteContact=\"%@\"", - contact] UTF8String]; + const char *sql = "UPDATE chat SET read=1 WHERE remoteContact=@REMOTECONTACT"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [contact UTF8String], -1, SQLITE_STATIC); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 4cff2c52d..c6f856a8e 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -86,7 +86,11 @@ static PhoneMainView* phoneMainViewInstance=nil; [super viewDidLoad]; [self.view addSubview: mainViewController.view]; - [mainViewController.view setFrame:[self.view frame]]; + + if ([[UIDevice currentDevice].systemVersion doubleValue] >= 5.0) { + UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation]; + [self willRotateToInterfaceOrientation:interfaceOrientation duration:0.2f]; + } } - (void)viewWillAppear:(BOOL)animated { @@ -162,6 +166,25 @@ static PhoneMainView* phoneMainViewInstance=nil; self->loadCount--; } +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [mainViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; +} + +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [mainViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; +} + +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [mainViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; +} + +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [mainViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; +} + #pragma mark - Event Functions @@ -434,6 +457,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } } + #pragma mark - ActionSheet Functions /* MODIFICATION disable chat @@ -478,7 +502,7 @@ static PhoneMainView* phoneMainViewInstance=nil; if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -486,6 +510,7 @@ static PhoneMainView* phoneMainViewInstance=nil; address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 801b7f18d..6ff46115c 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -47,6 +47,7 @@ _NS:9 + 1 NO IBCocoaTouchFramework @@ -180,7 +181,7 @@ - 212 + 216 @@ -205,8 +206,48 @@ - UICompositeViewController + TPMultiLayoutViewController UIViewController + + YES + + YES + landscapeView + portraitView + + + YES + UIView + UIView + + + + YES + + YES + landscapeView + portraitView + + + YES + + landscapeView + UIView + + + portraitView + UIView + + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICompositeViewController + TPMultiLayoutViewController YES diff --git a/Classes/PhoneViewController-ipad.xib b/Classes/PhoneViewController-ipad.xib deleted file mode 100644 index 0b5db5b31..000000000 --- a/Classes/PhoneViewController-ipad.xib +++ /dev/null @@ -1,1140 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUIViewController - IBUIButton - IBUIView - IBUITextField - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - - 274 - - - - 292 - - - - 292 - {{34, 20}, {699, 78}} - - - - - 3 - MQA - - NO - NO - IBIPadFramework - 0 - - sip: - - 3 - MAA - - 2 - - - YES - 15 - - 1 - 3 - IBCocoaTouchFramework - - 1 - - Helvetica - Helvetica - 0 - 36 - - - Helvetica - 36 - 16 - - - - - 292 - {{660, 25}, {66, 68}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - effacer.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{413, 277}, {322, 66}} - - - - _NS:241 - NO - IBIPadFramework - 0 - 0 - Switch camera - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - clavier-01-108px.png - - - 2 - 15 - - - - - - -2147483356 - {{573, 112.5}, {160, 231}} - - - - NO - NO - IBIPadFramework - 0 - 0 - Back - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - clavier-01-160px.png - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - -2147483356 - {{415, 112}, {160, 231}} - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - startcall-green.png - - - - - - - - 292 - {{413, 111}, {320, 167}} - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - startcall-gray.png - - - - - - - - - 292 - {{32, 112}, {107, 66}} - - - - - 1 - MC40MDAwMDAwMSAxIDEgMAA - - NO - NO - IBIPadFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - clavier-01-106px.png - - - - - - - 292 - {{139, 112}, {106, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 2 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{245, 112}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{245, 178}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{139, 178}, {106, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{32, 178}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{32, 244}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{139, 244}, {106, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 8 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{245, 244}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{139, 309}, {106, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 0+ - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{32, 309}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - * - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{245, 309}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - # - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{415, 351}, {320, 20}} - - - _NS:212 - - 3 - MCAwAA - - IBIPadFramework - - - {{0, 569}, {768, 386}} - - - - _NS:212 - - 3 - MC4zMzMzMzMzMzMzIDAuNQA - - IBIPadFramework - - - {{0, 20}, {768, 1004}} - - - - _NS:212 - - IBIPadFramework - - - 2 - - - 1 - 1 - - IBIPadFramework - NO - - - - - - - eight - - - - 45 - - - - five - - - - 47 - - - - hash - - - - 49 - - - - nine - - - - 50 - - - - one - - - - 51 - - - - seven - - - - 52 - - - - star - - - - 54 - - - - three - - - - 57 - - - - two - - - - 58 - - - - view - - - - 59 - - - - zero - - - - 60 - - - - address - - - - 39 - - - - erase - - - - 46 - - - - backToCallView - - - - 40 - - - - switchCamera - - - - 56 - - - - callShort - - - - 42 - - - - callLarge - - - - 41 - - - - statusViewHolder - - - - 62 - - - - four - - - - 63 - - - - six - - - - 64 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - - - - - - 4 - - - - - - - - 24 - - - - - - - - - - - - - - - - - - - - - - - - - - 33 - - - - - 28 - - - - - 34 - - - - - 27 - - - - - 26 - - - - - 35 - - - - - 29 - - - - - 36 - - - - - 32 - - - - - 31 - - - - - 25 - - - - - 30 - - - - - 23 - - - Address - - - 22 - - - Erase - - - 18 - - - back - - - 38 - - - - - 19 - - - Call-short - - - 20 - - - Call-large - - - 61 - - - status_holder - - - - - PhoneViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICallButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICallButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIEraseButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 64 - - - - - MainScreenWithVideoPreview - UIViewController - - PhoneViewController - UIWindow - - - - phoneMainView - PhoneViewController - - - window - UIWindow - - - - IBProjectSource - ./Classes/MainScreenWithVideoPreview.h - - - - PhoneViewController - UIViewController - - UITextField - UIButton - UIButton - UIButton - UIView - UIButton - UIEraseButton - UIButton - UIButton - UIButton - MainScreenWithVideoPreview - UITabBarController - UIButton - UIButton - UIButton - UIButton - UIButton - UILabel - UIView - UIButton - UIButton - UIButton - UIButton - - - - address - UITextField - - - backToCallView - UIButton - - - callLarge - UIButton - - - callShort - UIButton - - - dialerView - UIView - - - eight - UIButton - - - erase - UIEraseButton - - - five - UIButton - - - four - UIButton - - - hash - UIButton - - - mMainScreenWithVideoPreview - MainScreenWithVideoPreview - - - myTabBarController - UITabBarController - - - nine - UIButton - - - one - UIButton - - - seven - UIButton - - - six - UIButton - - - star - UIButton - - - status - UILabel - - - statusViewHolder - UIView - - - switchCamera - UIButton - - - three - UIButton - - - two - UIButton - - - zero - UIButton - - - - IBProjectSource - ./Classes/PhoneViewController.h - - - - UICallButton - UIButton - - IBProjectSource - ./Classes/UICallButton.h - - - - UIDigitButton - UIButton - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIEraseButton - UIButton - - IBProjectSource - ./Classes/UIEraseButton.h - - - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - - {106, 60} - {108, 60} - {160, 60} - {66, 65} - {60, 52} - {60, 52} - - 1181 - - diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index c2d268efb..69f5085d6 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -51,7 +51,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar: @"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } @@ -73,6 +75,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewDidLoad { [super viewDidLoad]; + settingsController.showDoneButton = FALSE; settingsController.delegate = self; settingsController.showCreditsFooter = FALSE; settingsController.hiddenKeys = [self findHiddenKeys]; diff --git a/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h new file mode 100755 index 000000000..460480c33 --- /dev/null +++ b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h @@ -0,0 +1,27 @@ +// +// TPMultiLayoutViewController.h +// +// Created by Michael Tyson on 14/08/2011. +// Copyright 2011 A Tasty Pixel. All rights reserved. +// + +#import + +@interface TPMultiLayoutViewController : UIViewController { + UIView *portraitView; + UIView *landscapeView; + + @private + NSDictionary *portraitAttributes; + NSDictionary *landscapeAttributes; + BOOL viewIsCurrentlyPortrait; +} + +// Call directly to use with custom animation (override willRotateToInterfaceOrientation to disable the switch there) +- (void)applyLayoutForInterfaceOrientation:(UIInterfaceOrientation)newOrientation; + +@property (nonatomic, retain) IBOutlet UIView *landscapeView; +@property (nonatomic, retain) IBOutlet UIView *portraitView; +@property (assign) BOOL viewIsCurrentlyPortrait; + +@end diff --git a/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m new file mode 100755 index 000000000..f57fdf46d --- /dev/null +++ b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m @@ -0,0 +1,238 @@ +// +// TPMultiLayoutViewController.m +// +// Created by Michael Tyson on 14/08/2011. +// Copyright 2011 A Tasty Pixel. All rights reserved. +// + +#import "TPMultiLayoutViewController.h" + +#define VERBOSE_MATCH_FAIL 1 // Comment this out to be less verbose when associated views can't be found + +@interface TPMultiLayoutViewController () +- (NSDictionary*)attributeTableForViewHierarchy:(UIView*)rootView associateWithViewHierarchy:(UIView*)associatedRootView; +- (void)addAttributesForSubviewHierarchy:(UIView*)view associatedWithSubviewHierarchy:(UIView*)associatedView toTable:(NSMutableDictionary*)table; +- (UIView*)findAssociatedViewForView:(UIView*)view amongViews:(NSArray*)views; +- (void)applyAttributeTable:(NSDictionary*)table toViewHierarchy:(UIView*)view; +- (NSDictionary*)attributesForView:(UIView*)view; +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view; +- (BOOL)shouldDescendIntoSubviewsOfView:(UIView*)view; +@end + +@implementation TPMultiLayoutViewController +@synthesize portraitView, landscapeView, viewIsCurrentlyPortrait; + +#pragma mark - View lifecycle + +- (void)viewDidLoad { + [super viewDidLoad]; + + // Construct attribute tables + portraitAttributes = [[self attributeTableForViewHierarchy:portraitView associateWithViewHierarchy:self.view] retain]; + landscapeAttributes = [[self attributeTableForViewHierarchy:landscapeView associateWithViewHierarchy:self.view] retain]; + viewIsCurrentlyPortrait = (self.view == portraitView); + + // Don't need to retain the original template view hierarchies any more + self.portraitView = nil; + self.landscapeView = nil; +} + +- (void)viewDidUnload { + [super viewDidUnload]; + + [portraitAttributes release]; + portraitAttributes = nil; + [landscapeAttributes release]; + landscapeAttributes = nil; +} + +- (void)dealloc { + [portraitAttributes release]; + portraitAttributes = nil; + [landscapeAttributes release]; + landscapeAttributes = nil; + + [super dealloc]; +} + +- (void)viewWillAppear:(BOOL)animated { + // Display correct layout for orientation + /*if ( (UIInterfaceOrientationIsPortrait(self.interfaceOrientation) && !viewIsCurrentlyPortrait) || + (UIInterfaceOrientationIsLandscape(self.interfaceOrientation) && viewIsCurrentlyPortrait) ) { + [self applyLayoutForInterfaceOrientation:self.interfaceOrientation]; + }*/ + [super viewWillAppear:animated]; +} + +#pragma mark - Rotation + +- (void)applyLayoutForInterfaceOrientation:(UIInterfaceOrientation)newOrientation { + NSDictionary *table = UIInterfaceOrientationIsPortrait(newOrientation) ? portraitAttributes : landscapeAttributes; + [self applyAttributeTable:table toViewHierarchy:self.view]; + viewIsCurrentlyPortrait = UIInterfaceOrientationIsPortrait(newOrientation); +} + +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + if ( (UIInterfaceOrientationIsPortrait(toInterfaceOrientation) && !viewIsCurrentlyPortrait) || + (UIInterfaceOrientationIsLandscape(toInterfaceOrientation) && viewIsCurrentlyPortrait) ) { + [self applyLayoutForInterfaceOrientation:toInterfaceOrientation]; + } +} + +#pragma mark - Helpers + +- (NSDictionary*)attributeTableForViewHierarchy:(UIView*)rootView associateWithViewHierarchy:(UIView*)associatedRootView { + NSMutableDictionary *table = [NSMutableDictionary dictionary]; + [self addAttributesForSubviewHierarchy:rootView associatedWithSubviewHierarchy:associatedRootView toTable:table]; + return table; +} + +- (void)addAttributesForSubviewHierarchy:(UIView*)view associatedWithSubviewHierarchy:(UIView*)associatedView toTable:(NSMutableDictionary*)table { + [table setObject:[self attributesForView:view] forKey:[NSValue valueWithPointer:associatedView]]; + + if ( ![self shouldDescendIntoSubviewsOfView:view] ) return; + + for ( UIView *subview in view.subviews ) { + UIView *associatedSubView = (view == associatedView ? subview : [self findAssociatedViewForView:subview amongViews:associatedView.subviews]); + if ( associatedSubView ) { + [self addAttributesForSubviewHierarchy:subview associatedWithSubviewHierarchy:associatedSubView toTable:table]; + } + } +} + +- (UIView*)findAssociatedViewForView:(UIView*)view amongViews:(NSArray*)views { + // First try to match tag + if ( view.tag != 0 ) { + UIView *associatedView = [[views filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"tag = %d", view.tag]] lastObject]; + if ( associatedView ) return associatedView; + } + + // Next, try to match class, targets and actions, if it's a control + if ( [view isKindOfClass:[UIControl class]] && [[(UIControl*)view allTargets] count] > 0 ) { + for ( UIView *otherView in views ) { + if ( [otherView isKindOfClass:[view class]] + && [[(UIControl*)otherView allTargets] isEqualToSet:[(UIControl*)view allTargets]] + && [(UIControl*)otherView allControlEvents] == [(UIControl*)view allControlEvents] ) { + // Try to match all actions and targets for each associated control event + BOOL allActionsMatch = YES; + UIControlEvents controlEvents = [(UIControl*)otherView allControlEvents]; + for ( id target in [(UIControl*)otherView allTargets] ) { + // Iterate over each bit in the UIControlEvents bitfield + for ( NSInteger i=0; i ", NSStringFromClass([v class])] atIndex:0]; + } + NSLog(@"Couldn't find match for %@%@", path, NSStringFromClass([view class])); + +#endif + + return nil; +} + +- (void)applyAttributeTable:(NSDictionary*)table toViewHierarchy:(UIView*)view { + NSDictionary *attributes = [table objectForKey:[NSValue valueWithPointer:view]]; + if ( attributes ) { + [self applyAttributes:attributes toView:view]; + } + + //if ( view.hidden ) return; + + if ( ![self shouldDescendIntoSubviewsOfView:view] ) return; + + for ( UIView *subview in view.subviews ) { + [self applyAttributeTable:table toViewHierarchy:subview]; + } +} + +- (NSDictionary*)attributesForView:(UIView*)view { + NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; + + [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"]; + [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"]; + [attributes setObject:[NSNumber numberWithBool:view.hidden] forKey:@"hidden"]; + [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"]; + + return attributes; +} + +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view { + view.frame = [[attributes objectForKey:@"frame"] CGRectValue]; + view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue]; + view.hidden = [[attributes objectForKey:@"hidden"] boolValue]; + view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue]; +} + +- (BOOL)shouldDescendIntoSubviewsOfView:(UIView*)view { + if ( [view isKindOfClass:[UISlider class]] || + [view isKindOfClass:[UISwitch class]] || + [view isKindOfClass:[UITextField class]] || + [view isKindOfClass:[UIWebView class]] || + [view isKindOfClass:[UITableView class]] || + [view isKindOfClass:[UIPickerView class]] || + [view isKindOfClass:[UIDatePicker class]] || + [view isKindOfClass:[UITextView class]] || + [view isKindOfClass:[UIProgressView class]] || + [view isKindOfClass:[UISegmentedControl class]] ) return NO; + return YES; +} + +@end \ No newline at end of file diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 348e2022f..3f452c51d 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -88,7 +88,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:nil tabBarEnabled:false - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Resources/conference_default_landscape.png b/Resources/conference_default_landscape.png new file mode 100644 index 000000000..c3f3c62b6 Binary files /dev/null and b/Resources/conference_default_landscape.png differ diff --git a/Resources/conference_over_landscape.png b/Resources/conference_over_landscape.png new file mode 100644 index 000000000..cb6ff9a91 Binary files /dev/null and b/Resources/conference_over_landscape.png differ diff --git a/Resources/dialer_alt_back_default_landscape.png b/Resources/dialer_alt_back_default_landscape.png new file mode 100644 index 000000000..b662db31f Binary files /dev/null and b/Resources/dialer_alt_back_default_landscape.png differ diff --git a/Resources/dialer_alt_back_over_landscape.png b/Resources/dialer_alt_back_over_landscape.png new file mode 100644 index 000000000..50d9d1753 Binary files /dev/null and b/Resources/dialer_alt_back_over_landscape.png differ diff --git a/Resources/dialer_alt_default_landscape.png b/Resources/dialer_alt_default_landscape.png new file mode 100644 index 000000000..f1b2d39cf Binary files /dev/null and b/Resources/dialer_alt_default_landscape.png differ diff --git a/Resources/dialer_alt_over_landscape.png b/Resources/dialer_alt_over_landscape.png new file mode 100644 index 000000000..d07a14243 Binary files /dev/null and b/Resources/dialer_alt_over_landscape.png differ diff --git a/Resources/hangup_default_landscape.png b/Resources/hangup_default_landscape.png new file mode 100644 index 000000000..e7f49a1c6 Binary files /dev/null and b/Resources/hangup_default_landscape.png differ diff --git a/Resources/hangup_over_landscape.png b/Resources/hangup_over_landscape.png new file mode 100644 index 000000000..ffc1fb469 Binary files /dev/null and b/Resources/hangup_over_landscape.png differ diff --git a/Resources/micro_off_default_landscape.png b/Resources/micro_off_default_landscape.png new file mode 100644 index 000000000..abb1dcef6 Binary files /dev/null and b/Resources/micro_off_default_landscape.png differ diff --git a/Resources/micro_off_disabled_landscape.png b/Resources/micro_off_disabled_landscape.png new file mode 100644 index 000000000..fadfcbafa Binary files /dev/null and b/Resources/micro_off_disabled_landscape.png differ diff --git a/Resources/micro_off_over_landscape.png b/Resources/micro_off_over_landscape.png new file mode 100644 index 000000000..d19bfcad5 Binary files /dev/null and b/Resources/micro_off_over_landscape.png differ diff --git a/Resources/micro_on_default_landscape.png b/Resources/micro_on_default_landscape.png new file mode 100644 index 000000000..2a551232d Binary files /dev/null and b/Resources/micro_on_default_landscape.png differ diff --git a/Resources/micro_on_disabled_landscape.png b/Resources/micro_on_disabled_landscape.png new file mode 100644 index 000000000..d3632a238 Binary files /dev/null and b/Resources/micro_on_disabled_landscape.png differ diff --git a/Resources/micro_on_over_landscape.png b/Resources/micro_on_over_landscape.png new file mode 100644 index 000000000..bafe54db7 Binary files /dev/null and b/Resources/micro_on_over_landscape.png differ diff --git a/Resources/options_add_default_landscape.png b/Resources/options_add_default_landscape.png new file mode 100644 index 000000000..9da363493 Binary files /dev/null and b/Resources/options_add_default_landscape.png differ diff --git a/Resources/options_add_disabled_landscape.png b/Resources/options_add_disabled_landscape.png new file mode 100644 index 000000000..bc55521e0 Binary files /dev/null and b/Resources/options_add_disabled_landscape.png differ diff --git a/Resources/options_add_over_landscape.png b/Resources/options_add_over_landscape.png new file mode 100644 index 000000000..d0e991647 Binary files /dev/null and b/Resources/options_add_over_landscape.png differ diff --git a/Resources/options_default_landscape.png b/Resources/options_default_landscape.png new file mode 100644 index 000000000..7667b014a Binary files /dev/null and b/Resources/options_default_landscape.png differ diff --git a/Resources/options_disabled_landscape.png b/Resources/options_disabled_landscape.png new file mode 100644 index 000000000..ba6b19454 Binary files /dev/null and b/Resources/options_disabled_landscape.png differ diff --git a/Resources/options_over_landscape.png b/Resources/options_over_landscape.png new file mode 100644 index 000000000..56f739db5 Binary files /dev/null and b/Resources/options_over_landscape.png differ diff --git a/Resources/options_selected_landscape.png b/Resources/options_selected_landscape.png new file mode 100644 index 000000000..d25a73d2d Binary files /dev/null and b/Resources/options_selected_landscape.png differ diff --git a/Resources/options_transfer_default_landscape.png b/Resources/options_transfer_default_landscape.png new file mode 100644 index 000000000..9ba3017f4 Binary files /dev/null and b/Resources/options_transfer_default_landscape.png differ diff --git a/Resources/options_transfer_disabled_landscape.png b/Resources/options_transfer_disabled_landscape.png new file mode 100644 index 000000000..179f16614 Binary files /dev/null and b/Resources/options_transfer_disabled_landscape.png differ diff --git a/Resources/options_transfer_over_landscape.png b/Resources/options_transfer_over_landscape.png new file mode 100644 index 000000000..1f5950fca Binary files /dev/null and b/Resources/options_transfer_over_landscape.png differ diff --git a/Resources/pause_off_default_landscape.png b/Resources/pause_off_default_landscape.png new file mode 100644 index 000000000..4c73470f8 Binary files /dev/null and b/Resources/pause_off_default_landscape.png differ diff --git a/Resources/pause_off_over_landscape.png b/Resources/pause_off_over_landscape.png new file mode 100644 index 000000000..66545c2d4 Binary files /dev/null and b/Resources/pause_off_over_landscape.png differ diff --git a/Resources/pause_on_default_landscape.png b/Resources/pause_on_default_landscape.png new file mode 100644 index 000000000..58c98a583 Binary files /dev/null and b/Resources/pause_on_default_landscape.png differ diff --git a/Resources/pause_on_over_landscape.png b/Resources/pause_on_over_landscape.png new file mode 100644 index 000000000..37b2875db Binary files /dev/null and b/Resources/pause_on_over_landscape.png differ diff --git a/Resources/speaker_off_default_landscape.png b/Resources/speaker_off_default_landscape.png new file mode 100644 index 000000000..b77b4ef25 Binary files /dev/null and b/Resources/speaker_off_default_landscape.png differ diff --git a/Resources/speaker_off_disabled_landscape.png b/Resources/speaker_off_disabled_landscape.png new file mode 100644 index 000000000..4c844e33f Binary files /dev/null and b/Resources/speaker_off_disabled_landscape.png differ diff --git a/Resources/speaker_off_over_landscape.png b/Resources/speaker_off_over_landscape.png new file mode 100644 index 000000000..4049e7b75 Binary files /dev/null and b/Resources/speaker_off_over_landscape.png differ diff --git a/Resources/speaker_on_default_landscape.png b/Resources/speaker_on_default_landscape.png new file mode 100644 index 000000000..90f75c124 Binary files /dev/null and b/Resources/speaker_on_default_landscape.png differ diff --git a/Resources/speaker_on_disabled_landscape.png b/Resources/speaker_on_disabled_landscape.png new file mode 100644 index 000000000..1235ab82b Binary files /dev/null and b/Resources/speaker_on_disabled_landscape.png differ diff --git a/Resources/speaker_on_over_landscape.png b/Resources/speaker_on_over_landscape.png new file mode 100644 index 000000000..e3ff2f8fd Binary files /dev/null and b/Resources/speaker_on_over_landscape.png differ diff --git a/Resources/statebar_background_landscape.png b/Resources/statebar_background_landscape.png new file mode 100644 index 000000000..26f042d99 Binary files /dev/null and b/Resources/statebar_background_landscape.png differ diff --git a/Resources/transfer_default_landscape.png b/Resources/transfer_default_landscape.png new file mode 100644 index 000000000..dc18399b4 Binary files /dev/null and b/Resources/transfer_default_landscape.png differ diff --git a/Resources/transfer_over_landscape.png b/Resources/transfer_over_landscape.png new file mode 100644 index 000000000..17740ee06 Binary files /dev/null and b/Resources/transfer_over_landscape.png differ diff --git a/Resources/video_off_default_landscape.png b/Resources/video_off_default_landscape.png new file mode 100644 index 000000000..037a41397 Binary files /dev/null and b/Resources/video_off_default_landscape.png differ diff --git a/Resources/video_off_disabled_landscape.png b/Resources/video_off_disabled_landscape.png new file mode 100644 index 000000000..80cc968b9 Binary files /dev/null and b/Resources/video_off_disabled_landscape.png differ diff --git a/Resources/video_off_over_landscape.png b/Resources/video_off_over_landscape.png new file mode 100644 index 000000000..afdbe9e4e Binary files /dev/null and b/Resources/video_off_over_landscape.png differ diff --git a/Resources/video_on_default_landscape.png b/Resources/video_on_default_landscape.png new file mode 100644 index 000000000..46a88e074 Binary files /dev/null and b/Resources/video_on_default_landscape.png differ diff --git a/Resources/video_on_disabled_landscape.png b/Resources/video_on_disabled_landscape.png new file mode 100644 index 000000000..3074faae3 Binary files /dev/null and b/Resources/video_on_disabled_landscape.png differ diff --git a/Resources/video_on_over_landscape.png b/Resources/video_on_over_landscape.png new file mode 100644 index 000000000..665973f26 Binary files /dev/null and b/Resources/video_on_over_landscape.png differ diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 310e11363..3de5c7a5e 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -139,8 +139,6 @@ 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; - 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */; }; - 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */; }; 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; }; 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -498,6 +496,92 @@ D3C2814C15A2D38D0098AA42 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; D3C2815215A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; D3C2815315A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; + D3C31A3215BD8DED008ED271 /* conference_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */; }; + D3C31A3315BD8DED008ED271 /* conference_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */; }; + D3C31A3415BD8DED008ED271 /* conference_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */; }; + D3C31A3515BD8DED008ED271 /* conference_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */; }; + D3C31A3615BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */; }; + D3C31A3715BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */; }; + D3C31A3815BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */; }; + D3C31A3915BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */; }; + D3C31A3A15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */; }; + D3C31A3B15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */; }; + D3C31A3C15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */; }; + D3C31A3D15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */; }; + D3C31A3E15BD8DED008ED271 /* hangup_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */; }; + D3C31A3F15BD8DED008ED271 /* hangup_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */; }; + D3C31A4015BD8DED008ED271 /* hangup_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */; }; + D3C31A4115BD8DED008ED271 /* hangup_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */; }; + D3C31A4215BD8DED008ED271 /* micro_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */; }; + D3C31A4315BD8DED008ED271 /* micro_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */; }; + D3C31A4415BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */; }; + D3C31A4515BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */; }; + D3C31A4615BD8DED008ED271 /* micro_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */; }; + D3C31A4715BD8DED008ED271 /* micro_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */; }; + D3C31A4815BD8DED008ED271 /* micro_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */; }; + D3C31A4915BD8DED008ED271 /* micro_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */; }; + D3C31A4A15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */; }; + D3C31A4B15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */; }; + D3C31A4C15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */; }; + D3C31A4D15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */; }; + D3C31A4E15BD8DED008ED271 /* options_add_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */; }; + D3C31A4F15BD8DED008ED271 /* options_add_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */; }; + D3C31A5015BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */; }; + D3C31A5115BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */; }; + D3C31A5215BD8DED008ED271 /* options_add_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */; }; + D3C31A5315BD8DED008ED271 /* options_add_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */; }; + D3C31A5415BD8DED008ED271 /* options_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1815BD8DED008ED271 /* options_default_landscape.png */; }; + D3C31A5515BD8DED008ED271 /* options_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1815BD8DED008ED271 /* options_default_landscape.png */; }; + D3C31A5615BD8DED008ED271 /* options_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */; }; + D3C31A5715BD8DED008ED271 /* options_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */; }; + D3C31A5815BD8DED008ED271 /* options_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */; }; + D3C31A5915BD8DED008ED271 /* options_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */; }; + D3C31A5A15BD8DED008ED271 /* options_selected_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */; }; + D3C31A5B15BD8DED008ED271 /* options_selected_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */; }; + D3C31A5C15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */; }; + D3C31A5D15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */; }; + D3C31A5E15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */; }; + D3C31A5F15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */; }; + D3C31A6015BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */; }; + D3C31A6115BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */; }; + D3C31A6215BD8DED008ED271 /* pause_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */; }; + D3C31A6315BD8DED008ED271 /* pause_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */; }; + D3C31A6415BD8DED008ED271 /* pause_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */; }; + D3C31A6515BD8DED008ED271 /* pause_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */; }; + D3C31A6615BD8DED008ED271 /* pause_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */; }; + D3C31A6715BD8DED008ED271 /* pause_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */; }; + D3C31A6815BD8DED008ED271 /* pause_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */; }; + D3C31A6915BD8DED008ED271 /* pause_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */; }; + D3C31A6A15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */; }; + D3C31A6B15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */; }; + D3C31A6C15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */; }; + D3C31A6D15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */; }; + D3C31A6E15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */; }; + D3C31A6F15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */; }; + D3C31A7015BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */; }; + D3C31A7115BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */; }; + D3C31A7215BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */; }; + D3C31A7315BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */; }; + D3C31A7415BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */; }; + D3C31A7515BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */; }; + D3C31A7615BD8DED008ED271 /* statebar_background_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */; }; + D3C31A7715BD8DED008ED271 /* statebar_background_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */; }; + D3C31A7815BD8DED008ED271 /* transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */; }; + D3C31A7915BD8DED008ED271 /* transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */; }; + D3C31A7A15BD8DED008ED271 /* transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */; }; + D3C31A7B15BD8DED008ED271 /* transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */; }; + D3C31A7C15BD8DED008ED271 /* video_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */; }; + D3C31A7D15BD8DED008ED271 /* video_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */; }; + D3C31A7E15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */; }; + D3C31A7F15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */; }; + D3C31A8015BD8DED008ED271 /* video_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */; }; + D3C31A8115BD8DED008ED271 /* video_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */; }; + D3C31A8215BD8DED008ED271 /* video_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */; }; + D3C31A8315BD8DED008ED271 /* video_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */; }; + D3C31A8415BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */; }; + D3C31A8515BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */; }; + D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */; }; + D3C31A8715BD8DED008ED271 /* video_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */; }; D3C6526715AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; }; D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; }; D3C6526B15AC228A0092A874 /* contact_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526915AC228A0092A874 /* contact_ok_default.png */; }; @@ -618,6 +702,8 @@ D3F795DE15A5831C0077328B /* chat_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DB15A5831C0077328B /* chat_back_default.png */; }; D3F795DF15A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; D3F795E015A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; + D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; }; + D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; @@ -734,6 +820,10 @@ D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */; }; D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; }; D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; }; + D3FF9F7F15BFDE1A00EBD584 /* dialer_alt_button_options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F5115B0265600420DAC /* dialer_alt_button_options_default.png */; }; + D3FF9F8015BFDE1A00EBD584 /* dialer_alt_button_options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F5215B0265600420DAC /* dialer_alt_button_options_over.png */; }; + D3FF9F8115BFDE1A00EBD584 /* dialer_alt_button_options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F5115B0265600420DAC /* dialer_alt_button_options_default.png */; }; + D3FF9F8215BFDE1A00EBD584 /* dialer_alt_button_options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F5215B0265600420DAC /* dialer_alt_button_options_over.png */; }; F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; }; /* End PBXBuildFile section */ @@ -1023,7 +1113,7 @@ 22C7564A13265C6A007BC101 /* x509_vfy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509_vfy.h; sourceTree = ""; }; 22C7564B13265C6A007BC101 /* x509v3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509v3.h; sourceTree = ""; }; 22D1B68012A3E0BE001AE361 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = usr/lib/libresolv.dylib; sourceTree = SDKROOT; }; - 22D8F187147548E2008C97DB /* linphone-no-gpl-thirdparties.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "linphone-no-gpl-thirdparties.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 22D8F187147548E2008C97DB /* castel-no-gpl-thirdparties.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "castel-no-gpl-thirdparties.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 22E0A81B111C44E100B04932 /* MoreViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MoreViewController.xib; sourceTree = ""; }; 22E0A81C111C44E100B04932 /* MoreViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MoreViewController.m; sourceTree = ""; }; 22E0A81D111C44E100B04932 /* MoreViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MoreViewController.h; sourceTree = ""; }; @@ -1048,7 +1138,6 @@ 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = ""; }; 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = ""; }; 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "InCallViewController-ipad.xib"; sourceTree = ""; }; - 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "PhoneViewController-ipad.xib"; sourceTree = ""; }; 344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = ""; }; 344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; }; 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; }; @@ -1295,6 +1384,49 @@ D3B9A3DE15A58C450096EA4E /* chat_send_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_send_over.png; path = Resources/chat_send_over.png; sourceTree = ""; }; D3C2814A15A2D38D0098AA42 /* dialer_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_selected.png; path = Resources/dialer_selected.png; sourceTree = ""; }; D3C2815115A2D64A0098AA42 /* numpad_star_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_star_over.png; path = Resources/numpad_star_over.png; sourceTree = ""; }; + D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_default_landscape.png; path = Resources/conference_default_landscape.png; sourceTree = ""; }; + D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_over_landscape.png; path = Resources/conference_over_landscape.png; sourceTree = ""; }; + D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_back_default_landscape.png; path = Resources/dialer_alt_back_default_landscape.png; sourceTree = ""; }; + D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_back_over_landscape.png; path = Resources/dialer_alt_back_over_landscape.png; sourceTree = ""; }; + D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_default_landscape.png; path = Resources/dialer_alt_default_landscape.png; sourceTree = ""; }; + D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_over_landscape.png; path = Resources/dialer_alt_over_landscape.png; sourceTree = ""; }; + D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hangup_default_landscape.png; path = Resources/hangup_default_landscape.png; sourceTree = ""; }; + D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hangup_over_landscape.png; path = Resources/hangup_over_landscape.png; sourceTree = ""; }; + D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_default_landscape.png; path = Resources/micro_off_default_landscape.png; sourceTree = ""; }; + D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_disabled_landscape.png; path = Resources/micro_off_disabled_landscape.png; sourceTree = ""; }; + D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_over_landscape.png; path = Resources/micro_off_over_landscape.png; sourceTree = ""; }; + D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_default_landscape.png; path = Resources/micro_on_default_landscape.png; sourceTree = ""; }; + D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_disabled_landscape.png; path = Resources/micro_on_disabled_landscape.png; sourceTree = ""; }; + D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_over_landscape.png; path = Resources/micro_on_over_landscape.png; sourceTree = ""; }; + D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_default_landscape.png; path = Resources/options_add_default_landscape.png; sourceTree = ""; }; + D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_disabled_landscape.png; path = Resources/options_add_disabled_landscape.png; sourceTree = ""; }; + D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_over_landscape.png; path = Resources/options_add_over_landscape.png; sourceTree = ""; }; + D3C31A1815BD8DED008ED271 /* options_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_default_landscape.png; path = Resources/options_default_landscape.png; sourceTree = ""; }; + D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_disabled_landscape.png; path = Resources/options_disabled_landscape.png; sourceTree = ""; }; + D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_over_landscape.png; path = Resources/options_over_landscape.png; sourceTree = ""; }; + D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_selected_landscape.png; path = Resources/options_selected_landscape.png; sourceTree = ""; }; + D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_default_landscape.png; path = Resources/options_transfer_default_landscape.png; sourceTree = ""; }; + D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_disabled_landscape.png; path = Resources/options_transfer_disabled_landscape.png; sourceTree = ""; }; + D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_over_landscape.png; path = Resources/options_transfer_over_landscape.png; sourceTree = ""; }; + D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_off_default_landscape.png; path = Resources/pause_off_default_landscape.png; sourceTree = ""; }; + D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_off_over_landscape.png; path = Resources/pause_off_over_landscape.png; sourceTree = ""; }; + D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_on_default_landscape.png; path = Resources/pause_on_default_landscape.png; sourceTree = ""; }; + D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_on_over_landscape.png; path = Resources/pause_on_over_landscape.png; sourceTree = ""; }; + D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_off_default_landscape.png; path = Resources/speaker_off_default_landscape.png; sourceTree = ""; }; + D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_off_disabled_landscape.png; path = Resources/speaker_off_disabled_landscape.png; sourceTree = ""; }; + D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_off_over_landscape.png; path = Resources/speaker_off_over_landscape.png; sourceTree = ""; }; + D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_default_landscape.png; path = Resources/speaker_on_default_landscape.png; sourceTree = ""; }; + D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_disabled_landscape.png; path = Resources/speaker_on_disabled_landscape.png; sourceTree = ""; }; + D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_over_landscape.png; path = Resources/speaker_on_over_landscape.png; sourceTree = ""; }; + D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = statebar_background_landscape.png; path = Resources/statebar_background_landscape.png; sourceTree = ""; }; + D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_default_landscape.png; path = Resources/transfer_default_landscape.png; sourceTree = ""; }; + D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_over_landscape.png; path = Resources/transfer_over_landscape.png; sourceTree = ""; }; + D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_default_landscape.png; path = Resources/video_off_default_landscape.png; sourceTree = ""; }; + D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_disabled_landscape.png; path = Resources/video_off_disabled_landscape.png; sourceTree = ""; }; + D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_over_landscape.png; path = Resources/video_off_over_landscape.png; sourceTree = ""; }; + D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_default_landscape.png; path = Resources/video_on_default_landscape.png; sourceTree = ""; }; + D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_disabled_landscape.png; path = Resources/video_on_disabled_landscape.png; sourceTree = ""; }; + D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_over_landscape.png; path = Resources/video_on_over_landscape.png; sourceTree = ""; }; D3C6526515AC1A8F0092A874 /* UIEditableTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEditableTableViewCell.h; sourceTree = ""; }; D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIEditableTableViewCell.m; sourceTree = ""; }; D3C6526915AC228A0092A874 /* contact_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_default.png; path = Resources/contact_ok_default.png; sourceTree = ""; }; @@ -1374,6 +1506,8 @@ D3F795D515A582800077328B /* ChatRoomViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatRoomViewController.xib; sourceTree = ""; }; D3F795DB15A5831C0077328B /* chat_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_default.png; path = Resources/chat_back_default.png; sourceTree = ""; }; D3F795DC15A5831C0077328B /* chat_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_over.png; path = Resources/chat_back_over.png; sourceTree = ""; }; + D3F7997F15BD32370018C273 /* TPMultiLayoutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPMultiLayoutViewController.h; path = Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h; sourceTree = ""; }; + D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPMultiLayoutViewController.m; path = Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m; sourceTree = ""; }; D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; @@ -1610,7 +1744,6 @@ D3F83F8C158229C500336684 /* PhoneMainView.h */, D3F83F8D15822ABD00336684 /* PhoneMainView.m */, D34734791580DDF1003C7B8C /* PhoneMainView.xib */, - 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */, D35E759C159460B50066B1C1 /* SettingsViewController.h */, D35E759D159460B50066B1C1 /* SettingsViewController.m */, D32942A31594C94200556A1C /* SettingsViewController.xib */, @@ -1628,7 +1761,7 @@ isa = PBXGroup; children = ( 1D6058910D05DD3D006BFB54 /* castel.app */, - 22D8F187147548E2008C97DB /* linphone-no-gpl-thirdparties.app */, + 22D8F187147548E2008C97DB /* castel-no-gpl-thirdparties.app */, ); name = Products; sourceTree = ""; @@ -2138,7 +2271,9 @@ D32B6E2315A5B2020033019F /* chat_send_disabled.png */, D3B9A3DE15A58C450096EA4E /* chat_send_over.png */, D31AAF61159B5B6E002C6B02 /* conference_default.png */, + D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */, D31AAF62159B5B6E002C6B02 /* conference_over.png */, + D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */, D3128FE715AABE4E00A2147A /* contact_back_default.png */, D3128FE815AABE4E00A2147A /* contact_back_over.png */, D378906915AC37C800BD776C /* contact_bar_background.png */, @@ -2167,27 +2302,33 @@ D3F83F771582253100336684 /* decline_over.png */, D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */, D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */, + D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */, D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */, + D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */, D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */, D3E84F5115B0265600420DAC /* dialer_alt_button_options_default.png */, D3E84F5215B0265600420DAC /* dialer_alt_button_options_over.png */, D36C43CF158F2F370048BA40 /* dialer_alt_default.png */, + D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */, D36C43D0158F2F370048BA40 /* dialer_alt_over.png */, + D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */, D38327ED1580FE3A00FA0D23 /* dialer_default.png */, D38327EE1580FE3A00FA0D23 /* dialer_over.png */, D3C2814A15A2D38D0098AA42 /* dialer_selected.png */, D350F21715A43D3400149E54 /* field_background.png */, D3F83EFA158205A100336684 /* hangup_default.png */, + D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */, D3F83EFB158205A100336684 /* hangup_over.png */, + D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */, D36C43CE158F2F370048BA40 /* header_conference.png */, D3F26BFB15987083005F9CAB /* header_incoming.png */, - D3157A8815B4466F00DD8C4C /* history_details_add_default.png */, - D3157A8915B4466F00DD8C4C /* history_details_add_over.png */, D3ED3E9315872EF1006C0DE4 /* history_all_default.png */, D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */, + D347347C1580E5F8003C7B8C /* history_default.png */, + D3157A8815B4466F00DD8C4C /* history_details_add_default.png */, + D3157A8915B4466F00DD8C4C /* history_details_add_over.png */, D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */, D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */, - D347347C1580E5F8003C7B8C /* history_default.png */, D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */, @@ -2209,14 +2350,20 @@ D354981815876FE7000081D8 /* list_details_default.png */, D354981915876FE7000081D8 /* list_details_over.png */, D3F83EF4158205A100336684 /* micro_off_default.png */, + D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */, D35EA76115A2DF8D003E025D /* micro_off_disabled.png */, + D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */, D3F83EF5158205A100336684 /* micro_off_over.png */, + D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */, D3F83EF6158205A100336684 /* micro_on_default.png */, + D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */, D35EA76215A2DF8D003E025D /* micro_on_disabled.png */, + D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */, D3F83EF7158205A100336684 /* micro_on_over.png */, D3F9A9AC15AEBC060045320F /* more_default.png */, D3F9A9AD15AEBC060045320F /* more_over.png */, D3F9A9AE15AEBC060045320F /* more_selected.png */, + D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */, D3F83F3C1582223B00336684 /* numpad_eight_default.png */, D3F83F3D1582223B00336684 /* numpad_eight_over.png */, D3F83F361582223B00336684 /* numpad_five_default.png */, @@ -2244,19 +2391,33 @@ 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, D3196D3015A321E2007FEEBA /* options_add_default.png */, + D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */, C9C8253F15AE204D00D493FA /* options_add_disabled.png */, + D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */, D3196D3115A321E2007FEEBA /* options_add_over.png */, + D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */, D3D6A3A8159B0EFE005F692C /* options_default.png */, + D3C31A1815BD8DED008ED271 /* options_default_landscape.png */, D3D6A3A9159B0EFE005F692C /* options_disabled.png */, + D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */, D3D6A3AA159B0EFE005F692C /* options_over.png */, + D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */, C9C8254B15AE207B00D493FA /* options_selected.png */, + D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */, D3196D3215A321E3007FEEBA /* options_transfer_default.png */, + D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */, C9C8254015AE204D00D493FA /* options_transfer_disabled.png */, + D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */, D3196D3315A321E3007FEEBA /* options_transfer_over.png */, + D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */, D3F83EF8158205A100336684 /* pause_off_default.png */, + D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */, D3F83EF9158205A100336684 /* pause_off_over.png */, + D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */, D36C43E7158F3F7E0048BA40 /* pause_on_default.png */, + D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */, D36C43E8158F3F7E0048BA40 /* pause_on_over.png */, + D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, D3D6A3A5159B0EFE005F692C /* security_ko.png */, @@ -2277,24 +2438,39 @@ D350F21A15A43D3400149E54 /* setup_title_assistant.png */, D350F21B15A43D3400149E54 /* setup_welcome_logo.png */, D3F83EFC158205A100336684 /* speaker_off_default.png */, + D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */, D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */, + D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */, D3F83EFD158205A100336684 /* speaker_off_over.png */, + D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */, D3F83EFE158205A100336684 /* speaker_on_default.png */, + D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */, D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */, + D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */, D3F83EFF158205A100336684 /* speaker_on_over.png */, + D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */, D3ED3E511585FFFD006C0DE4 /* statebar_background.png */, + D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */, D35E757515931E5D0066B1C1 /* switch_camera_default.png */, D35E757615931E5D0066B1C1 /* switch_camera_over.png */, D3C714B2159DB84400705B8E /* toy-mono.wav */, C9C8254115AE204D00D493FA /* transfer_call_default.png */, C9C8254E15AE256100D493FA /* transfer_call_disabled.png */, C9C8254215AE204D00D493FA /* transfer_call_over.png */, + D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */, + D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */, D3F83F00158205A100336684 /* video_off_default.png */, + D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */, D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */, + D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */, D3F83F01158205A100336684 /* video_off_over.png */, + D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */, D3F83F02158205A100336684 /* video_on_default.png */, + D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */, D377BBF915A19DA6002B696B /* video_on_disabled.png */, + D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */, D3F83F03158205A100336684 /* video_on_over.png */, + D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */, ); name = Resources; sourceTree = ""; @@ -2318,6 +2494,7 @@ D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, + D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */, D3F9A9EB15AF27620045320F /* UACellBackgroundView */, C9B3A6FD15B485DB006F52EE /* Utils.h */, D35860D515B549B500513429 /* Utils.m */, @@ -2424,6 +2601,15 @@ path = Settings; sourceTree = ""; }; + D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */ = { + isa = PBXGroup; + children = ( + D3F7997F15BD32370018C273 /* TPMultiLayoutViewController.h */, + D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */, + ); + name = TPMultiLayoutViewController; + sourceTree = ""; + }; D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */ = { isa = PBXGroup; children = ( @@ -2481,7 +2667,7 @@ ); name = "linphone-no-gpl-thirdparties"; productName = linphone; - productReference = 22D8F187147548E2008C97DB /* linphone-no-gpl-thirdparties.app */; + productReference = 22D8F187147548E2008C97DB /* castel-no-gpl-thirdparties.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -2546,7 +2732,6 @@ 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, - 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */, D347347E1580E5F8003C7B8C /* history_default.png in Resources */, @@ -2789,6 +2974,51 @@ D3157A9215B446CB00DD8C4C /* history_details_back_over.png in Resources */, D3119E7215B6A4710005D4A4 /* contacts_back_default.png in Resources */, D3119E7415B6A4710005D4A4 /* contacts_back_over.png in Resources */, + D3C31A3215BD8DED008ED271 /* conference_default_landscape.png in Resources */, + D3C31A3415BD8DED008ED271 /* conference_over_landscape.png in Resources */, + D3C31A3615BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */, + D3C31A3815BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */, + D3C31A3A15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */, + D3C31A3C15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */, + D3C31A3E15BD8DED008ED271 /* hangup_default_landscape.png in Resources */, + D3C31A4015BD8DED008ED271 /* hangup_over_landscape.png in Resources */, + D3C31A4215BD8DED008ED271 /* micro_off_default_landscape.png in Resources */, + D3C31A4415BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */, + D3C31A4615BD8DED008ED271 /* micro_off_over_landscape.png in Resources */, + D3C31A4815BD8DED008ED271 /* micro_on_default_landscape.png in Resources */, + D3C31A4A15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */, + D3C31A4C15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */, + D3C31A4E15BD8DED008ED271 /* options_add_default_landscape.png in Resources */, + D3C31A5015BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */, + D3C31A5215BD8DED008ED271 /* options_add_over_landscape.png in Resources */, + D3C31A5415BD8DED008ED271 /* options_default_landscape.png in Resources */, + D3C31A5615BD8DED008ED271 /* options_disabled_landscape.png in Resources */, + D3C31A5815BD8DED008ED271 /* options_over_landscape.png in Resources */, + D3C31A5A15BD8DED008ED271 /* options_selected_landscape.png in Resources */, + D3C31A5C15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */, + D3C31A5E15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */, + D3C31A6015BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */, + D3C31A6215BD8DED008ED271 /* pause_off_default_landscape.png in Resources */, + D3C31A6415BD8DED008ED271 /* pause_off_over_landscape.png in Resources */, + D3C31A6615BD8DED008ED271 /* pause_on_default_landscape.png in Resources */, + D3C31A6815BD8DED008ED271 /* pause_on_over_landscape.png in Resources */, + D3C31A6A15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */, + D3C31A6C15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */, + D3C31A6E15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */, + D3C31A7015BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */, + D3C31A7215BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */, + D3C31A7415BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */, + D3C31A7615BD8DED008ED271 /* statebar_background_landscape.png in Resources */, + D3C31A7815BD8DED008ED271 /* transfer_default_landscape.png in Resources */, + D3C31A7A15BD8DED008ED271 /* transfer_over_landscape.png in Resources */, + D3C31A7C15BD8DED008ED271 /* video_off_default_landscape.png in Resources */, + D3C31A7E15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */, + D3C31A8015BD8DED008ED271 /* video_off_over_landscape.png in Resources */, + D3C31A8215BD8DED008ED271 /* video_on_default_landscape.png in Resources */, + D3C31A8415BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */, + D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */, + D3FF9F7F15BFDE1A00EBD584 /* dialer_alt_button_options_default.png in Resources */, + D3FF9F8015BFDE1A00EBD584 /* dialer_alt_button_options_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2809,7 +3039,6 @@ 22D8F142147548E2008C97DB /* rootca.pem in Resources */, 2211DB95147564B400DEE054 /* Settings.bundle in Resources */, 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, - 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */, D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */, D3F83F0D158205A100336684 /* micro_off_default.png in Resources */, @@ -3036,6 +3265,51 @@ D3157A9315B446CB00DD8C4C /* history_details_back_over.png in Resources */, D3119E7315B6A4710005D4A4 /* contacts_back_default.png in Resources */, D3119E7515B6A4710005D4A4 /* contacts_back_over.png in Resources */, + D3C31A3315BD8DED008ED271 /* conference_default_landscape.png in Resources */, + D3C31A3515BD8DED008ED271 /* conference_over_landscape.png in Resources */, + D3C31A3715BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */, + D3C31A3915BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */, + D3C31A3B15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */, + D3C31A3D15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */, + D3C31A3F15BD8DED008ED271 /* hangup_default_landscape.png in Resources */, + D3C31A4115BD8DED008ED271 /* hangup_over_landscape.png in Resources */, + D3C31A4315BD8DED008ED271 /* micro_off_default_landscape.png in Resources */, + D3C31A4515BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */, + D3C31A4715BD8DED008ED271 /* micro_off_over_landscape.png in Resources */, + D3C31A4915BD8DED008ED271 /* micro_on_default_landscape.png in Resources */, + D3C31A4B15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */, + D3C31A4D15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */, + D3C31A4F15BD8DED008ED271 /* options_add_default_landscape.png in Resources */, + D3C31A5115BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */, + D3C31A5315BD8DED008ED271 /* options_add_over_landscape.png in Resources */, + D3C31A5515BD8DED008ED271 /* options_default_landscape.png in Resources */, + D3C31A5715BD8DED008ED271 /* options_disabled_landscape.png in Resources */, + D3C31A5915BD8DED008ED271 /* options_over_landscape.png in Resources */, + D3C31A5B15BD8DED008ED271 /* options_selected_landscape.png in Resources */, + D3C31A5D15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */, + D3C31A5F15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */, + D3C31A6115BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */, + D3C31A6315BD8DED008ED271 /* pause_off_default_landscape.png in Resources */, + D3C31A6515BD8DED008ED271 /* pause_off_over_landscape.png in Resources */, + D3C31A6715BD8DED008ED271 /* pause_on_default_landscape.png in Resources */, + D3C31A6915BD8DED008ED271 /* pause_on_over_landscape.png in Resources */, + D3C31A6B15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */, + D3C31A6D15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */, + D3C31A6F15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */, + D3C31A7115BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */, + D3C31A7315BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */, + D3C31A7515BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */, + D3C31A7715BD8DED008ED271 /* statebar_background_landscape.png in Resources */, + D3C31A7915BD8DED008ED271 /* transfer_default_landscape.png in Resources */, + D3C31A7B15BD8DED008ED271 /* transfer_over_landscape.png in Resources */, + D3C31A7D15BD8DED008ED271 /* video_off_default_landscape.png in Resources */, + D3C31A7F15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */, + D3C31A8115BD8DED008ED271 /* video_off_over_landscape.png in Resources */, + D3C31A8315BD8DED008ED271 /* video_on_default_landscape.png in Resources */, + D3C31A8515BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */, + D3C31A8715BD8DED008ED271 /* video_on_over_landscape.png in Resources */, + D3FF9F8115BFDE1A00EBD584 /* dialer_alt_button_options_default.png in Resources */, + D3FF9F8215BFDE1A00EBD584 /* dialer_alt_button_options_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3121,6 +3395,7 @@ D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D615B549B500513429 /* Utils.m in Sources */, + D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3203,6 +3478,7 @@ D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D715B549B500513429 /* Utils.m in Sources */, + D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3400,7 +3676,7 @@ "-l", mediastreamer, ); - PRODUCT_NAME = "linphone-no-gpl-thirdparties"; + PRODUCT_NAME = "castel-no-gpl-thirdparties"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; @@ -3452,7 +3728,7 @@ "-l", mediastreamer, ); - PRODUCT_NAME = "linphone-no-gpl-thirdparties"; + PRODUCT_NAME = "castel-no-gpl-thirdparties"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; @@ -3505,7 +3781,7 @@ "-l", mediastreamer, ); - PRODUCT_NAME = "linphone-no-gpl-thirdparties"; + PRODUCT_NAME = "castel-no-gpl-thirdparties"; PROVISIONING_PROFILE = "075921BC-C7D8-42E1-B864-F05FD9BF841C"; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; @@ -3558,7 +3834,7 @@ "-l", mediastreamer, ); - PRODUCT_NAME = "linphone-no-gpl-thirdparties"; + PRODUCT_NAME = "castel-no-gpl-thirdparties"; PROVISIONING_PROFILE = "7EBE410C-11B9-4346-9977-2C3BEE43ED16"; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; diff --git a/submodules/externals/exosip b/submodules/externals/exosip index dfe434328..8c42924ae 160000 --- a/submodules/externals/exosip +++ b/submodules/externals/exosip @@ -1 +1 @@ -Subproject commit dfe434328c0b0cbbaee669d40b27e09fea5f49ab +Subproject commit 8c42924ae9009f6003e98d29638e078ca1bd7c71