Screen rotation

This commit is contained in:
Yann Diorcet 2012-07-23 19:04:55 +02:00
parent 4143623d4f
commit 88aba8b5e2
71 changed files with 2434 additions and 1279 deletions

View file

@ -71,7 +71,9 @@ static UICompositeViewDescription *compositeDescription = nil;
stateBarEnabled:false
tabBar:@"UIMainBar"
tabBarEnabled:true
fullscreen:false];
fullscreen:false
landscapeMode:false
portraitMode:true];
}
return compositeDescription;
}

View file

@ -92,7 +92,9 @@ static UICompositeViewDescription *compositeDescription = nil;
stateBarEnabled:false
tabBar: @"UIMainBar"
tabBarEnabled:true
fullscreen:false];
fullscreen:false
landscapeMode:false
portraitMode:true];
}
return compositeDescription;
}

View file

@ -256,7 +256,9 @@ static UICompositeViewDescription *compositeDescription = nil;
stateBarEnabled:false
tabBar:@"UIMainBar"
tabBarEnabled:true
fullscreen:false];
fullscreen:false
landscapeMode:false
portraitMode:true];
}
return compositeDescription;
}

View file

@ -108,7 +108,9 @@ static UICompositeViewDescription *compositeDescription = nil;
stateBarEnabled:false
tabBar:@"UIMainBar"
tabBarEnabled:true
fullscreen:false];
fullscreen:false
landscapeMode:false
portraitMode:true];
}
return compositeDescription;
}

View file

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

View file

@ -62,7 +62,9 @@ static UICompositeViewDescription *compositeDescription = nil;
stateBarEnabled:false
tabBar:nil
tabBarEnabled:false
fullscreen:false];
fullscreen:false
landscapeMode:false
portraitMode:true];
}
return compositeDescription;
}

View file

@ -68,7 +68,9 @@ static UICompositeViewDescription *compositeDescription = nil;
stateBarEnabled:false
tabBar:@"UIMainBar"
tabBarEnabled:true
fullscreen:false];
fullscreen:false
landscapeMode:false
portraitMode:true];
}
return compositeDescription;
}

View file

@ -65,7 +65,9 @@ static UICompositeViewDescription *compositeDescription = nil;
stateBarEnabled:false
tabBar:@"UIMainBar"
tabBarEnabled:true
fullscreen:false];
fullscreen:false
landscapeMode:false
portraitMode:true];
}
return compositeDescription;
}

View file

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

View file

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

View file

@ -12,11 +12,11 @@
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>IBUITableViewController</string>
<string>IBUITableView</string>
<string>IBUIButton</string>
<string>IBUIActivityIndicatorView</string>
<string>IBUIView</string>
<string>IBUIButton</string>
<string>IBUITableViewController</string>
<string>IBProxyObject</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
@ -44,13 +44,13 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIView" id="1009068048">
<reference key="NSNextResponder" ref="858247959"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIView" id="1017044170">
<reference key="NSNextResponder" ref="1009068048"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{320, 460}</string>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{1000, 1000}, {320, 460}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="69034748"/>
@ -63,18 +63,18 @@
</object>
<object class="IBUIView" id="673568144">
<reference key="NSNextResponder" ref="1009068048"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{240, 354}, {80, 106}}</string>
<int key="NSvFlags">265</int>
<string key="NSFrame">{{1214, 1354}, {106, 106}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="972197710"/>
<reference key="NSNextKeyView" ref="662692377"/>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIActivityIndicatorView" id="69034748">
<reference key="NSNextResponder" ref="1009068048"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{141, 212}, {37, 37}}</string>
<int key="NSvFlags">301</int>
<string key="NSFrame">{{1137, 1214}, {37, 37}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="673568144"/>
@ -86,7 +86,7 @@
<int key="IBUIStyle">0</int>
</object>
</object>
<string key="NSFrameSize">{320, 460}</string>
<string key="NSFrame">{{-1000, -1000}, {2320, 2460}}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1017044170"/>
@ -103,6 +103,7 @@
<string key="NSFrame">{{0, -10}, {320, 480}}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="972197710"/>
<string key="NSReuseIdentifierKey">_NS:418</string>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<bool key="IBUIClipsSubviews">YES</bool>
@ -133,6 +134,7 @@
<string key="NSFrameSize">{85, 33}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@ -166,7 +168,7 @@
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="662692377"/>
<reference key="NSNextKeyView" ref="1009068048"/>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@ -224,14 +226,6 @@
</object>
<int key="connectionID">130</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">callTableView</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="662692377"/>
</object>
<int key="connectionID">109</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">videoCameraSwitch</string>
@ -248,6 +242,14 @@
</object>
<int key="connectionID">167</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">callTableView</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="662692377"/>
</object>
<int key="connectionID">109</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
@ -347,12 +349,6 @@
<reference key="parent" ref="1009068048"/>
<string key="objectName">preview</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">106</int>
<reference key="object" ref="662692377"/>
<reference key="parent" ref="858247959"/>
<string key="objectName">callTableView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">160</int>
<reference key="object" ref="972197710"/>
@ -368,6 +364,12 @@
<reference key="parent" ref="0"/>
<string key="objectName">callTableController</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">106</int>
<reference key="object" ref="662692377"/>
<reference key="parent" ref="858247959"/>
<string key="objectName">callTableView</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">

View file

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

View file

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

File diff suppressed because it is too large Load diff

View file

@ -35,15 +35,15 @@
</object>
<object class="IBUIView" id="675878782">
<reference key="NSNextResponder"/>
<int key="NSvFlags">288</int>
<int key="NSvFlags">290</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIView" id="176711572">
<reference key="NSNextResponder" ref="675878782"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">290</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIButton" id="846233730">
<reference key="NSNextResponder" ref="176711572"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">290</int>
<string key="NSFrame">{{0, 63}, {320, 250}}</string>
<reference key="NSSuperview" ref="176711572"/>
<reference key="NSWindow"/>
@ -81,7 +81,7 @@
</object>
<object class="IBUIImageView" id="942473668">
<reference key="NSNextResponder" ref="176711572"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">293</int>
<string key="NSFrame">{{0, 48}, {320, 262}}</string>
<reference key="NSSuperview" ref="176711572"/>
<reference key="NSWindow"/>
@ -97,7 +97,7 @@
</object>
<object class="IBUIImageView" id="617455101">
<reference key="NSNextResponder" ref="176711572"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">293</int>
<string key="NSFrame">{{80, 65}, {160, 170}}</string>
<reference key="NSSuperview" ref="176711572"/>
<reference key="NSWindow"/>
@ -119,16 +119,15 @@
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="293312528"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="227927177">
<reference key="NSNextResponder" ref="675878782"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">290</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIImageView" id="1067290601">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">290</int>
<string key="NSFrameSize">{320, 63}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
@ -143,7 +142,7 @@
</object>
<object class="IBUIImageView" id="174867822">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">290</int>
<string key="NSFrameSize">{320, 63}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
@ -155,7 +154,7 @@
</object>
<object class="IBUILabel" id="1040042446">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">294</int>
<string key="NSFrame">{{10, 0}, {206, 51}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
@ -4573,7 +4572,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</object>
<object class="IBUIImageView" id="256572861">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{224, 14}, {25, 25}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
@ -4584,7 +4583,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</object>
<object class="IBUIButton" id="349911861">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">-2147483356</int>
<int key="NSvFlags">-2147483359</int>
<string key="NSFrame">{{216, 6}, {41, 41}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
@ -4614,7 +4613,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</object>
<object class="IBUIButton" id="874892962">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">-2147483356</int>
<int key="NSvFlags">-2147483359</int>
<string key="NSFrame">{{216, 6}, {41, 41}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
@ -4648,10 +4647,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</object>
<object class="IBUILabel" id="932476762">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{262, 12}, {50, 29}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
@ -4676,7 +4676,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</object>
<object class="IBUIButton" id="544229628">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<int key="NSvFlags">294</int>
<string key="NSFrame">{{0, 5}, {200, 40}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
@ -4699,7 +4699,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<reference key="NSNextKeyView" ref="1067290601"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="293312528"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
@ -4709,7 +4708,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<reference key="NSNextKeyView" ref="176711572"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="293312528"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="260763535">
@ -4718,6 +4716,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="293312528"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
@ -4999,7 +4998,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">59</int>
<int key="maxID">75</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">

View file

@ -21,6 +21,7 @@
#import <QuartzCore/QuartzCore.h>
#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

View file

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

View file

@ -32,12 +32,12 @@
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<int key="NSvFlags">301</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIView" id="481442126">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">303</int>
<string key="NSFrame">{{0, 23}, {320, 380}}</string>
<int key="NSvFlags">314</int>
<string key="NSFrame">{{0, 23}, {320, 389}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="548578981"/>
@ -46,39 +46,101 @@
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUITag">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="256276698">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">303</int>
<int key="NSvFlags">290</int>
<string key="NSFrameSize">{320, 23}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="481442126"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="572758541"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUITag">2</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="548578981">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">303</int>
<string key="NSFrame">{{0, 400}, {320, 60}}</string>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{0, 420}, {320, 60}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="572758541"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUITag">3</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<string key="NSFrame">{{0, 20}, {320, 460}}</string>
<string key="NSFrameSize">{320, 480}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="256276698"/>
<reference key="IBUIBackgroundColor" ref="572758541"/>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="915565391">
<reference key="NSNextResponder"/>
<int key="NSvFlags">301</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIView" id="575003184">
<reference key="NSNextResponder" ref="915565391"/>
<int key="NSvFlags">314</int>
<string key="NSFrame">{{0, 24}, {480, 231}}</string>
<reference key="NSSuperview" ref="915565391"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="872119935"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="572758541"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUITag">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="1051455928">
<reference key="NSNextResponder" ref="915565391"/>
<int key="NSvFlags">290</int>
<string key="NSFrameSize">{480, 23}</string>
<reference key="NSSuperview" ref="915565391"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="575003184"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="572758541"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUITag">2</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="872119935">
<reference key="NSNextResponder" ref="915565391"/>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{0, 260}, {480, 60}}</string>
<reference key="NSSuperview" ref="915565391"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="572758541"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUITag">3</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<string key="NSFrameSize">{480, 320}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1051455928"/>
<reference key="IBUIBackgroundColor" ref="572758541"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="IBUIInterfaceOrientation">3</int>
<int key="interfaceOrientation">3</int>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
@ -116,6 +178,22 @@
</object>
<int key="connectionID">19</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">portraitView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">24</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">landscapeView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="915565391"/>
</object>
<int key="connectionID">25</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -134,6 +212,7 @@
<reference ref="548578981"/>
</array>
<reference key="parent" ref="0"/>
<string key="objectName">Portrait View</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
@ -164,6 +243,36 @@
<reference key="parent" ref="191373211"/>
<string key="objectName">tabBar</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">20</int>
<reference key="object" ref="915565391"/>
<array class="NSMutableArray" key="children">
<reference ref="1051455928"/>
<reference ref="575003184"/>
<reference ref="872119935"/>
</array>
<reference key="parent" ref="0"/>
<string key="objectName">Landscape View</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">22</int>
<reference key="object" ref="1051455928"/>
<reference key="parent" ref="915565391"/>
<string key="objectName">stateBar</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">23</int>
<reference key="object" ref="575003184"/>
<array class="NSMutableArray" key="children"/>
<reference key="parent" ref="915565391"/>
<string key="objectName">content</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">21</int>
<reference key="object" ref="872119935"/>
<reference key="parent" ref="915565391"/>
<string key="objectName">tabBar</string>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@ -177,18 +286,46 @@
<string key="15.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="16.CustomClassName">UITransparentView</string>
<string key="16.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="20.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="21.CustomClassName">UITransparentView</string>
<string key="21.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="22.CustomClassName">UITransparentView</string>
<string key="22.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">19</int>
<int key="maxID">25</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">UICompositeViewController</string>
<string key="className">TPMultiLayoutViewController</string>
<string key="superclassName">UIViewController</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="landscapeView">UIView</string>
<string key="portraitView">UIView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="landscapeView">
<string key="name">landscapeView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo" key="portraitView">
<string key="name">portraitView</string>
<string key="candidateClassName">UIView</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/TPMultiLayoutViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UICompositeViewController</string>
<string key="superclassName">TPMultiLayoutViewController</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="contentView">UIView</string>
<string key="stateBarView">UIView</string>

View file

@ -18,8 +18,9 @@
*/
#import <UIKit/UIKit.h>
#import "TPMultiLayoutViewController.h"
@interface UIStateBar : UIViewController {
@interface UIStateBar : TPMultiLayoutViewController {
UIImageView* registrationStateImage;
UILabel* registrationStateLabel;
UIImageView* callQualityImage;

View file

@ -44,9 +44,10 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="332800514"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<int key="IBUITag">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<object class="NSCustomResource" key="IBUIImage" id="534509476">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">statebar_background.png</string>
</object>
@ -59,9 +60,10 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="200467549"/>
<string key="NSReuseIdentifierKey">_NS:567</string>
<int key="IBUITag">2</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<object class="NSCustomResource" key="IBUIImage" id="1048926494">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">led_disconnected.png</string>
</object>
@ -77,21 +79,22 @@
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<int key="IBUITag">3</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">CARAMBA</string>
<object class="NSColor" key="IBUITextColor">
<object class="NSColor" key="IBUITextColor" id="511295248">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<object class="IBUIFontDescription" key="IBUIFontDescription" id="745016149">
<int key="type">1</int>
<double key="pointSize">17</double>
</object>
<object class="NSFont" key="IBUIFont">
<object class="NSFont" key="IBUIFont" id="588587366">
<string key="NSName">Helvetica</string>
<double key="NSSize">17</double>
<int key="NSfFlags">16</int>
@ -105,6 +108,7 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="522045680"/>
<string key="NSReuseIdentifierKey">_NS:567</string>
<int key="IBUITag">4</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
@ -114,8 +118,10 @@
<string key="NSFrame">{{254, 3}, {27, 17}}</string>
<reference key="NSSuperview" ref="848661322"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:567</string>
<int key="IBUIContentMode">1</int>
<int key="IBUITag">5</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
@ -125,12 +131,98 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="393098359"/>
<string key="NSReuseIdentifierKey">_NS:196</string>
<object class="NSColor" key="IBUIBackgroundColor">
<object class="NSColor" key="IBUIBackgroundColor" id="139297653">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="572911811">
<reference key="NSNextResponder"/>
<int key="NSvFlags">292</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIImageView" id="274257756">
<reference key="NSNextResponder" ref="572911811"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{480, 23}</string>
<reference key="NSSuperview" ref="572911811"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="404338830"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<int key="IBUITag">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<reference key="IBUIImage" ref="534509476"/>
</object>
<object class="IBUIImageView" id="404338830">
<reference key="NSNextResponder" ref="572911811"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{6, 6}, {10, 10}}</string>
<reference key="NSSuperview" ref="572911811"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="314750323"/>
<string key="NSReuseIdentifierKey">_NS:567</string>
<int key="IBUITag">2</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<reference key="IBUIImage" ref="1048926494"/>
</object>
<object class="IBUILabel" id="314750323">
<reference key="NSNextResponder" ref="572911811"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{22, 0}, {189, 20}}</string>
<reference key="NSSuperview" ref="572911811"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="408451884"/>
<string key="NSReuseIdentifierKey">_NS:328</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<int key="IBUITag">3</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">CARAMBA</string>
<reference key="IBUITextColor" ref="511295248"/>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<reference key="IBUIFontDescription" ref="745016149"/>
<reference key="IBUIFont" ref="588587366"/>
</object>
<object class="IBUIImageView" id="408451884">
<reference key="NSNextResponder" ref="572911811"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{378, 3}, {27, 17}}</string>
<reference key="NSSuperview" ref="572911811"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="695121572"/>
<string key="NSReuseIdentifierKey">_NS:567</string>
<int key="IBUITag">4</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIImageView" id="695121572">
<reference key="NSNextResponder" ref="572911811"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{413, 3}, {27, 17}}</string>
<reference key="NSSuperview" ref="572911811"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:567</string>
<int key="IBUIContentMode">1</int>
<int key="IBUITag">5</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<string key="NSFrameSize">{480, 23}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="274257756"/>
<string key="NSReuseIdentifierKey">_NS:196</string>
<reference key="IBUIBackgroundColor" ref="139297653"/>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
@ -174,6 +266,22 @@
</object>
<int key="connectionID">18</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">portraitView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="848661322"/>
</object>
<int key="connectionID">25</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">landscapeView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="572911811"/>
</object>
<int key="connectionID">26</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -236,6 +344,48 @@
<reference key="parent" ref="848661322"/>
<string key="objectName">callSecurityImage</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">19</int>
<reference key="object" ref="572911811"/>
<array class="NSMutableArray" key="children">
<reference ref="274257756"/>
<reference ref="314750323"/>
<reference ref="404338830"/>
<reference ref="408451884"/>
<reference ref="695121572"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">20</int>
<reference key="object" ref="695121572"/>
<reference key="parent" ref="572911811"/>
<string key="objectName">callSecurityImage</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">21</int>
<reference key="object" ref="408451884"/>
<reference key="parent" ref="572911811"/>
<string key="objectName">callQualityImage</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">22</int>
<reference key="object" ref="274257756"/>
<reference key="parent" ref="572911811"/>
<string key="objectName">background</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">23</int>
<reference key="object" ref="314750323"/>
<reference key="parent" ref="572911811"/>
<string key="objectName">registrationStateLabel</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">24</int>
<reference key="object" ref="404338830"/>
<reference key="parent" ref="572911811"/>
<string key="objectName">registrationStateImage</string>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@ -246,6 +396,12 @@
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="13.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="17.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="20.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="21.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="22.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="24.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@ -254,13 +410,35 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">18</int>
<int key="maxID">26</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">UIStateBar</string>
<string key="className">TPMultiLayoutViewController</string>
<string key="superclassName">UIViewController</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="landscapeView">UIView</string>
<string key="portraitView">UIView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="landscapeView">
<string key="name">landscapeView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo" key="portraitView">
<string key="name">portraitView</string>
<string key="candidateClassName">UIView</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/TPMultiLayoutViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIStateBar</string>
<string key="superclassName">TPMultiLayoutViewController</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="callQualityImage">UIImageView</string>
<string key="callSecurityImage">UIImageView</string>

View file

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

View file

@ -47,6 +47,7 @@
<reference key="NSSuperview" ref="891400674"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<int key="IBUITag">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
@ -180,7 +181,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">212</int>
<int key="maxID">216</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -205,8 +206,48 @@
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UICompositeViewController</string>
<string key="className">TPMultiLayoutViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>landscapeView</string>
<string>portraitView</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIView</string>
<string>UIView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>landscapeView</string>
<string>portraitView</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">landscapeView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">portraitView</string>
<string key="candidateClassName">UIView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/TPMultiLayoutViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UICompositeViewController</string>
<string key="superclassName">TPMultiLayoutViewController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">

File diff suppressed because it is too large Load diff

View file

@ -51,7 +51,9 @@ static UICompositeViewDescription *compositeDescription = nil;
stateBarEnabled:false
tabBar: @"UIMainBar"
tabBarEnabled:true
fullscreen:false];
fullscreen:false
landscapeMode:false
portraitMode:true];
}
return compositeDescription;
}

View file

@ -0,0 +1,27 @@
//
// TPMultiLayoutViewController.h
//
// Created by Michael Tyson on 14/08/2011.
// Copyright 2011 A Tasty Pixel. All rights reserved.
//
#import <UIKit/UIKit.h>
@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

View file

@ -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<sizeof(UIControlEvents)*8; i++ ) {
UIControlEvents event = 1 << i;
if ( !(controlEvents & event) ) continue;
if ( ![[(UIControl*)otherView actionsForTarget:target forControlEvent:event] isEqualToArray:[(UIControl*)view actionsForTarget:target forControlEvent:event]] ) {
allActionsMatch = NO;
break;
}
}
if ( !allActionsMatch ) break;
}
if ( allActionsMatch ) {
return otherView;
}
}
}
}
// Next, try to match title or image, if it's a button
if ( [view isKindOfClass:[UIButton class]] ) {
for ( UIView *otherView in views ) {
if ( [otherView isKindOfClass:[view class]] && [[(UIButton*)otherView titleForState:UIControlStateNormal] isEqualToString:[(UIButton*)view titleForState:UIControlStateNormal]] ) {
return otherView;
}
}
for ( UIView *otherView in views ) {
if ( [otherView isKindOfClass:[view class]] && [(UIButton*)otherView imageForState:UIControlStateNormal] == [(UIButton*)view imageForState:UIControlStateNormal] ) {
return otherView;
}
}
}
// Try to match by title if it's a label
if ( [view isKindOfClass:[UILabel class]] ) {
for ( UIView *otherView in views ) {
if ( [otherView isKindOfClass:[view class]] && [[(UILabel*)otherView text] isEqualToString:[(UILabel*)view text]] ) {
return otherView;
}
}
}
// Try to match by text/placeholder if it's a text field
if ( [view isKindOfClass:[UITextField class]] ) {
for ( UIView *otherView in views ) {
if ( [otherView isKindOfClass:[view class]] && ([(UITextField*)view text] || [(UITextField*)view placeholder]) &&
((![(UITextField*)view text] && ![(UITextField*)otherView text]) || [[(UITextField*)otherView text] isEqualToString:[(UITextField*)view text]]) &&
((![(UITextField*)view placeholder] && ![(UITextField*)otherView placeholder]) || [[(UITextField*)otherView placeholder] isEqualToString:[(UITextField*)view placeholder]]) ) {
return otherView;
}
}
}
// Finally, try to match by class
NSArray *matches = [views filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"class = %@", [view class]]];
if ( [matches count] == 1 ) return [matches lastObject];
#if VERBOSE_MATCH_FAIL
NSMutableString *path = [NSMutableString string];
for ( UIView *v = view.superview; v != nil; v = v.superview ) {
[path insertString:[NSString stringWithFormat:@"%@ => ", 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

View file

@ -88,7 +88,9 @@ static UICompositeViewDescription *compositeDescription = nil;
stateBarEnabled:false
tabBar:nil
tabBarEnabled:false
fullscreen:false];
fullscreen:false
landscapeMode:false
portraitMode:true];
}
return compositeDescription;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View file

@ -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 = "<group>"; };
34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = "<group>"; };
3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "InCallViewController-ipad.xib"; sourceTree = "<group>"; };
3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "PhoneViewController-ipad.xib"; sourceTree = "<group>"; };
344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = "<group>"; };
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 = "<group>"; };
D3C2814A15A2D38D0098AA42 /* dialer_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_selected.png; path = Resources/dialer_selected.png; sourceTree = "<group>"; };
D3C2815115A2D64A0098AA42 /* numpad_star_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_star_over.png; path = Resources/numpad_star_over.png; sourceTree = "<group>"; };
D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_default_landscape.png; path = Resources/conference_default_landscape.png; sourceTree = "<group>"; };
D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_over_landscape.png; path = Resources/conference_over_landscape.png; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hangup_default_landscape.png; path = Resources/hangup_default_landscape.png; sourceTree = "<group>"; };
D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hangup_over_landscape.png; path = Resources/hangup_over_landscape.png; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
D3C31A1815BD8DED008ED271 /* options_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_default_landscape.png; path = Resources/options_default_landscape.png; sourceTree = "<group>"; };
D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_disabled_landscape.png; path = Resources/options_disabled_landscape.png; sourceTree = "<group>"; };
D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_over_landscape.png; path = Resources/options_over_landscape.png; sourceTree = "<group>"; };
D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_selected_landscape.png; path = Resources/options_selected_landscape.png; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = statebar_background_landscape.png; path = Resources/statebar_background_landscape.png; sourceTree = "<group>"; };
D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_default_landscape.png; path = Resources/transfer_default_landscape.png; sourceTree = "<group>"; };
D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_over_landscape.png; path = Resources/transfer_over_landscape.png; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
D3C6526515AC1A8F0092A874 /* UIEditableTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEditableTableViewCell.h; sourceTree = "<group>"; };
D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIEditableTableViewCell.m; sourceTree = "<group>"; };
D3C6526915AC228A0092A874 /* contact_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_default.png; path = Resources/contact_ok_default.png; sourceTree = "<group>"; };
@ -1386,6 +1514,8 @@
D3F795D515A582800077328B /* ChatRoomViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatRoomViewController.xib; sourceTree = "<group>"; };
D3F795DB15A5831C0077328B /* chat_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_default.png; path = Resources/chat_back_default.png; sourceTree = "<group>"; };
D3F795DC15A5831C0077328B /* chat_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_over.png; path = Resources/chat_back_over.png; sourceTree = "<group>"; };
D3F7997F15BD32370018C273 /* TPMultiLayoutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPMultiLayoutViewController.h; path = Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h; sourceTree = "<group>"; };
D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPMultiLayoutViewController.m; path = Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m; sourceTree = "<group>"; };
D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = "<group>"; };
D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = "<group>"; };
D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = "<group>"; };
@ -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 = "<group>";
@ -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 = "<group>";
};
D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */ = {
isa = PBXGroup;
children = (
D3F7997F15BD32370018C273 /* TPMultiLayoutViewController.h */,
D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */,
);
name = TPMultiLayoutViewController;
sourceTree = "<group>";
};
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;
};