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 @@
-
-
- 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