diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index d4ee8b7fe..d4d2ab6bc 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; } 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..be5d45d32 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; } 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 3a17abc5e..5c06b7af4 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]; @@ -405,6 +441,10 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { #pragma mark - Event Functions +- (void)orientationChanged:(NSNotification*) notif { + [self orientationUpdate]; +} + - (void)callUpdateEvent: (NSNotification*) notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 8f79f3993..2e36e4b97 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,11 +12,11 @@ YES - IBUITableViewController IBUITableView + IBUIButton IBUIActivityIndicatorView IBUIView - IBUIButton + IBUITableViewController IBProxyObject @@ -44,13 +44,13 @@ YES - 292 + 274 YES - 292 - {320, 460} + 274 + {{1000, 1000}, {320, 460}} @@ -63,18 +63,18 @@ - 292 - {{240, 354}, {80, 106}} + 265 + {{1214, 1354}, {106, 106}} - + IBCocoaTouchFramework - 292 - {{141, 212}, {37, 37}} + 301 + {{1137, 1214}, {37, 37}} @@ -86,7 +86,7 @@ 0 - {320, 460} + {{-1000, -1000}, {2320, 2460}} @@ -103,6 +103,7 @@ {{0, -10}, {320, 480}} + _NS:418 YES @@ -133,6 +134,7 @@ {85, 33} + _NS:9 NO IBCocoaTouchFramework @@ -166,7 +168,7 @@ {320, 460} - + NO IBCocoaTouchFramework @@ -224,14 +226,6 @@ 130 - - - callTableView - - - - 109 - videoCameraSwitch @@ -248,6 +242,14 @@ 167 + + + callTableView + + + + 109 + dataSource @@ -347,12 +349,6 @@ preview - - 106 - - - callTableView - 160 @@ -368,6 +364,12 @@ callTableController + + 106 + + + callTableView + diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index e00398c5f..580fa2751 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 06d1e4148..d8567a044 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -134,35 +134,74 @@ // 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)]; + + + [optionsView setHidden:TRUE]; + [padView setHidden:TRUE]; } - (void)viewWillAppear:(BOOL)animated { @@ -400,4 +439,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 1bda79f29..d5b86f993 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -35,7 +35,7 @@ - 292 + 301 @@ -43,7 +43,6 @@ {{0, 335}, {320, 125}} - _NS:9 1 @@ -58,7 +57,7 @@ - -2147483360 + 288 @@ -68,9 +67,10 @@ _NS:9 + 2 NO IBCocoaTouchFramework - + NSImage dialer_alt_background.png @@ -88,6 +88,7 @@ NO NO + 3 IBCocoaTouchFramework 0 0 @@ -95,11 +96,11 @@ 3 MC41AA - + NSImage numpad_one_over.png - + NSImage numpad_one_default.png @@ -124,15 +125,16 @@ NO NO + 4 IBCocoaTouchFramework 0 0 - + NSImage numpad_two_over.png - + NSImage numpad_two_default.png @@ -148,15 +150,16 @@ NO NO + 5 IBCocoaTouchFramework 0 0 - + NSImage numpad_three_over.png - + NSImage numpad_three_default.png @@ -172,15 +175,16 @@ NO NO + 6 IBCocoaTouchFramework 0 0 - + NSImage numpad_four_over.png - + NSImage numpad_four_default.png @@ -196,15 +200,16 @@ NO NO + 7 IBCocoaTouchFramework 0 0 - + NSImage numpad_five_over.png - + NSImage numpad_five_default.png @@ -220,15 +225,16 @@ NO NO + 8 IBCocoaTouchFramework 0 0 - + NSImage numpad_six_over.png - + NSImage numpad_six_default.png @@ -244,15 +250,16 @@ NO NO + 9 IBCocoaTouchFramework 0 0 - + NSImage numpad_seven_over.png - + NSImage numpad_seven_default.png @@ -268,15 +275,16 @@ NO NO + 10 IBCocoaTouchFramework 0 0 - + NSImage numpad_eight_over.png - + NSImage numpad_eight_default.png @@ -292,15 +300,16 @@ NO NO + 11 IBCocoaTouchFramework 0 0 - + NSImage numpad_nine_over.png - + NSImage numpad_nine_default.png @@ -316,15 +325,16 @@ NO NO + 12 IBCocoaTouchFramework 0 0 - + NSImage numpad_star_over.png - + NSImage numpad_star_default.png @@ -340,15 +350,16 @@ NO NO + 13 IBCocoaTouchFramework 0 0 - + NSImage numpad_zero_over.png - + NSImage numpad_zero_default.png @@ -364,15 +375,16 @@ NO NO + 14 IBCocoaTouchFramework 0 0 - + NSImage numpad_sharp_over.png - + NSImage numpad_sharp_default.png @@ -389,11 +401,12 @@ 3 MCAwAA + 1 IBCocoaTouchFramework - -2147483356 + 292 @@ -404,6 +417,7 @@ _NS:9 NO + 16 Add call @@ -439,6 +453,7 @@ _NS:9 NO + 17 Add call @@ -469,6 +484,7 @@ _NS:9 + 15 IBCocoaTouchFramework @@ -484,6 +500,7 @@ _NS:9 NO + 19 Video @@ -521,6 +538,7 @@ _NS:9 NO + 20 IBCocoaTouchFramework 0 @@ -533,6 +551,7 @@ _NS:9 NO + 21 Micro @@ -570,6 +589,7 @@ _NS:9 NO + 22 Speaker @@ -607,6 +627,7 @@ _NS:9 NO + 23 Add call @@ -644,6 +665,7 @@ _NS:9 NO + 24 Pause @@ -677,6 +699,7 @@ _NS:9 NO + 25 Start Conference @@ -706,6 +729,7 @@ _NS:9 NO + 26 Hangup @@ -735,6 +759,7 @@ _NS:9 NO + 27 Back @@ -766,6 +791,7 @@ _NS:9 + 18 IBCocoaTouchFramework @@ -778,6 +804,688 @@ NO IBCocoaTouchFramework + + + 301 + + + + -2147483356 + {{0, 248}, {480, 72}} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NQA + + NO + NO + NO + -1 + NO + IBCocoaTouchFramework + + + + 288 + + + + 274 + {281, 260} + + + + _NS:9 + 2 + NO + IBCocoaTouchFramework + + + + + 292 + {{-20, 10}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + 3 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{87, 10}, {106, 54}} + + + + NO + NO + 4 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{193, 10}, {107, 54}} + + + + NO + NO + 5 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 72}, {107, 54}} + + + + NO + NO + 6 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{87, 72}, {106, 54}} + + + + NO + NO + 7 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{193, 72}, {107, 54}} + + + + NO + NO + 8 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 134}, {107, 54}} + + + + NO + NO + 9 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{87, 134}, {106, 54}} + + + + NO + NO + 10 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{193, 134}, {107, 54}} + + + + NO + NO + 11 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 196}, {107, 54}} + + + + NO + NO + 12 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{87, 196}, {106, 54}} + + + + NO + NO + 13 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{193, 196}, {107, 54}} + + + + NO + NO + 14 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + {{91, 0}, {281, 260}} + + + + _NS:9 + + 1 + IBCocoaTouchFramework + + + + 292 + + + + 292 + {65, 55} + + + + _NS:9 + NO + 16 + + Add call + + IBCocoaTouchFramework + 0 + 0 + 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 + + + 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 + @@ -973,6 +1681,22 @@ 97 + + + landscapeView + + + + 137 + + + + portraitView + + + + 138 + onPadClick: @@ -1044,6 +1768,77 @@ 98 + + + onPadClick: + + + 7 + + 132 + + + + onConferenceClick: + + + 7 + + 135 + + + + onOptionsClick: + + + 7 + + 134 + + + + waitView + + + + 129 + + + + onOptionsAddClick: + + + 7 + + 130 + + + + onOptionsClick: + + + 7 + + 136 + + + + onOptionsClick: + + + 7 + + 131 + + + + onOptionsTransferClick: + + + 7 + + 133 + @@ -1074,7 +1869,7 @@ - callTabBar + Portrait View 5 @@ -1275,6 +2070,216 @@ 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 + @@ -1285,12 +2290,83 @@ UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 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 + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1358,13 +2434,35 @@ - 99 + 138 - UICallBar + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICallBar + TPMultiLayoutViewController id id @@ -1629,17 +2727,28 @@ 3 {209, 136} + {130, 163} {209, 136} + {130, 163} {209, 136} + {130, 163} {530, 526} {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} @@ -1665,26 +2774,47 @@ {220, 113} {220, 113} {155, 137} + {129, 109} {155, 137} + {129, 109} {155, 137} + {129, 109} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {155, 137} + {129, 109} {155, 137} + {129, 109} {155, 137} + {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.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..f10acbc78 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,39 @@ [stateBarViewController viewDidDisappear:animated]; } +- (void)orientationChanged:(NSNotification *)notification { + currentOrientation = [[UIDevice currentDevice] orientation]; + +} + +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:currentOrientation]; + [UIView beginAnimations:@"Rotation" context:nil]; + [UIView setAnimationDuration:duration]; + [self applySubLayoutsForInterfaceOrientation:correctOrientation]; + [self update:nil tabBar:nil fullscreen:nil]; + [UIView commitAnimations]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + if(currentViewDescription != nil) { + if (interfaceOrientation == UIInterfaceOrientationPortrait || + interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { + if ([currentViewDescription portraitMode]) { + return YES; + } + } + if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || + interfaceOrientation == UIInterfaceOrientationLandscapeRight) { + if ([currentViewDescription landscapeMode]) { + return YES; + } + } + return NO; + } + return YES; +} + #pragma mark - @@ -189,6 +245,50 @@ 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)applySubLayoutsForInterfaceOrientation:(UIInterfaceOrientation)newOrientation { + [self applyLayoutForInterfaceOrientation:newOrientation]; + [contentViewController willRotateToInterfaceOrientation:newOrientation duration:0]; + [contentViewController willAnimateRotationToInterfaceOrientation:newOrientation duration:0]; + if ([contentViewController isKindOfClass:[TPMultiLayoutViewController class]]) { + [(TPMultiLayoutViewController*)contentViewController applyLayoutForInterfaceOrientation:newOrientation]; + } + [contentViewController didRotateFromInterfaceOrientation: newOrientation]; + + [tabBarViewController willRotateToInterfaceOrientation:newOrientation duration:0]; + [tabBarViewController willAnimateRotationToInterfaceOrientation:newOrientation duration:0]; + if ([tabBarViewController isKindOfClass:[TPMultiLayoutViewController class]]) { + [(TPMultiLayoutViewController*)tabBarViewController applyLayoutForInterfaceOrientation:newOrientation]; + } + [tabBarViewController didRotateFromInterfaceOrientation: newOrientation]; + + [stateBarViewController willRotateToInterfaceOrientation:newOrientation duration:0]; + [stateBarViewController willAnimateRotationToInterfaceOrientation:newOrientation duration:0]; + if ([stateBarViewController isKindOfClass:[TPMultiLayoutViewController class]]) { + [(TPMultiLayoutViewController*)stateBarViewController applyLayoutForInterfaceOrientation:newOrientation]; + } + [stateBarViewController didRotateFromInterfaceOrientation: newOrientation]; +} + #define IPHONE_STATUSBAR_HEIGHT 20 - (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar fullscreen:(NSNumber*)fullscreen { @@ -222,6 +322,15 @@ stateBarViewController = [self getCachedController:description.stateBar]; contentViewController = [self getCachedController:description.content]; tabBarViewController = [self getCachedController:description.tabBar]; + + // Update rotation + UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:currentOrientation]; + UIDeviceOrientation screenOrientation = [[UIApplication sharedApplication] statusBarOrientation]; + if(screenOrientation != correctOrientation) { + // Force the screen in correct rotation + [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)correctOrientation]; + } + [self applySubLayoutsForInterfaceOrientation:correctOrientation]; } 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/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.xib b/Classes/LinphoneUI/UIStateBar.xib index 23f0c3c49..0b3c3d9af 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 @@ -105,6 +108,7 @@ _NS:567 + 4 NO IBCocoaTouchFramework @@ -114,8 +118,10 @@ {{254, 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 + {{378, 3}, {27, 17}} + + + + _NS:567 + 4 + NO + IBCocoaTouchFramework + + + + 292 + {{413, 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/PhoneMainView.m b/Classes/PhoneMainView.m index 2d0fc94df..cf89a8ac8 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 { @@ -158,6 +162,15 @@ 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]; +} + #pragma mark - Event Functions @@ -427,6 +440,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } } + #pragma mark - ActionSheet Functions - (void)displayMessage:(ChatModel*)chat { 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..c097ce526 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; } 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..76fccb14c --- /dev/null +++ b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m @@ -0,0 +1,241 @@ +// +// 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]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { + return TRUE; +} + +-(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 { + 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 a82fa9517..2e82bea69 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -143,8 +143,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, ); }; }; @@ -513,6 +511,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 */; }; @@ -643,6 +727,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 */; }; @@ -1061,7 +1147,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; }; @@ -1309,6 +1394,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 = ""; }; @@ -1386,6 +1514,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 = ""; }; @@ -1615,7 +1745,6 @@ D3F83F8C158229C500336684 /* PhoneMainView.h */, D3F83F8D15822ABD00336684 /* PhoneMainView.m */, D34734791580DDF1003C7B8C /* PhoneMainView.xib */, - 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */, D35E759C159460B50066B1C1 /* SettingsViewController.h */, D35E759D159460B50066B1C1 /* SettingsViewController.m */, D32942A31594C94200556A1C /* SettingsViewController.xib */, @@ -2140,7 +2269,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 */, @@ -2168,25 +2299,31 @@ 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 */, 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 */, @@ -2211,11 +2348,17 @@ 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 */, + D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */, D3F83F3C1582223B00336684 /* numpad_eight_default.png */, D3F83F3D1582223B00336684 /* numpad_eight_over.png */, D3F83F361582223B00336684 /* numpad_five_default.png */, @@ -2243,19 +2386,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 */, @@ -2276,24 +2433,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 = ""; @@ -2311,6 +2483,7 @@ D326483415887D4400930C67 /* Utils */ = { isa = PBXGroup; children = ( + D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */, D38935F715A6D06800A3A3AA /* CPAnimation */, D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, @@ -2423,6 +2596,15 @@ path = Settings; sourceTree = ""; }; + D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */ = { + isa = PBXGroup; + children = ( + D3F7997F15BD32370018C273 /* TPMultiLayoutViewController.h */, + D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */, + ); + name = TPMultiLayoutViewController; + sourceTree = ""; + }; D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */ = { isa = PBXGroup; children = ( @@ -2547,7 +2729,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 */, 34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */, D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */, @@ -2788,6 +2969,49 @@ 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 */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2810,7 +3034,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 */, @@ -3034,6 +3257,49 @@ 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 */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3125,6 +3391,7 @@ D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D615B549B500513429 /* Utils.m in Sources */, + D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3213,6 +3480,7 @@ D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D715B549B500513429 /* Utils.m in Sources */, + D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };