From 69550034572923acf2368c2df8b3762395a68b0f Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Thu, 15 Dec 2011 11:53:28 +0100 Subject: [PATCH 01/60] Use ZRTP by default when SRTP is disabled. --- Classes/LinphoneUI/LinphoneManager.m | 2 +- linphonerc | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 65ec30936..fbfc39ae2 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -597,7 +597,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach ms_warning("Disable video for phones prior to iPhone 3GS"); } bool enableSrtp = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_srtp_preference"]; - linphone_core_set_media_encryption(theLinphoneCore, enableSrtp?LinphoneMediaEncryptionSRTP:LinphoneMediaEncryptionNone); + linphone_core_set_media_encryption(theLinphoneCore, enableSrtp?LinphoneMediaEncryptionSRTP:LinphoneMediaEncryptionZRTP); UIDevice* device = [UIDevice currentDevice]; bool backgroundSupported = false; diff --git a/linphonerc b/linphonerc index eee6763a7..c494f1303 100644 --- a/linphonerc +++ b/linphonerc @@ -20,6 +20,7 @@ default_proxy=-1 register_only_when_network_is_up=1 auto_net_state_mon=0 keepalive_period=30000 +media_encryption=zrtp [rtp] audio_rtp_port=7076 From e1fe0f029104e1cfdc55a165239f5917bc5ee607 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 6 Dec 2011 14:28:55 +0100 Subject: [PATCH 02/60] iOS: iPad port (UI and VP8 improvements) New xib files, new home screen. libvpx updated, multithreading enabled --- Classes/InCallViewController-ipad.xib | 1568 ++++++++++++++++++++++++ Classes/IncallViewController.h | 6 +- Classes/IncallViewController.m | 26 +- Classes/LinphoneUI/LinphoneManager.h | 1 + Classes/LinphoneUI/LinphoneManager.m | 8 +- Classes/MainScreenWithVideoPreview.h | 30 + Classes/MainScreenWithVideoPreview.m | 127 ++ Classes/MainScreenWithVideoPreview.xib | 393 ++++++ Classes/PhoneViewController-ipad.xib | 1157 +++++++++++++++++ Classes/PhoneViewController.h | 11 +- Classes/PhoneViewController.m | 29 +- Classes/PhoneViewController.xib | 6 +- Classes/VideoViewController-ipad.xib | 661 ++++++++++ PhoneMainView.xib | 24 +- linphone-Info.plist | 2 + linphone.xcodeproj/project.pbxproj | 54 +- linphonerc-ipad | 47 + submodules/build/builders.d/libvpx.mk | 9 +- submodules/externals/libvpx | 2 +- 19 files changed, 4097 insertions(+), 64 deletions(-) create mode 100644 Classes/InCallViewController-ipad.xib create mode 100644 Classes/MainScreenWithVideoPreview.h create mode 100644 Classes/MainScreenWithVideoPreview.m create mode 100644 Classes/MainScreenWithVideoPreview.xib create mode 100644 Classes/PhoneViewController-ipad.xib create mode 100644 Classes/VideoViewController-ipad.xib create mode 100644 linphonerc-ipad diff --git a/Classes/InCallViewController-ipad.xib b/Classes/InCallViewController-ipad.xib new file mode 100644 index 000000000..cdf915ea3 --- /dev/null +++ b/Classes/InCallViewController-ipad.xib @@ -0,0 +1,1568 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + IBUIViewController + IBUIButton + IBUIView + IBUITableView + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + + 274 + + + + 274 + {768, 805} + + + + _NS:408 + + 3 + MSAwAA + + 2 + + + YES + IBIPadFramework + YES + 0 + YES + 80 + 22 + 22 + + + + 292 + + + + 292 + {{0, 1}, {320, 66}} + + + + 1 + MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA + + NO + NO + IBIPadFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + 3 + MC41AA + + + NSImage + stopcall-red.png + + + NSImage + clavier-01-106px.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {{224, 937}, {320, 77}} + + + + _NS:196 + + 3 + MCAwAA + + IBIPadFramework + + + + 292 + + + + 292 + {{107, 70}, {106, 66}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + conf_merge.png + + + NSImage + grouper.png + + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + + + + 292 + {{0, 4}, {107, 66}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + mic_active.png + + + NSImage + micro_inverse.png + + + NSImage + micro.png + + + 2 + 2 + + + Helvetica-Bold + 18 + 16 + + + + + 292 + {{0, 70}, {107, 66}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + ajouter.png + + + + + + + 292 + {{213, 70}, {107, 66}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + 1 + MCAwIDAAA + + + NSImage + contact.png + + + + + + + -2147483356 + {{213, 70}, {107, 66}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 1 + video + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + clavier-01-160px.png + + + + + + + 292 + {{107, 4}, {106, 66}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + clavier.png + + + + + + + 292 + {{213, 4}, {107, 66}} + + + + + NO + NO + IBIPadFramework + NO + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + HP_inverse.png + + + NSImage + HP.png + + + + + + + 292 + {{107, 70}, {106, 66}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + NSImage + pause_inactif.png + + + NSImage + pause.png + + + + + + {{224, 801.5}, {320, 135}} + + + + + NO + NO + IBIPadFramework + + + + -2147483356 + + + + 292 + {{119, 251}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + close + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{119, 193}, {82, 52}} + + + + + 3 + MC42NjY2NjY2NjY3AA + + NO + NO + IBIPadFramework + 0 + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{31, 19}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 1 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{119, 19}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 2 + + + + + + + + + 292 + {{207, 19}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 3 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{31, 77}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 4 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{119, 77}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 5 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{207, 77}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 6 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{31, 135}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 7 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{119, 135}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 8 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{207, 135}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + 9 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{31, 193}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + * + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{207, 193}, {82, 52}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + # + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + {{178, 146}, {320, 310}} + + + + + 3 + MC4yNAA + + NO + NO + IBIPadFramework + + + {{0, 20}, {768, 1004}} + + + + _NS:212 + + IBIPadFramework + + + 2 + + + 1 + 1 + + IBIPadFramework + NO + + + + + + + addCall + + + + 112 + + + + addVideo + + + + 113 + + + + close + + + + 115 + + + + contacts + + + + 116 + + + + controlSubView + + + + 117 + + + + eight + + + + 118 + + + + endCtrl + + + + 119 + + + + five + + + + 120 + + + + four + + + + 121 + + + + hangUpView + + + + 122 + + + + hash + + + + 123 + + + + mergeCalls + + + + 124 + + + + mute + + + + 125 + + + + nine + + + + 126 + + + + one + + + + 127 + + + + padSubView + + + + 128 + + + + pause + + + + 129 + + + + seven + + + + 130 + + + + six + + + + 131 + + + + speaker + + + + 132 + + + + star + + + + 133 + + + + three + + + + 134 + + + + two + + + + 135 + + + + view + + + + 136 + + + + zero + + + + 137 + + + + callTableView + + + + 114 + + + + dataSource + + + + 139 + + + + delegate + + + + 140 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 59 + + + + + + + + 60 + + + + + + + + + + + 89 + + + + + + + + + + + + + controls + + + 97 + + + pauseresume + + + 96 + + + speaker + + + 95 + + + dialer + + + 94 + + + contacts + + + 93 + + + addcall + + + 92 + + + mute + + + 91 + + + merge + + + 90 + + + video + + + 88 + + + + + + + + 87 + + + + + + + + + + + + + + + + + + pad + + + 111 + + + star + + + 110 + + + 1 + + + 109 + + + 8 + + + 108 + + + hash + + + 107 + + + close + + + 106 + + + 2 + + + 105 + + + 0 + + + 104 + + + 3 + + + 103 + + + 4 + + + 102 + + + 6 + + + 101 + + + 7 + + + 100 + + + 9 + + + 99 + + + 5 + + + 98 + + + end + + + 61 + + + + + + + IncallViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIAddVideoButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIMuteButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UISpeakerButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 140 + + + + + IncallViewController + UIViewController + + doAction: + id + + + doAction: + + doAction: + id + + + + UIButton + UIButton + UITableView + UIButton + UIViewController + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + VideoViewController + UIButton + + + + addCall + UIButton + + + addVideo + UIButton + + + callTableView + UITableView + + + close + UIButton + + + conferenceDetail + UIViewController + + + contacts + UIButton + + + controlSubView + UIView + + + dialer + UIButton + + + eight + UIButton + + + endCtrl + UIButton + + + five + UIButton + + + four + UIButton + + + hangUpView + UIView + + + hash + UIButton + + + mergeCalls + UIButton + + + mute + UIButton + + + nine + UIButton + + + one + UIButton + + + padSubView + UIView + + + pause + UIButton + + + seven + UIButton + + + six + UIButton + + + speaker + UIButton + + + star + UIButton + + + three + UIButton + + + two + UIButton + + + videoViewController + VideoViewController + + + zero + UIButton + + + + IBProjectSource + ./Classes/IncallViewController.h + + + + UIAddVideoButton + UIButton + + IBProjectSource + ./Classes/UIAddVideoButton.h + + + + UICamSwitch + UIButton + + preview + UIView + + + preview + + preview + UIView + + + + IBProjectSource + ./Classes/UICamSwitch.h + + + + UIDigitButton + UIButton + + IBProjectSource + ./Classes/UIDigitButton.h + + + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UIMuteButton + UIToggleButton + + IBProjectSource + ./Classes/UIMuteButton.h + + + + UISpeakerButton + UIToggleButton + + IBProjectSource + ./Classes/UISpeakerButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + VideoViewController + UIViewController + + UICamSwitch + UICamSwitch + UIView + UIView + UIHangUpButton + UIHangUpButton + UIView + UIMuteButton + UIMuteButton + UIView + UIView + UIView + + + + mCamSwitch + UICamSwitch + + + mCamSwitchLand + UICamSwitch + + + mDisplay + UIView + + + mDisplayLand + UIView + + + mHangUp + UIHangUpButton + + + mHangUpLand + UIHangUpButton + + + mLandscape + UIView + + + mMute + UIMuteButton + + + mMuteLand + UIMuteButton + + + mPortrait + UIView + + + mPreview + UIView + + + mPreviewLand + UIView + + + + IBProjectSource + ./Classes/VideoViewController.h + + + + + 0 + IBIPadFramework + YES + 3 + + {107, 67} + {107, 67} + {107, 67} + {106, 60} + {160, 60} + {106, 67} + {16, 16} + {107, 67} + {106, 67} + {20, 20} + {107, 67} + {107, 67} + {106, 67} + {106, 67} + {62, 54} + + 933 + + diff --git a/Classes/IncallViewController.h b/Classes/IncallViewController.h index e6ea4e234..f185a0445 100644 --- a/Classes/IncallViewController.h +++ b/Classes/IncallViewController.h @@ -27,7 +27,7 @@ @interface IncallViewController : UIViewController { - UIView* controlSubView, *callControlSubView, *hangUpView; + UIView* controlSubView, *hangUpView; UIButton* endCtrl; UIButton* dialer; @@ -37,7 +37,7 @@ UIButton* contacts; UIButton* addVideo; UITableView* callTableView; - UIButton* addCall, *mergeCalls, *addToConf; + UIButton* addCall, *mergeCalls; //key pad @@ -87,7 +87,6 @@ + (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIButton*)accessoryView withCall:(LinphoneCall*) call; @property (nonatomic, retain) IBOutlet UIView* controlSubView; -@property (nonatomic, retain) IBOutlet UIView* callControlSubView; @property (nonatomic, retain) IBOutlet UIView* padSubView; @property (nonatomic, retain) IBOutlet UIView* hangUpView; @property (nonatomic, retain) IBOutlet UIViewController* conferenceDetail; @@ -103,7 +102,6 @@ @property (nonatomic, retain) IBOutlet UITableView* callTableView; @property (nonatomic, retain) IBOutlet UIButton* addCall; @property (nonatomic, retain) IBOutlet UIButton* mergeCalls; -@property (nonatomic, retain) IBOutlet UIButton* addToConf; @property (nonatomic, retain) IBOutlet UIButton* one; @property (nonatomic, retain) IBOutlet UIButton* two; diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index d3b984f60..4edef94a3 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -28,12 +28,10 @@ @synthesize controlSubView; -@synthesize callControlSubView; @synthesize padSubView; @synthesize hangUpView; @synthesize conferenceDetail; -@synthesize addToConf; @synthesize endCtrl; @synthesize close; @synthesize mute; @@ -117,11 +115,17 @@ int callCount(LinphoneCore* lc) { [addCall addTarget:self action:@selector(addCallPressed) forControlEvents:UIControlEventTouchUpInside]; [mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside]; //[endCtrl addTarget:self action:@selector(endCallPressed) forControlEvents:UIControlEventTouchUpInside]; - [addToConf addTarget:self action:@selector(addToConfCallPressed) forControlEvents:UIControlEventTouchUpInside]; [pause addTarget:self action:@selector(pauseCallPressed) forControlEvents:UIControlEventTouchUpInside]; [mergeCalls setHidden:YES]; - mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController" + + if ([LinphoneManager runningOnIpad]) { + ms_message("Running on iPad"); + mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController-ipad" + bundle:[NSBundle mainBundle]]; + } else { + mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController" bundle:[NSBundle mainBundle]]; + } conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView" bundle:[NSBundle mainBundle]]; @@ -145,13 +149,6 @@ int callCount(LinphoneCore* lc) { linphone_core_add_all_to_conference(lc); } --(void) addToConfCallPressed { - LinphoneCall* selectedCall = linphone_core_get_current_call([LinphoneManager getLc]); - if (!selectedCall) - return; - linphone_core_add_to_conference([LinphoneManager getLc], selectedCall); -} - -(void) pauseCallPressed { LinphoneCore* lc = [LinphoneManager getLc]; @@ -341,13 +338,6 @@ int callCount(LinphoneCore* lc) { return; } LinphoneCall* selectedCall = linphone_core_get_current_call([LinphoneManager getLc]); - // hide call control subview if no call selected - [callControlSubView setHidden:(selectedCall == NULL)]; - // hide add to conf if no conf exist - if (!callControlSubView.hidden) { - [addToConf setHidden:(linphone_core_get_conference_size(lc) == 0 || - isInConference(selectedCall))]; - } int callsCount = linphone_core_get_calls_nb(lc); // hide pause/resume if in conference if (selectedCall) { diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 5da93e076..6cfec8e7d 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -48,6 +48,7 @@ typedef enum _Connectivity { } +(LinphoneManager*) instance; +(LinphoneCore*) getLc; ++(BOOL) runningOnIpad; -(void) registerLogView:(id) view; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index fbfc39ae2..f7ba9945a 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -711,7 +711,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //get default config from bundle NSBundle* myBundle = [NSBundle mainBundle]; - NSString* factoryConfig = [myBundle pathForResource:@"linphonerc"ofType:nil] ; + NSString* factoryConfig = [myBundle pathForResource:[LinphoneManager runningOnIpad]?@"linphonerc-ipad":@"linphonerc" ofType:nil] ; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *confiFileName = [[paths objectAtIndex:0] stringByAppendingString:@"/.linphonerc"]; NSString *zrtpSecretsFileName = [[paths objectAtIndex:0] stringByAppendingString:@"/zrtp_secrets"]; @@ -852,6 +852,12 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } ++(BOOL) runningOnIpad { +#ifdef UI_USER_INTERFACE_IDIOM + return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); +#endif + return NO; +} @end diff --git a/Classes/MainScreenWithVideoPreview.h b/Classes/MainScreenWithVideoPreview.h new file mode 100644 index 000000000..6b443b6b2 --- /dev/null +++ b/Classes/MainScreenWithVideoPreview.h @@ -0,0 +1,30 @@ +// +// MainScreenWithVideoPreview.h +// linphone +// +// Created by Pierre-Eric Pelloux-Prayer on 07/12/11. +// Copyright (c) 2011 __MyCompanyName__. All rights reserved. +// + +#import +#import +#import "PhoneViewController.h" + +@interface MainScreenWithVideoPreview : UIViewController { + UIWindow *window; + PhoneViewController* phoneMainView; + + + AVCaptureSession* session; + AVCaptureDeviceInput* input; + + int currentCamera; +} + +-(void) showPreview:(BOOL) show; + +-(void) useCameraAtIndex:(NSInteger)camIndex startSession:(BOOL)start; + +@property (nonatomic, retain) IBOutlet PhoneViewController* phoneMainView; +@property (nonatomic, retain) IBOutlet UIWindow *window; +@end diff --git a/Classes/MainScreenWithVideoPreview.m b/Classes/MainScreenWithVideoPreview.m new file mode 100644 index 000000000..5c7d962b0 --- /dev/null +++ b/Classes/MainScreenWithVideoPreview.m @@ -0,0 +1,127 @@ +// +// MainScreenWithVideoPreview.m +// linphone +// +// Created by Pierre-Eric Pelloux-Prayer on 07/12/11. +// Copyright (c) 2011 __MyCompanyName__. All rights reserved. +// + +#import "MainScreenWithVideoPreview.h" +#import + +@implementation MainScreenWithVideoPreview +@synthesize window; +@synthesize phoneMainView; + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + // Custom initialization + } + return self; +} + +- (void)didReceiveMemoryWarning +{ + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + +#pragma mark - View lifecycle + +/* +// Implement loadView to create a view hierarchy programmatically, without using a nib. +- (void)loadView +{ +} +*/ + +// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. +- (void)viewDidLoad +{ + [super viewDidLoad]; + + session = [[AVCaptureSession alloc] init]; + + + + currentCamera = 0; + + + + AVCaptureVideoPreviewLayer* previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session]; + + previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; + previewLayer.frame = self.view.bounds; + [self.view.layer addSublayer:previewLayer]; + + [session beginConfiguration]; + [session setSessionPreset:AVCaptureSessionPresetHigh]; + [session commitConfiguration]; + + [self useCameraAtIndex:0 startSession:NO]; +} + +-(void) switchCameraPressed { + [self useCameraAtIndex: (currentCamera + 1) startSession:YES]; +} + +-(void) useCameraAtIndex:(NSInteger)camIndex startSession:(BOOL)start { + [session stopRunning]; + + if (input != nil) + [session removeInput:input]; + + NSError* error; + + NSAutoreleasePool* pool = [[NSAutoreleasePool alloc]init]; + NSArray* array = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; + currentCamera = camIndex % [array count]; + AVCaptureDevice* device = (AVCaptureDevice*) [array objectAtIndex:currentCamera]; + input = [[AVCaptureDeviceInput deviceInputWithDevice:device + error:&error] retain]; + + [session addInput:input]; + + [pool drain]; + + if (start) + [session startRunning]; +} + + +-(void) showPreview:(BOOL) show { + if (show && !session.running) { + [window addSubview:self.view]; + [window sendSubviewToBack:self.view]; + [session startRunning]; + } else if (!show && session.running) { + [self.view removeFromSuperview]; + [session stopRunning]; + } +} + +-(void) viewDidAppear:(BOOL)animated { + [phoneMainView.switchCamera addTarget:self action:@selector(switchCameraPressed) forControlEvents:UIControlEventTouchUpInside]; +} + +-(void) viewDidDisappear:(BOOL)animated { + +} + +- (void)viewDidUnload +{ + [super viewDidUnload]; + // Release any retained subviews of the main view. + // e.g. self.myOutlet = nil; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return NO; +} + +@end diff --git a/Classes/MainScreenWithVideoPreview.xib b/Classes/MainScreenWithVideoPreview.xib new file mode 100644 index 000000000..8670a5b07 --- /dev/null +++ b/Classes/MainScreenWithVideoPreview.xib @@ -0,0 +1,393 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + IBProxyObject + IBUITabBarItem + IBUIViewController + IBUICustomObject + IBUITabBarController + IBUIWindow + IBUITabBar + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + IBIPadFramework + + + + 292 + {768, 1024} + + + _NS:196 + + 3 + MQA + + NO + NO + + 2 + + IBIPadFramework + YES + + + + + 2 + + + 1 + 1 + + IBIPadFramework + NO + + + Dialer + + NSImage + dialer-orange.png + + IBIPadFramework + + + PhoneViewController-ipad + + + 1 + 1 + + IBIPadFramework + NO + + + + History + + History + + NSImage + history-orange.png + + IBIPadFramework + + + + + 1 + 1 + + IBIPadFramework + NO + + + + + IBIPadFramework + 5 + + + + 1 + 1 + + IBIPadFramework + NO + + + + + IBIPadFramework + 0 + + + + + 1 + 1 + + IBIPadFramework + NO + + + + + 266 + {{0, 975}, {768, 49}} + + + + 3 + MCAwAA + + NO + IBIPadFramework + + + + + + 274 + {{0, 20}, {768, 1004}} + + + _NS:212 + + 1 + MC40MzUwMTEzNDA3IDAuNjI1IDEAA + + IBIPadFramework + + + 2 + + + 1 + 1 + + IBIPadFramework + NO + + + + + + + delegate + + + + 30 + + + + window + + + + 9 + + + + phoneMainView + + + + 44 + + + + window + + + + 27 + + + + myTabBarController + + + + 28 + + + + mMainScreenWithVideoPreview + + + + 31 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + 6 + + + + + + + + 16 + + + linphoneAppDelegate + + + 17 + + + + + + + + + + + + 18 + + + + + + dialer + + + 19 + + + + + + history + + + 20 + + + + + + more + + + 21 + + + + + + Contacts + + + 22 + + + + + 23 + + + + + 24 + + + + + 25 + + + + + 26 + + + + + 7 + + + + + + + + UIApplication + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + linphoneAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + PhoneViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + CallHistoryTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + MoreViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + MainScreenWithVideoPreview + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 44 + + + 0 + IBIPadFramework + YES + 3 + + {25, 24} + {25, 23} + + 933 + + diff --git a/Classes/PhoneViewController-ipad.xib b/Classes/PhoneViewController-ipad.xib new file mode 100644 index 000000000..ca23ef6e4 --- /dev/null +++ b/Classes/PhoneViewController-ipad.xib @@ -0,0 +1,1157 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + IBUILabel + IBUIViewController + IBUIButton + IBUIView + IBUITextField + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + + 274 + + + + 292 + + + + 292 + {{34, 20}, {699, 78}} + + + + + 3 + MQA + + NO + NO + IBIPadFramework + 0 + + sip: + + 3 + MAA + + 2 + + + YES + 15 + + 1 + 3 + IBCocoaTouchFramework + + 1 + + Helvetica + Helvetica + 0 + 36 + + + Helvetica + 36 + 16 + + + + + 292 + {{660, 25}, {66, 68}} + + + + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + effacer.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{413, 277}, {322, 66}} + + + + _NS:241 + NO + IBIPadFramework + 0 + 0 + Switch camera + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + clavier-01-108px.png + + + 2 + 15 + + + + + + -2147483356 + {{573, 112.5}, {160, 231}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 1 + Back + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + clavier-01-160px.png + + + 2 + 2 + + + Helvetica-Bold + 18 + 16 + + + + + -2147483356 + {{415, 112}, {160, 231}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + startcall-green.png + + + + + + + + 292 + {{413, 111}, {320, 167}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + + 292 + {{415, 346}, {320, 29}} + + + + + 3 + MCAwAA + + NO + YES + NO + IBIPadFramework + status + + 1 + MCAwIDAAA + + + 1 + 10 + + 1 + 17 + + + Helvetica + 17 + 16 + + + + + 292 + {{32, 112}, {107, 66}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + IBIPadFramework + 0 + 0 + 1 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + clavier-01-106px.png + + + + + + + 292 + {{139, 112}, {106, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 2 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{245, 112}, {107, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 3 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{245, 178}, {107, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 4 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{139, 178}, {106, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 5 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{32, 178}, {107, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 6 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{32, 244}, {107, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 7 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{139, 244}, {106, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 8 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{245, 244}, {107, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 9 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{139, 309}, {106, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + 0+ + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{32, 309}, {107, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + * + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{245, 309}, {107, 66}} + + + + NO + NO + IBIPadFramework + 0 + 0 + # + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + {{0, 569}, {768, 386}} + + + + _NS:212 + + 3 + MC4zMzMzMzMzMzMzIDAuNQA + + IBIPadFramework + + + {{0, 20}, {768, 1004}} + + + + _NS:212 + + IBIPadFramework + + + 2 + + + 1 + 1 + + IBIPadFramework + NO + + + + + + + eight + + + + 45 + + + + five + + + + 47 + + + + four + + + + 48 + + + + hash + + + + 49 + + + + nine + + + + 50 + + + + one + + + + 51 + + + + seven + + + + 52 + + + + six + + + + 53 + + + + star + + + + 54 + + + + three + + + + 57 + + + + two + + + + 58 + + + + view + + + + 59 + + + + zero + + + + 60 + + + + address + + + + 39 + + + + erase + + + + 46 + + + + backToCallView + + + + 40 + + + + switchCamera + + + + 56 + + + + callShort + + + + 42 + + + + callLarge + + + + 41 + + + + status + + + + 55 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + + + 4 + + + + + + + + 24 + + + + + + + + + + + + + + + + + + + + + + + + + + 33 + + + + + 28 + + + + + 34 + + + + + 27 + + + + + 26 + + + + + 35 + + + + + 29 + + + + + 36 + + + + + 32 + + + + + 31 + + + + + 25 + + + + + 30 + + + + + 23 + + + Address + + + 22 + + + Erase + + + 18 + + + back + + + 38 + + + + + 19 + + + Call-short + + + 20 + + + Call-large + + + 21 + + + + + + + PhoneViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICallButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICallButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIEraseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 60 + + + + + MainScreenWithVideoPreview + UIViewController + + PhoneViewController + UIWindow + + + + phoneMainView + PhoneViewController + + + window + UIWindow + + + + IBProjectSource + ./Classes/MainScreenWithVideoPreview.h + + + + PhoneViewController + UIViewController + + doKeyPad: + id + + + doKeyPad: + + doKeyPad: + id + + + + UITextField + UIButton + UIButton + UIButton + UIView + UIButton + UIEraseButton + UIButton + UIButton + UIButton + MainScreenWithVideoPreview + UITabBarController + UIButton + UIButton + UIButton + UIButton + UIButton + UILabel + UIButton + UIButton + UIButton + UIButton + + + + address + UITextField + + + backToCallView + UIButton + + + callLarge + UIButton + + + callShort + UIButton + + + dialerView + UIView + + + eight + UIButton + + + erase + UIEraseButton + + + five + UIButton + + + four + UIButton + + + hash + UIButton + + + mMainScreenWithVideoPreview + MainScreenWithVideoPreview + + + myTabBarController + UITabBarController + + + nine + UIButton + + + one + UIButton + + + seven + UIButton + + + six + UIButton + + + star + UIButton + + + status + UILabel + + + switchCamera + UIButton + + + three + UIButton + + + two + UIButton + + + zero + UIButton + + + + IBProjectSource + ./Classes/PhoneViewController.h + + + + UICallButton + UIButton + + IBProjectSource + ./Classes/UICallButton.h + + + + UIDigitButton + UIButton + + IBProjectSource + ./Classes/UIDigitButton.h + + + + UIEraseButton + UIButton + + IBProjectSource + ./Classes/UIEraseButton.h + + + + + 0 + IBIPadFramework + YES + 3 + + {106, 60} + {108, 60} + {160, 60} + {66, 65} + {60, 52} + + 933 + + diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h index b9f5f09e2..f30177d2c 100644 --- a/Classes/PhoneViewController.h +++ b/Classes/PhoneViewController.h @@ -22,7 +22,7 @@ #import "UILinphone.h" #import "CallDelegate.h" - +@class MainScreenWithVideoPreview; @class IncallViewController; @class FirstLoginViewController; @@ -54,7 +54,6 @@ UIDigitButton* zero; UIDigitButton* hash; - UIButton* back; UIButton* backToCallView; UITabBarController* myTabBarController; @@ -62,6 +61,9 @@ UIActionSheet *mIncomingCallActionSheet; FirstLoginViewController* myFirstLoginViewController; IncallViewController* mIncallViewController; + MainScreenWithVideoPreview* mMainScreenWithVideoPreview; + + UIButton* switchCamera; } @property (nonatomic, retain) IBOutlet UIView* dialerView; @@ -69,7 +71,6 @@ @property (nonatomic, retain) IBOutlet UITextField* address; @property (nonatomic, retain) IBOutlet UIButton* callShort; @property (nonatomic, retain) IBOutlet UIButton* callLarge; -@property (nonatomic, retain) IBOutlet UIButton* hangup; @property (nonatomic, retain) IBOutlet UILabel* status; @property (nonatomic, retain) IBOutlet UIEraseButton* erase; @@ -86,13 +87,15 @@ @property (nonatomic, retain) IBOutlet UIButton* zero; @property (nonatomic, retain) IBOutlet UIButton* hash; -@property (nonatomic, retain) IBOutlet UIButton* back; @property (nonatomic, retain) IBOutlet UIButton* backToCallView; +@property (nonatomic, retain) IBOutlet UIButton* switchCamera; + // method to handle keypad event - (IBAction)doKeyPad:(id)sender; @property (nonatomic, retain) IBOutlet UITabBarController* myTabBarController; +@property (nonatomic, retain) IBOutlet MainScreenWithVideoPreview* mMainScreenWithVideoPreview; @end diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 6fd2f0fbc..97cd28226 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -23,6 +23,7 @@ #import #import "LinphoneManager.h" #include "FirstLoginViewController.h" +#include "MainScreenWithVideoPreview.h" #include "linphonecore.h" #include "private.h" @@ -31,7 +32,6 @@ @synthesize address ; @synthesize callShort; @synthesize callLarge; -@synthesize hangup; @synthesize status; @synthesize erase; @@ -48,13 +48,15 @@ @synthesize zero; @synthesize hash; -@synthesize back; @synthesize myTabBarController; +@synthesize mMainScreenWithVideoPreview; @synthesize backToCallView; +@synthesize switchCamera; + //implements keypad behavior --(IBAction) doKeyPad:(id)sender { +/*-(IBAction) doKeyPad:(id)sender { if (sender == back) { if ([address.text length] >0) { NSString* newAddress; @@ -63,7 +65,7 @@ } } -} +}*/ - (void)viewDidAppear:(BOOL)animated { [[UIApplication sharedApplication] setIdleTimerDisabled:true]; @@ -73,6 +75,13 @@ [[LinphoneManager instance] setRegistrationDelegate:myFirstLoginViewController]; [self presentModalViewController:myFirstLoginViewController animated:true]; }; + + [mMainScreenWithVideoPreview showPreview:YES]; + [self updateCallAndBackButtons]; +} + +-(void) viewWillDisappear:(BOOL)animated { + [mMainScreenWithVideoPreview showPreview:NO]; } @@ -97,7 +106,8 @@ [callLarge initWithAddress:address]; [erase initWithAddressField:address]; [backToCallView addTarget:self action:@selector(backToCallViewPressed) forControlEvents:UIControlEventTouchUpInside]; - mIncallViewController = [[IncallViewController alloc] initWithNibName:@"IncallViewController" + + mIncallViewController = [[IncallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"IncallViewController" bundle:[NSBundle mainBundle]]; } @@ -189,6 +199,8 @@ withDisplayName:displayName]; [myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; + + [mMainScreenWithVideoPreview showPreview:YES]; } @@ -232,6 +244,7 @@ [mIncomingCallActionSheet release]; } + [mMainScreenWithVideoPreview showPreview:NO]; } -(void) backToCallViewPressed { @@ -248,6 +261,8 @@ [mIncallViewController displayCall:call InProgressFromUI:viewCtrl forUser:username withDisplayName:displayName]; + + [mMainScreenWithVideoPreview showPreview:NO]; } @@ -274,6 +289,8 @@ [mIncallViewController displayVideoCall:call FromUI:viewCtrl forUser:username withDisplayName:displayName]; + + [mMainScreenWithVideoPreview showPreview:NO]; } @@ -294,7 +311,6 @@ [dialerView dealloc]; [callShort dealloc]; [callLarge dealloc]; - [hangup dealloc]; [status dealloc]; [one dealloc]; [two dealloc]; @@ -308,7 +324,6 @@ [star dealloc]; [zero dealloc]; [hash dealloc]; - [back dealloc]; [myTabBarController release]; [mIncallViewController release]; [super dealloc]; diff --git a/Classes/PhoneViewController.xib b/Classes/PhoneViewController.xib index 8e5e6ac92..97777b7b0 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/PhoneViewController.xib @@ -541,8 +541,8 @@ - 1 - MC45MDE5NjA3OSAwLjkwMTk2MDc5IDAuOTAxOTYwNzkAA + 3 + MCAwAA 5 IBCocoaTouchFramework @@ -1265,7 +1265,7 @@ {106, 60} {108, 60} {160, 60} - {164, 104} + {66, 65} {60, 52} diff --git a/Classes/VideoViewController-ipad.xib b/Classes/VideoViewController-ipad.xib new file mode 100644 index 000000000..a4270d57d --- /dev/null +++ b/Classes/VideoViewController-ipad.xib @@ -0,0 +1,661 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + IBUIButton + IBUIImageView + IBUIView + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 274 + {768, 1004} + + + + 4 + MAA + + IBIPadFramework + + + + 274 + + + + 292 + {{-9, 0}, {777, 1004}} + + + _NS:569 + NO + IBIPadFramework + + + + 292 + {{329, 942}, {108, 62}} + + + + NO + IBIPadFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + stopcall-red.png + + + NSImage + clavier-01-108px.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{223, 942}, {108, 62}} + + + + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + 292 + {{598, 779}, {170, 225}} + + + + 3 + MQA + + 2 + + + IBIPadFramework + + + + 292 + {{436, 942}, {108, 62}} + + + + NO + IBIPadFramework + 0 + 0 + 1 + switch + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + {768, 1004} + + + + _NS:212 + + 3 + MC42NjY2NjY2NjY3AA + + IBIPadFramework + + + + 274 + + + + 292 + {1004, 768} + + + _NS:569 + NO + IBIPadFramework + + + + 292 + {{779, 598}, {225, 170}} + + + + + 3 + MQA + + + IBIPadFramework + + + + 292 + {{341, 706}, {108, 62}} + + + + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + 292 + {{448, 706}, {108, 62}} + + + + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + + 292 + {{555, 706}, {108, 62}} + + + NO + IBIPadFramework + 0 + 0 + 1 + switch + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + {1004, 768} + + + + _NS:212 + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + 3 + 3 + + IBIPadFramework + + + + + + + mCamSwitch + + + + 13 + + + + mCamSwitchLand + + + + 14 + + + + mHangUp + + + + 16 + + + + mHangUpLand + + + + 17 + + + + mLandscape + + + + 18 + + + + mPortrait + + + + 19 + + + + mPreview + + + + 20 + + + + mPreviewLand + + + + 21 + + + + view + + + + 22 + + + + mMute + + + + 23 + + + + mMuteLand + + + + 24 + + + + mDisplay + + + + 27 + + + + mDisplayLand + + + + 28 + + + + + + 0 + + + + + + 1 + + + + root + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + + + + + portrait + + + 4 + + + + + + + + + + landscape + + + 5 + + + Hang Up Button + + + 6 + + + + + 7 + + + preview + + + 8 + + + + + 10 + + + + preview + + + 11 + + + Hang Up Button + + + 12 + + + + + 9 + + + + + 25 + + + + + 26 + + + + + + + VideoViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICamSwitch + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMuteButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICamSwitch + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMuteButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 28 + + + + + UICamSwitch + UIButton + + preview + UIView + + + preview + + preview + UIView + + + + IBProjectSource + ./Classes/UICamSwitch.h + + + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UIMuteButton + UIToggleButton + + IBProjectSource + ./Classes/UIMuteButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + VideoViewController + UIViewController + + UICamSwitch + UICamSwitch + UIView + UIView + UIHangUpButton + UIHangUpButton + UIView + UIMuteButton + UIMuteButton + UIView + UIView + UIView + + + + mCamSwitch + UICamSwitch + + + mCamSwitchLand + UICamSwitch + + + mDisplay + UIView + + + mDisplayLand + UIView + + + mHangUp + UIHangUpButton + + + mHangUpLand + UIHangUpButton + + + mLandscape + UIView + + + mMute + UIMuteButton + + + mMuteLand + UIMuteButton + + + mPortrait + UIView + + + mPreview + UIView + + + mPreviewLand + UIView + + + + IBProjectSource + ./Classes/VideoViewController.h + + + + + 0 + IBIPadFramework + YES + 3 + + {108, 60} + {62, 54} + + 933 + + diff --git a/PhoneMainView.xib b/PhoneMainView.xib index f7b3253b1..3953ea8da 100644 --- a/PhoneMainView.xib +++ b/PhoneMainView.xib @@ -47,7 +47,6 @@ {320, 480} - 1 MSAxIDEAA @@ -66,17 +65,17 @@ IBCocoaTouchFramework NO - - - Dialer + + History + + History NSImage - dialer-orange.png + history-orange.png IBCocoaTouchFramework - PhoneViewController 1 @@ -87,17 +86,18 @@ YES - - History - - History + + + + Dialer NSImage - history-orange.png + dialer-orange.png IBCocoaTouchFramework + PhoneViewController 1 @@ -106,7 +106,6 @@ IBCocoaTouchFramework NO - IBCocoaTouchFramework @@ -141,7 +140,6 @@ 266 {{0, 431}, {320, 49}} - 3 MCAwAA diff --git a/linphone-Info.plist b/linphone-Info.plist index a2bb16988..1c7755433 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -26,6 +26,8 @@ 1.1.0.1 NSMainNibFile PhoneMainView + NSMainNibFile~ipad + MainScreenWithVideoPreview UIApplicationExitsOnSuspend UIBackgroundModes diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 7028f4316..26cbb301a 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -218,6 +218,12 @@ 22F254811073D99800AC9B3F /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; 22F51EF6107FA66500F98953 /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; + 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; + 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; + 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 */; }; 344ABD72147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */; }; 344ABD73147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */; }; 344ABD77147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */ = {isa = PBXBuildFile; fileRef = 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */; }; @@ -230,6 +236,12 @@ 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, ); }; }; 34957F3F147D3FBF00DD7A09 /* secured.png in Resources */ = {isa = PBXBuildFile; fileRef = 34957F3E147D3FBF00DD7A09 /* secured.png */; }; + 34CA852F148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34CA852E148F646700503C01 /* MainScreenWithVideoPreview.xib */; }; + 34CA8530148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34CA852E148F646700503C01 /* MainScreenWithVideoPreview.xib */; }; + 34CA8535148F669900503C01 /* VideoViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */; }; + 34CA8536148F669900503C01 /* VideoViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */; }; + 34CA8539148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */; }; + 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */; }; 34F2F678147D2E1C00A2D5E3 /* contact_vide.png in Resources */ = {isa = PBXBuildFile; fileRef = 34F2F677147D2E1C00A2D5E3 /* contact_vide.png */; }; 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; @@ -581,6 +593,9 @@ 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = ""; }; + 341FCA8D149798210084BC26 /* linphonerc-ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-ipad"; sourceTree = ""; }; + 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "InCallViewController-ipad.xib"; sourceTree = ""; }; + 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "PhoneViewController-ipad.xib"; sourceTree = ""; }; 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConferenceCallDetailView.xib; sourceTree = ""; }; 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConferenceCallDetailView.h; sourceTree = ""; }; 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConferenceCallDetailView.m; sourceTree = ""; }; @@ -590,6 +605,10 @@ 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; }; 34957F3E147D3FBF00DD7A09 /* secured.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = secured.png; path = Resources/secured.png; sourceTree = ""; }; + 34CA852E148F646700503C01 /* MainScreenWithVideoPreview.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainScreenWithVideoPreview.xib; sourceTree = ""; }; + 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "VideoViewController-ipad.xib"; sourceTree = ""; }; + 34CA8537148F692A00503C01 /* MainScreenWithVideoPreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainScreenWithVideoPreview.h; sourceTree = ""; }; + 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainScreenWithVideoPreview.m; sourceTree = ""; }; 34F2F677147D2E1C00A2D5E3 /* contact_vide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_vide.png; path = Resources/contact_vide.png; sourceTree = ""; }; 70571E1913FABCB000CDD3C2 /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = Resources/rootca.pem; sourceTree = ""; }; 7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; @@ -701,6 +720,7 @@ 2218A92312FBE1340088A667 /* FirstLoginViewController.m */, 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */, 222A483112F7176F0075F07F /* IncallViewController.xib */, + 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, 222A483212F7176F0075F07F /* IncallViewController.m */, 222A483312F7176F0075F07F /* IncallViewController.h */, 22E0A81B111C44E100B04932 /* MoreViewController.xib */, @@ -714,6 +734,7 @@ 22F2508B107141E100AC9B3F /* PhoneViewController.h */, 22F2508C107141E100AC9B3F /* PhoneViewController.m */, 22F2508D107141E100AC9B3F /* PhoneViewController.xib */, + 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */, 22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */, 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */, 227BCDBF10D4004600FBFD76 /* CallHistoryTableViewController.h */, @@ -724,10 +745,14 @@ 22E028B413B4CCBD0068A713 /* VideoViewController.h */, 22E028B513B4CCBD0068A713 /* VideoViewController.m */, 22E028B613B4CCBD0068A713 /* VideoViewController.xib */, + 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */, 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */, 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */, 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */, 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */, + 34CA8537148F692A00503C01 /* MainScreenWithVideoPreview.h */, + 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */, + 34CA852E148F646700503C01 /* MainScreenWithVideoPreview.xib */, ); path = Classes; sourceTree = ""; @@ -1164,6 +1189,7 @@ 22F254801073D99800AC9B3F /* ringback.wav */, 8D1107310486CEB800E47090 /* linphone-Info.plist */, 2274550710700509006EC466 /* linphonerc */, + 341FCA8D149798210084BC26 /* linphonerc-ipad */, 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */, ); name = Resources; @@ -1301,6 +1327,11 @@ 344ABD72147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */, 344ABD7A147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */, 344ABDE51483E596007420B6 /* unverified.png in Resources */, + 34CA852F148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */, + 34CA8535148F669900503C01 /* VideoViewController-ipad.xib in Resources */, + 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, + 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, + 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1358,6 +1389,11 @@ 344ABD73147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */, 344ABD7B147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */, 344ABDE61483E596007420B6 /* unverified.png in Resources */, + 34CA8530148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */, + 34CA8536148F669900503C01 /* VideoViewController-ipad.xib in Resources */, + 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, + 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, + 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1394,6 +1430,7 @@ 2211DBC014769CB200DEE054 /* IncallViewController.m in Sources */, 22D817AD147A9F33001CFB9C /* UIAddVideoButton.m in Sources */, 344ABD77147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, + 34CA8539148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1427,6 +1464,7 @@ 2211DBC114769CB300DEE054 /* IncallViewController.m in Sources */, 22D817AE147A9F33001CFB9C /* UIAddVideoButton.m in Sources */, 344ABD78147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, + 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1477,7 +1515,7 @@ submodules/externals/speex/include, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", @@ -1489,7 +1527,7 @@ PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; @@ -1545,7 +1583,7 @@ submodules/externals/speex/include, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", @@ -1557,7 +1595,7 @@ "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = DistributionAdhoc; }; @@ -1823,7 +1861,7 @@ submodules/externals/speex/include, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", @@ -1835,7 +1873,7 @@ "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; @@ -1891,7 +1929,7 @@ submodules/externals/speex/include, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", @@ -1903,7 +1941,7 @@ "PROVISIONING_PROFILE[sdk=iphoneos*]" = "075921BC-C7D8-42E1-B864-F05FD9BF841C"; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Distribution; }; diff --git a/linphonerc-ipad b/linphonerc-ipad new file mode 100644 index 000000000..59853ab38 --- /dev/null +++ b/linphonerc-ipad @@ -0,0 +1,47 @@ +[net] +download_bw=512 +upload_bw=512 +firewall_policy=0 +mtu=0 + +[sip] +sip_random_port=1 +sip_port=5060 +sip_tcp_random_port=1 +sip_tcp_port=0 +sip_tls_random_port=1 +sip_tls_port=0 +guess_hostname=1 +contact=sip:toto@unknown-host +inc_timeout=15 +use_info=0 +use_ipv6=0 +default_proxy=-1 +register_only_when_network_is_up=1 +auto_net_state_mon=0 +keepalive_period=30000 + +[rtp] +audio_rtp_port=7076 +video_rtp_port=9078 +audio_jitt_comp=60 +video_jitt_comp=60 +nortp_timeout=30 + +[sound] +playback_dev_id=AU: Audio Unit Receiver +ringer_dev_id=AQ: Audio Queue Device +capture_dev_id=AU: Audio Unit Receiver +echocancellation=0 + +[misc] +history_max_size=30 +max_calls=3 + +[video] +display=1 +capture=1 +show_local=0 +enabled=1 +size=vga + diff --git a/submodules/build/builders.d/libvpx.mk b/submodules/build/builders.d/libvpx.mk index 793c0c33d..4bd2e3be9 100644 --- a/submodules/build/builders.d/libvpx.mk +++ b/submodules/build/builders.d/libvpx.mk @@ -1,16 +1,15 @@ libvpx_configure_options=\ --enable-static --disable-shared \ - --disable-examples -# --extra-cflags="-isysroot $$SYSROOT_PATH " -# -Wl,-syslibroot,$$SYSROOT_PATH " \ - --enable-error-concealment --disable-examples + --enable-error-concealment --disable-examples \ + --enable-realtime-only --enable-spatial-resampling \ + --enable-vp8 --enable-multithread ifneq (,$(findstring armv6,$(host))) libvpx_configure_options+= --target=armv6-darwin-gcc --cpu=arm1176jzf-s else ifneq (,$(findstring armv7,$(host))) libvpx_configure_options+= --target=armv7-darwin-gcc --cpu=cortex-a8 else - libvpx_configure_options+= --force-target=x86-darwin10-gcc + libvpx_configure_options+= --target=x86-darwin10-gcc endif libvpx_dir?=externals/libvpx $(BUILDER_SRC_DIR)/$(libvpx_dir)/patched : diff --git a/submodules/externals/libvpx b/submodules/externals/libvpx index 4341e5af6..aa7335e61 160000 --- a/submodules/externals/libvpx +++ b/submodules/externals/libvpx @@ -1 +1 @@ -Subproject commit 4341e5af66c92531fcd3f3e66ac18e70b3752ca9 +Subproject commit aa7335e610b961626f77130bc99b24de1031601d From d3b45ea79c917a69ef351817a44a0d5b02bf44cf Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 15 Dec 2011 09:37:26 +0100 Subject: [PATCH 03/60] vp8: update build script --- submodules/build/builders.d/libvpx.patch | 71 +++++++++++++++++++++++- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/submodules/build/builders.d/libvpx.patch b/submodules/build/builders.d/libvpx.patch index effa15f01..83dc296ad 100644 --- a/submodules/build/builders.d/libvpx.patch +++ b/submodules/build/builders.d/libvpx.patch @@ -1,8 +1,21 @@ +diff --git a/build/make/ads2gas_apple.pl b/build/make/ads2gas_apple.pl +index 78f4a97..dfceebd 100755 +--- a/build/make/ads2gas_apple.pl ++++ b/build/make/ads2gas_apple.pl +@@ -132,7 +132,7 @@ while () + # Make function visible to linker, and make additional symbol with + # prepended underscore + s/EXPORT\s+\|([\$\w]*)\|/.globl _$1\n\t.globl $1/; +- s/IMPORT\s+\|([\$\w]*)\|/.globl $1/; ++ s/IMPORT\s+\|([\$\w]*)\|/.globl _$1/; + + # No vertical bars required; make additional symbol with prepended + # underscore diff --git a/build/make/configure.sh b/build/make/configure.sh -index 009a6c4..1cd1ea8 100755 +index 1279f78..b7f0c99 100755 --- a/build/make/configure.sh +++ b/build/make/configure.sh -@@ -729,7 +729,7 @@ process_common_toolchain() { +@@ -732,7 +732,7 @@ process_common_toolchain() { TOOLCHAIN_PATH=${SDK_PATH}/usr/bin CC=${TOOLCHAIN_PATH}/gcc AR=${TOOLCHAIN_PATH}/ar @@ -11,7 +24,7 @@ index 009a6c4..1cd1ea8 100755 AS=${TOOLCHAIN_PATH}/as STRIP=${TOOLCHAIN_PATH}/strip NM=${TOOLCHAIN_PATH}/nm -@@ -741,9 +741,9 @@ process_common_toolchain() { +@@ -744,9 +744,9 @@ process_common_toolchain() { ASFLAGS="-version -arch ${tgt_isa} -g" add_cflags -arch ${tgt_isa} @@ -23,3 +36,55 @@ index 009a6c4..1cd1ea8 100755 # This should be overridable alt_libc=${SDK_PATH}/SDKs/iPhoneOS4.3.sdk +diff --git a/vp8/encoder/arm/armv5te/boolhuff_armv5te.asm b/vp8/encoder/arm/armv5te/boolhuff_armv5te.asm +index 5b7e8f6..0dccf66 100644 +--- a/vp8/encoder/arm/armv5te/boolhuff_armv5te.asm ++++ b/vp8/encoder/arm/armv5te/boolhuff_armv5te.asm +@@ -33,7 +33,7 @@ + ldr r3, [r0, #vp8_writer_error] + mov r1, $pos + mov r0, $start +- bl vp8_validate_buffer_arm ++ bl _vp8_validate_buffer_arm + pop {r0-r3, r12, lr} + MEND + +diff --git a/vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm b/vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm +index a1cd467..29819ba 100644 +--- a/vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm ++++ b/vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm +@@ -31,7 +31,7 @@ + ldr r3, [r0, #vp8_writer_error] + mov r1, $pos + mov r0, $start +- bl vp8_validate_buffer_arm ++ bl _vp8_validate_buffer_arm + pop {r0-r3, r12, lr} + MEND + +diff --git a/vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm b/vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm +index 1fa5e6c..69f297f 100644 +--- a/vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm ++++ b/vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm +@@ -31,7 +31,7 @@ + ldr r3, [r0, #vp8_writer_error] + mov r1, $pos + mov r0, $start +- bl vp8_validate_buffer_arm ++ bl _vp8_validate_buffer_arm + pop {r0-r3, r12, lr} + MEND + +diff --git a/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm b/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm +index 3a183aa..4289f0a 100644 +--- a/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm ++++ b/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm +@@ -30,7 +30,7 @@ + ldr r3, [r0, #vp8_writer_error] + mov r1, $pos + mov r0, $start +- bl vp8_validate_buffer_arm ++ bl _vp8_validate_buffer_arm + pop {r0-r3, r12, lr} + MEND + From 6361bfcba5eeab47adc13e6635f549c9cc418578 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 15 Dec 2011 09:38:13 +0100 Subject: [PATCH 04/60] Bump ios version to 1.1.0.50 --- Classes/VideoViewController-ipad.xib | 373 ++++++++++++++++++++++----- linphone-Info.plist | 2 +- linphone.xcodeproj/project.pbxproj | 2 +- 3 files changed, 310 insertions(+), 67 deletions(-) diff --git a/Classes/VideoViewController-ipad.xib b/Classes/VideoViewController-ipad.xib index a4270d57d..ab6124536 100644 --- a/Classes/VideoViewController-ipad.xib +++ b/Classes/VideoViewController-ipad.xib @@ -38,6 +38,7 @@ {768, 1004} + 4 MAA @@ -54,6 +55,7 @@ {{-9, 0}, {777, 1004}} + _NS:569 NO IBIPadFramework @@ -128,6 +130,7 @@ {{598, 779}, {170, 225}} + 3 MQA @@ -164,7 +167,7 @@ {768, 1004} - + _NS:212 3 @@ -182,6 +185,7 @@ {1004, 768} + _NS:569 NO IBIPadFramework @@ -192,7 +196,7 @@ {{779, 598}, {225, 170}} - + 3 MQA @@ -249,6 +253,7 @@ {{555, 706}, {108, 62}} + NO IBIPadFramework 0 @@ -269,7 +274,118 @@ {1004, 768} - + + _NS:212 + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + 3 + 3 + + IBIPadFramework + + + + 274 + + + + 292 + {1004, 768} + + + + _NS:569 + NO + IBIPadFramework + + + + 292 + {{779, 598}, {225, 170}} + + + + + 3 + MQA + + + IBIPadFramework + + + + 292 + {{341, 706}, {108, 62}} + + + + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + 292 + {{448, 706}, {108, 62}} + + + + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + + 292 + {{555, 706}, {108, 62}} + + + + NO + IBIPadFramework + 0 + 0 + 1 + switch + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + {1004, 768} + + + _NS:212 1 @@ -292,14 +408,6 @@ 13 - - - mCamSwitchLand - - - - 14 - mHangUp @@ -308,22 +416,6 @@ 16 - - - mHangUpLand - - - - 17 - - - - mLandscape - - - - 18 - mPortrait @@ -340,14 +432,6 @@ 20 - - - mPreviewLand - - - - 21 - view @@ -364,14 +448,6 @@ 23 - - - mMuteLand - - - - 24 - mDisplay @@ -382,11 +458,99 @@ - mDisplayLand + mCamSwitchLandLeft + + + + 35 + + + + mCamSwitchLandRight + + + + 36 + + + + mDisplayLandLeft + + + + 37 + + + + mDisplayLandRight - 28 + 38 + + + + mHangUpLandLeft + + + + 39 + + + + mHangUpLandRight + + + + 40 + + + + mLandscapeLeft + + + + 41 + + + + mLandscapeRight + + + + 42 + + + + mMuteLandLeft + + + + 43 + + + + mMuteLandRight + + + + 44 + + + + mPreviewLandLeft + + + + 45 + + + + mPreviewLandRight + + + + 46 @@ -439,7 +603,7 @@ - landscape + landscape-right 5 @@ -496,6 +660,46 @@ + + 29 + + + + + + + + + + landscape-left + + + 30 + + + + + 31 + + + Hang Up Button + + + 32 + + + + + 33 + + + preview + + + 34 + + + @@ -511,7 +715,16 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMuteButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICamSwitch + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIHangUpButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -527,7 +740,7 @@ - 28 + 46 @@ -579,53 +792,79 @@ UIViewController UICamSwitch - UICamSwitch + UICamSwitch + UICamSwitch UIView - UIView + UIView + UIView UIHangUpButton - UIHangUpButton - UIView + UIHangUpButton + UIHangUpButton + UIView + UIView UIMuteButton - UIMuteButton + UIMuteButton + UIMuteButton UIView UIView - UIView + UIView + UIView mCamSwitch UICamSwitch - - mCamSwitchLand + + mCamSwitchLandLeft + UICamSwitch + + + mCamSwitchLandRight UICamSwitch mDisplay UIView - - mDisplayLand + + mDisplayLandLeft + UIView + + + mDisplayLandRight UIView mHangUp UIHangUpButton - - mHangUpLand + + mHangUpLandLeft UIHangUpButton - - mLandscape + + mHangUpLandRight + UIHangUpButton + + + mLandscapeLeft + UIView + + + mLandscapeRight UIView mMute UIMuteButton - - mMuteLand + + mMuteLandLeft + UIMuteButton + + + mMuteLandRight UIMuteButton @@ -636,8 +875,12 @@ mPreview UIView - - mPreviewLand + + mPreviewLandLeft + UIView + + + mPreviewLandRight UIView diff --git a/linphone-Info.plist b/linphone-Info.plist index 1c7755433..d830ec52e 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -23,7 +23,7 @@ CFBundleSignature ???? CFBundleVersion - 1.1.0.1 + 1.1.0.50 NSMainNibFile PhoneMainView NSMainNibFile~ipad diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 26cbb301a..ce0f4b8b5 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -1558,7 +1558,7 @@ armv6, ); CODE_SIGN_ENTITLEMENTS = untitled.plist; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_DYNAMIC_NO_PIC = NO; From cf2fda64c5627a9814056df5d1129c017e3a5e34 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 15 Dec 2011 14:41:43 +0100 Subject: [PATCH 05/60] Declare multiple-core cpu for iPad --- Classes/LinphoneUI/LinphoneManager.m | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index f7ba9945a..b2be5fad7 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -810,7 +810,12 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //go directly to bg mode [self enterBackgroundMode]; } - + + if ([LinphoneManager runningOnIpad]) + ms_set_cpu_count(2); + else + ms_set_cpu_count(1); + ms_warning("Linphone [%s] started on [%s]" ,linphone_core_get_version() ,[[UIDevice currentDevice].model cStringUsingEncoding:[NSString defaultCStringEncoding]] ); From bbd14e7d22281bb4a560b0810fa96c080b6b8d89 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 19 Dec 2011 11:12:37 +0100 Subject: [PATCH 06/60] Update linphone --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 1615847ff..27a5dd7e7 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 1615847fff9cabdd1a3b26dd4e711db1e852fbdc +Subproject commit 27a5dd7e7799fbc473532f37309d6ac3cd2b029a From 40783c14e40a1150effac31c5d16e13e0916dd5b Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 19 Dec 2011 11:12:49 +0100 Subject: [PATCH 07/60] Update libvpx And remove patch which isn't necessary anymore. --- submodules/build/builders.d/libvpx.mk | 6 +- submodules/build/builders.d/libvpx.patch | 90 ------------------------ submodules/externals/libvpx | 2 +- 3 files changed, 2 insertions(+), 96 deletions(-) delete mode 100644 submodules/build/builders.d/libvpx.patch diff --git a/submodules/build/builders.d/libvpx.mk b/submodules/build/builders.d/libvpx.mk index 4bd2e3be9..f1acb950c 100644 --- a/submodules/build/builders.d/libvpx.mk +++ b/submodules/build/builders.d/libvpx.mk @@ -12,12 +12,8 @@ else libvpx_configure_options+= --target=x86-darwin10-gcc endif libvpx_dir?=externals/libvpx -$(BUILDER_SRC_DIR)/$(libvpx_dir)/patched : - cd $(BUILDER_SRC_DIR)/$(libvpx_dir) \ - && git apply $(BUILDER_SRC_DIR)/build/builders.d/libvpx.patch \ - && touch $(BUILDER_SRC_DIR)/$(libvpx_dir)/patched -$(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk: $(BUILDER_SRC_DIR)/$(libvpx_dir)/patched +$(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk: mkdir -p $(BUILDER_BUILD_DIR)/$(libvpx_dir) cd $(BUILDER_BUILD_DIR)/$(libvpx_dir)/ \ && host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \ diff --git a/submodules/build/builders.d/libvpx.patch b/submodules/build/builders.d/libvpx.patch deleted file mode 100644 index 83dc296ad..000000000 --- a/submodules/build/builders.d/libvpx.patch +++ /dev/null @@ -1,90 +0,0 @@ -diff --git a/build/make/ads2gas_apple.pl b/build/make/ads2gas_apple.pl -index 78f4a97..dfceebd 100755 ---- a/build/make/ads2gas_apple.pl -+++ b/build/make/ads2gas_apple.pl -@@ -132,7 +132,7 @@ while () - # Make function visible to linker, and make additional symbol with - # prepended underscore - s/EXPORT\s+\|([\$\w]*)\|/.globl _$1\n\t.globl $1/; -- s/IMPORT\s+\|([\$\w]*)\|/.globl $1/; -+ s/IMPORT\s+\|([\$\w]*)\|/.globl _$1/; - - # No vertical bars required; make additional symbol with prepended - # underscore -diff --git a/build/make/configure.sh b/build/make/configure.sh -index 1279f78..b7f0c99 100755 ---- a/build/make/configure.sh -+++ b/build/make/configure.sh -@@ -732,7 +732,7 @@ process_common_toolchain() { - TOOLCHAIN_PATH=${SDK_PATH}/usr/bin - CC=${TOOLCHAIN_PATH}/gcc - AR=${TOOLCHAIN_PATH}/ar -- LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-gcc-4.2.1 -+ LD=${TOOLCHAIN_PATH}/gcc - AS=${TOOLCHAIN_PATH}/as - STRIP=${TOOLCHAIN_PATH}/strip - NM=${TOOLCHAIN_PATH}/nm -@@ -744,9 +744,9 @@ process_common_toolchain() { - ASFLAGS="-version -arch ${tgt_isa} -g" - - add_cflags -arch ${tgt_isa} -- add_ldflags -arch_only ${tgt_isa} -+ add_ldflags "-arch ${tgt_isa} -Wl,-syslibroot,${SDK_PATH}/SDKs/iPhoneOS5.0.sdk" - -- add_cflags "-isysroot ${SDK_PATH}/SDKs/iPhoneOS4.3.sdk" -+ add_cflags "-isysroot ${SDK_PATH}/SDKs/iPhoneOS5.0.sdk" - - # This should be overridable - alt_libc=${SDK_PATH}/SDKs/iPhoneOS4.3.sdk -diff --git a/vp8/encoder/arm/armv5te/boolhuff_armv5te.asm b/vp8/encoder/arm/armv5te/boolhuff_armv5te.asm -index 5b7e8f6..0dccf66 100644 ---- a/vp8/encoder/arm/armv5te/boolhuff_armv5te.asm -+++ b/vp8/encoder/arm/armv5te/boolhuff_armv5te.asm -@@ -33,7 +33,7 @@ - ldr r3, [r0, #vp8_writer_error] - mov r1, $pos - mov r0, $start -- bl vp8_validate_buffer_arm -+ bl _vp8_validate_buffer_arm - pop {r0-r3, r12, lr} - MEND - -diff --git a/vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm b/vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm -index a1cd467..29819ba 100644 ---- a/vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm -+++ b/vp8/encoder/arm/armv5te/vp8_packtokens_armv5.asm -@@ -31,7 +31,7 @@ - ldr r3, [r0, #vp8_writer_error] - mov r1, $pos - mov r0, $start -- bl vp8_validate_buffer_arm -+ bl _vp8_validate_buffer_arm - pop {r0-r3, r12, lr} - MEND - -diff --git a/vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm b/vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm -index 1fa5e6c..69f297f 100644 ---- a/vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm -+++ b/vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.asm -@@ -31,7 +31,7 @@ - ldr r3, [r0, #vp8_writer_error] - mov r1, $pos - mov r0, $start -- bl vp8_validate_buffer_arm -+ bl _vp8_validate_buffer_arm - pop {r0-r3, r12, lr} - MEND - -diff --git a/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm b/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm -index 3a183aa..4289f0a 100644 ---- a/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm -+++ b/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm -@@ -30,7 +30,7 @@ - ldr r3, [r0, #vp8_writer_error] - mov r1, $pos - mov r0, $start -- bl vp8_validate_buffer_arm -+ bl _vp8_validate_buffer_arm - pop {r0-r3, r12, lr} - MEND - diff --git a/submodules/externals/libvpx b/submodules/externals/libvpx index aa7335e61..c8df1656b 160000 --- a/submodules/externals/libvpx +++ b/submodules/externals/libvpx @@ -1 +1 @@ -Subproject commit aa7335e610b961626f77130bc99b24de1031601d +Subproject commit c8df1656bd94928059204242e778bd5b8b9dc7aa From 40056a9875e6a51df9d1c8903794b188d21466da Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 29 Dec 2011 16:55:44 +0100 Subject: [PATCH 08/60] Call quality indicator on audio view --- Classes/IncallViewController.h | 11 +++- Classes/IncallViewController.m | 100 +++++++++++++++++++++++--------- Resources/stat_sys_signal_0.png | Bin 0 -> 905 bytes Resources/stat_sys_signal_1.png | Bin 0 -> 597 bytes Resources/stat_sys_signal_2.png | Bin 0 -> 595 bytes Resources/stat_sys_signal_3.png | Bin 0 -> 594 bytes Resources/stat_sys_signal_4.png | Bin 0 -> 532 bytes 7 files changed, 80 insertions(+), 31 deletions(-) create mode 100644 Resources/stat_sys_signal_0.png create mode 100644 Resources/stat_sys_signal_1.png create mode 100644 Resources/stat_sys_signal_2.png create mode 100644 Resources/stat_sys_signal_3.png create mode 100644 Resources/stat_sys_signal_4.png diff --git a/Classes/IncallViewController.h b/Classes/IncallViewController.h index f185a0445..a17617aa6 100644 --- a/Classes/IncallViewController.h +++ b/Classes/IncallViewController.h @@ -22,6 +22,7 @@ #import "ConferenceCallDetailView.h" #import #include "UILinphone.h" + @class VideoViewController; @interface IncallViewController : UIViewController { @@ -76,22 +77,28 @@ BOOL mIncallViewIsReady; UIImage* verified, *unverified; + UIImage* stat_sys_signal_0, *stat_sys_signal_1, *stat_sys_signal_2, *stat_sys_signal_3, *stat_sys_signal_4; UIActionSheet* zrtpVerificationSheet; } ++ (UIImage*) stat_sys_signal_0; ++ (UIImage*) stat_sys_signal_1; ++ (UIImage*) stat_sys_signal_2; ++ (UIImage*) stat_sys_signal_3; ++ (UIImage*) stat_sys_signal_4; + -(void)displayStatus:(NSString*) message; - (IBAction)doAction:(id)sender; +(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf; -+ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIButton*)accessoryView withCall:(LinphoneCall*) call; ++ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call; @property (nonatomic, retain) IBOutlet UIView* controlSubView; @property (nonatomic, retain) IBOutlet UIView* padSubView; @property (nonatomic, retain) IBOutlet UIView* hangUpView; @property (nonatomic, retain) IBOutlet UIViewController* conferenceDetail; - @property (nonatomic, retain) IBOutlet UIButton* endCtrl; @property (nonatomic, retain) IBOutlet UIButton* dialer; @property (nonatomic, retain) IBOutlet UIButton* mute; diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index 4edef94a3..a376d0051 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -26,7 +26,6 @@ @implementation IncallViewController - @synthesize controlSubView; @synthesize padSubView; @synthesize hangUpView; @@ -68,6 +67,25 @@ } */ ++ (UIImage*) stat_sys_signal_0 { + return [[UIImage imageNamed:@"stat_sys_signal_0.png"] retain]; +} + ++ (UIImage*) stat_sys_signal_1 { + return [[UIImage imageNamed:@"stat_sys_signal_1.png"] retain]; +} + ++ (UIImage*) stat_sys_signal_2 { + return [[UIImage imageNamed:@"stat_sys_signal_2.png"] retain]; +} + ++ (UIImage*) stat_sys_signal_3 { + return [[UIImage imageNamed:@"stat_sys_signal_3.png"] retain]; +} + ++ (UIImage*) stat_sys_signal_4 { + return [[UIImage imageNamed:@"stat_sys_signal_4.png"] retain];; +} bool isInConference(LinphoneCall* call) { if (!call) @@ -472,7 +490,7 @@ int callCount(LinphoneCore* lc) { [self updateActive:(cell == activeCallCell) cell:cell]; } -+ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIButton*)accessoryView withCall:(LinphoneCall*) call { ++ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call { if (call == NULL) { ms_warning("UpdateCell called with null call"); [label setText:@""]; @@ -526,9 +544,8 @@ int callCount(LinphoneCore* lc) { [detailLabel setText:ms]; [ms release]; } - + /* if (accessoryView != nil) { - /* LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); if (enc != LinphoneMediaEncryptionNone) { if (accessoryView.imageView.image == nil) { @@ -540,8 +557,8 @@ int callCount(LinphoneCore* lc) { } } else { [accessoryView setImage: (UIImage*)nil forState:UIControlStateNormal]; - }*/ - } + } + }*/ } @@ -573,7 +590,7 @@ int callCount(LinphoneCore* lc) { [self presentModalViewController:conferenceDetail animated:true]; } - + // UITableViewDataSource (required) - (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [callTableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; @@ -586,48 +603,73 @@ int callCount(LinphoneCore* lc) { } LinphoneCore* lc = [LinphoneManager getLc]; - if (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0) { + + if (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0) { [self updateConferenceCell:cell at:indexPath]; if (linphone_core_is_in_conference(lc)) activeCallCell = cell; - cell.accessoryView = nil; + cell.accessoryView = nil; if (linphone_core_is_in_conference(lc)) cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; else cell.accessoryType = UITableViewCellAccessoryNone; } else { - if (cell.accessoryView == nil) { - UIButton* b = [UIButton buttonWithType:UIButtonTypeCustom]; - [b setFrame:CGRectMake(0, 0, 28, 28)]; - [b setImage:nil forState:UIControlStateNormal]; - b.backgroundColor = [UIColor clearColor]; - b.userInteractionEnabled = YES; - cell.accessoryView = b; - } LinphoneCall* call = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; if (call == nil) return nil; - [IncallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIButton*)cell.accessoryView withCall:call]; + if (cell.accessoryView == nil) { + UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease]; + cell.accessoryView = containerView; + } + else { + for (UIView *view in cell.accessoryView.subviews) { + [view removeFromSuperview]; + } + } + [IncallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIView*)cell.accessoryView withCall:call]; if (linphone_core_get_current_call(lc) == call) activeCallCell = cell; cell.accessoryType = UITableViewCellAccessoryNone; - - LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); - - UIButton* accessoryBtn = (UIButton*) cell.accessoryView; + + // Call Quality Indicator + UIImageView* callquality = [UIImageView new]; + [callquality setFrame:CGRectMake(0, 0, 28, 28)]; + if (linphone_call_get_average_quality(call) >= 4) { + [callquality setImage: [IncallViewController stat_sys_signal_4]]; + } + else if (linphone_call_get_average_quality(call) >= 3) { + [callquality setImage: [IncallViewController stat_sys_signal_3]]; + } + else if (linphone_call_get_average_quality(call) >= 2) { + [callquality setImage: [IncallViewController stat_sys_signal_2]]; + } + else if (linphone_call_get_average_quality(call) >= 1) { + [callquality setImage: [IncallViewController stat_sys_signal_1]]; + } + else { + [callquality setImage: [IncallViewController stat_sys_signal_0]]; + } + [cell.accessoryView addSubview:callquality]; + + LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); if (enc != LinphoneMediaEncryptionNone) { + UIButton* accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [accessoryBtn setFrame:CGRectMake(30, 0, 28, 28)]; + [accessoryBtn setImage:nil forState:UIControlStateNormal]; + accessoryBtn.backgroundColor = [UIColor clearColor]; + accessoryBtn.userInteractionEnabled = YES; + if (enc == LinphoneMediaEncryptionSRTP || linphone_call_get_authentication_token_verified(call)) { [accessoryBtn setImage: verified forState:UIControlStateNormal]; } else { [accessoryBtn setImage: unverified forState:UIControlStateNormal]; } - } else { - [accessoryBtn setImage: (UIImage*)nil forState:UIControlStateNormal]; - } - - if (((UIButton*)cell.accessoryView).imageView.image != nil && linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)) == LinphoneMediaEncryptionZRTP) { - [((UIButton*)cell.accessoryView) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside]; - } + [cell.accessoryView addSubview:accessoryBtn]; + + if (((UIButton*)accessoryBtn).imageView.image != nil && linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)) == LinphoneMediaEncryptionZRTP) { + [((UIButton*)accessoryBtn) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside]; + } + } } cell.userInteractionEnabled = YES; diff --git a/Resources/stat_sys_signal_0.png b/Resources/stat_sys_signal_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0b7a04f44c498a89af7c15399c363fdfec2eb839 GIT binary patch literal 905 zcmV;419tq0P)P000>X1^@s6#OZ}&00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipu9 z3IiUJ%=f?m00Rk0L_t(Y$GuifOH@%9e$JqiE*uqRK*tc25gct6(?Sfx0u4eFO>hJi z)EvzZ5|RYn|!QW?ZEkg&h0=x$xe5?%V2~?ld!gpmyL{ z+~>UaJn!?q=Wq@qfI!4>Rf91yfQW%Hx+(z>u_yqzotJm_J7bh#vt7#C27}?p&z+qd ztwK=%kdTn@{$W`ec6~lPZfd%afGo?H_IPq06c-CRA?Z))fl;BQva*}|CJNfzewzdXIlF-uHiZ`R9h>eXE z^ZMS+h(c<)HM&r)hlg!LaaLzI9@!&>wHY7>HtKnfh?dT9$>&vBa5qsir zI8akl1Bb&QI8{~gtg{o76B9vAemOLRy88Nvjo0@i$VpaK7C7f{I-Mf0tGgR71_#4t zJw7&uo!#BAjgNRvhzOi>#KpxymSybi@1wu3Pn1E6)0Za2YQ^6Eeh?S-oai$oA`lS{ z0s&aeX2JdIM9*2wW<2ld35g35Q4~d#%wn;iwXF>a@$o^N(P$JIhU2=sy3o_xE4Yv? zEXy(&WAOX^Xl-jlOLMdM+3)wmX0u^yYwJ|*>*^}pjg4T81(k~t5v*40FSFU4;@{rJ zHKXxDH)C{kG=3i)!J3?W5C{aW3z72j^7|i`mcI1&^X!60eG@ fdabbk@$UKq2IqP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz_en%SRCwClR?TX{KoFk9C?X;X3aKp~ z#Dj{0C-ETo20n$)&=>I5m*~}#FW{-*DIkc7hzC!t6coJrZ}(f+u!#nZu|0HQ9rBr( zZ|2+C-6*HiiGF*i^an%3PqkXDEf$Nn7?76bKIEJl96 z-xI-Zx1-f+Rc5xu9-mB-NF<^MgF$3Khr{8n;F(N@(&;qKW;2>jr?g(Lb&FhBd?pp2 z_l{I5#r;7xnM_D-C{2`zD!dE?g$m(tn8(9>IEhdJWR4_?qIe?N@AurIn(cP$og|;n zQ#PCB+K(=}5wXBX0Az+?T+I3sCMT_mHNk8)n=~4Y zxD^J;kZ3w>;pF|j-BOl`8A)F$-np{`Vn9Nl_xizt-nD300000NkvXXu0mjf_UI0I literal 0 HcmV?d00001 diff --git a/Resources/stat_sys_signal_2.png b/Resources/stat_sys_signal_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fd543636c9d5c71f3e3557e6552b104b1cfa3e11 GIT binary patch literal 595 zcmV-Z0<8UsP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz^+`lQRCwClR=sKhK@i?MPq7eDP`H?2 zAr>muVj-lqxu@_M(pcK%CDK~?0#*S*2nZq~Vquj?K*833v){rTdzafJ=b0247zaOg z=bM?GojvV*KC|Bzo&A9r_^H)u_siw-@pL*>t`fPfzogUYhhDGuY?CAsi8cq#WHQOZ z;cy^={eI8Z>ve_OHvfBLlf>h3Ga8K|0(LweFLIvG=UFb7WApi(&1N&U*=$Tlxp4Tr zR6;M6Y&I+QgKRpTGP$7)N)cHE5jaH^VzHR;2faE8RRLs55>3+rksJ;OVUf*lw+l{E zDwSBFP!P4BOeT&@V3nEp5p)qEFBXezI2`^g6M%lk3mr0VeX*CEe_Jj;B;*i#+$1O$ zFv`rHUEA$esm*4S_4|Ec34;UDuP_G*G6B1n*6Ve#5SB1R4W+2PFu7bhoe8wnYO(Qn zEG%K6P)ICaBGTA0R4r_&K&x7)Qhdtsx|NR0HsVBm?t zmt1ZQ7b=s^M~qwWvSRG4R;#zgVsU4mNwr#Sl*{EO!!XQiyz#tL@BAt> h9GU!!PofV21_1LdQ+v_>@umO(002ovPDHLkV1g|S2jTz# literal 0 HcmV?d00001 diff --git a/Resources/stat_sys_signal_3.png b/Resources/stat_sys_signal_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4873af3bdf0566ff9b294011217c0fa8cb1feb GIT binary patch literal 594 zcmV-Y0P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz^hrcPRCwClR=a8fQ4pP7SFsRLP}rDg zA(qy`LI`4I<5&0v7HKT)QuqsLt^5J82na&JMl8g_Dv^MKt#7mE!Yp^!?D|-fA{WNN zVeXuJ&g{-z<#0IAZ!eYpU}^Zt=krgq+3aP%-#^~uDF>K3`s zd_yW>*RE75CH4bsG#ZioKxs@7EW9ifg$kiiNYsPf9E4Q>m?MayD4syJ+pX|mvtF;g zgH)?kDi({>>2#>kXjquQ+nJ~g0`zmOP$-Da@EijZm?IMeFBvb~KX~kAnNG@e?F_Sn zKrUuxk!!VDIa;k&qh7BkJjdk4F_sHv&pX+ZQmG^o;W=h!0s|8mGdXHJC)VqA8V-lT zbIj-Si9~oe5PRe0JPVU@xh#V4ZUx<#xHcY7ihOE0NuIDyF}d-G$#c+rgzaO+e&SOx zfS?BV
    >;*CclSnz3h^EojTP9~ES2n3E^2~{2|tyW6}+wHbF8qSRk1_LqX`~AMC zB}=OSF_B1o#A2~~TsS}Je#yekipy(0pMOrL(+5+oTrOA1X0xxFrs=o1;|=-0j8~yz gVe&6NiM|CG00U?;Z&CX87ytkO07*qoM6N<$f^ggiLjV8( literal 0 HcmV?d00001 diff --git a/Resources/stat_sys_signal_4.png b/Resources/stat_sys_signal_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a3320cbb4fd216a1215364d7a59856dee0e1fd32 GIT binary patch literal 532 zcmV+v0_**WP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzwn;=mRCwCFRy~WtKoFh81gu0sA*WYa zTZ@QrSlaj_g01Z}Dedkz2-jMPz14vzTy1T2CkG0)YW%o;3mev$Xk4QUlOd1Eyq%Ao zjdna9>CsDj8cD5Ids{3PABV%C9EVd~*S~YQ-1}%W`og<`M>?JEG0@6nGGvmaFCIxMm9mn_Bz8di{a(qrZQE3>R%tvQQ@7it^?Gf2k>P=qu~gA+w^No% zrNSLT!Ez&6p2Ry z_NY>?*ZIfL0=pE6A;4QszFcHKK`03T)$tNWg0?4=Ei7p#?D$Av&lhdRfiV~k4}+y?eBeI7Zt<& zI%{G7SPAQzsMr|^+6`j`V;)h!K6g7l|Bu_u;Q4)Ed77%D72pcxAN%qFTem% Wt1S+j0li270000 Date: Thu, 29 Dec 2011 17:13:23 +0100 Subject: [PATCH 09/60] Better display of call quality indicator if no media encryption --- Classes/IncallViewController.m | 8 ++++--- linphone.xcodeproj/project.pbxproj | 36 ++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index a376d0051..392f9ab36 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -615,10 +615,11 @@ int callCount(LinphoneCore* lc) { cell.accessoryType = UITableViewCellAccessoryNone; } else { LinphoneCall* call = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); if (call == nil) return nil; if (cell.accessoryView == nil) { - UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease]; + UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease]; cell.accessoryView = containerView; } else { @@ -649,10 +650,9 @@ int callCount(LinphoneCore* lc) { else { [callquality setImage: [IncallViewController stat_sys_signal_0]]; } - [cell.accessoryView addSubview:callquality]; - LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); if (enc != LinphoneMediaEncryptionNone) { + cell.accessoryView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease]; UIButton* accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [accessoryBtn setFrame:CGRectMake(30, 0, 28, 28)]; [accessoryBtn setImage:nil forState:UIControlStateNormal]; @@ -670,6 +670,8 @@ int callCount(LinphoneCore* lc) { [((UIButton*)accessoryBtn) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside]; } } + + [cell.accessoryView addSubview:callquality]; } cell.userInteractionEnabled = YES; diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index ce0f4b8b5..1cc22ef67 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -7,6 +7,18 @@ objects = { /* Begin PBXBuildFile section */ + 1AE0A49814AC5C64002C99BD /* mic_active.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49214AC5C64002C99BD /* mic_active.png */; }; + 1AE0A49914AC5C64002C99BD /* mic_active.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49214AC5C64002C99BD /* mic_active.png */; }; + 1AE0A49A14AC5C64002C99BD /* stat_sys_signal_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */; }; + 1AE0A49B14AC5C64002C99BD /* stat_sys_signal_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */; }; + 1AE0A49C14AC5C64002C99BD /* stat_sys_signal_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49414AC5C64002C99BD /* stat_sys_signal_1.png */; }; + 1AE0A49D14AC5C64002C99BD /* stat_sys_signal_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49414AC5C64002C99BD /* stat_sys_signal_1.png */; }; + 1AE0A49E14AC5C64002C99BD /* stat_sys_signal_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49514AC5C64002C99BD /* stat_sys_signal_2.png */; }; + 1AE0A49F14AC5C64002C99BD /* stat_sys_signal_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49514AC5C64002C99BD /* stat_sys_signal_2.png */; }; + 1AE0A4A014AC5C64002C99BD /* stat_sys_signal_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49614AC5C64002C99BD /* stat_sys_signal_3.png */; }; + 1AE0A4A114AC5C64002C99BD /* stat_sys_signal_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49614AC5C64002C99BD /* stat_sys_signal_3.png */; }; + 1AE0A4A214AC5C64002C99BD /* stat_sys_signal_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49714AC5C64002C99BD /* stat_sys_signal_4.png */; }; + 1AE0A4A314AC5C64002C99BD /* stat_sys_signal_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49714AC5C64002C99BD /* stat_sys_signal_4.png */; }; 1D3623260D0F684500981E51 /* LinphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */; }; 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; @@ -273,6 +285,12 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 1AE0A49214AC5C64002C99BD /* mic_active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = mic_active.png; path = Resources/mic_active.png; sourceTree = ""; }; + 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stat_sys_signal_0.png; path = Resources/stat_sys_signal_0.png; sourceTree = ""; }; + 1AE0A49414AC5C64002C99BD /* stat_sys_signal_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stat_sys_signal_1.png; path = Resources/stat_sys_signal_1.png; sourceTree = ""; }; + 1AE0A49514AC5C64002C99BD /* stat_sys_signal_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stat_sys_signal_2.png; path = Resources/stat_sys_signal_2.png; sourceTree = ""; }; + 1AE0A49614AC5C64002C99BD /* stat_sys_signal_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stat_sys_signal_3.png; path = Resources/stat_sys_signal_3.png; sourceTree = ""; }; + 1AE0A49714AC5C64002C99BD /* stat_sys_signal_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stat_sys_signal_4.png; path = Resources/stat_sys_signal_4.png; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D3623240D0F684500981E51 /* LinphoneAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneAppDelegate.h; sourceTree = ""; }; 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneAppDelegate.m; sourceTree = ""; }; @@ -1151,6 +1169,12 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 1AE0A49214AC5C64002C99BD /* mic_active.png */, + 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */, + 1AE0A49414AC5C64002C99BD /* stat_sys_signal_1.png */, + 1AE0A49514AC5C64002C99BD /* stat_sys_signal_2.png */, + 1AE0A49614AC5C64002C99BD /* stat_sys_signal_3.png */, + 1AE0A49714AC5C64002C99BD /* stat_sys_signal_4.png */, 344ABDE41483E596007420B6 /* unverified.png */, 34957F3E147D3FBF00DD7A09 /* secured.png */, 34F2F677147D2E1C00A2D5E3 /* contact_vide.png */, @@ -1332,6 +1356,12 @@ 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, + 1AE0A49814AC5C64002C99BD /* mic_active.png in Resources */, + 1AE0A49A14AC5C64002C99BD /* stat_sys_signal_0.png in Resources */, + 1AE0A49C14AC5C64002C99BD /* stat_sys_signal_1.png in Resources */, + 1AE0A49E14AC5C64002C99BD /* stat_sys_signal_2.png in Resources */, + 1AE0A4A014AC5C64002C99BD /* stat_sys_signal_3.png in Resources */, + 1AE0A4A214AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1394,6 +1424,12 @@ 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */, + 1AE0A49914AC5C64002C99BD /* mic_active.png in Resources */, + 1AE0A49B14AC5C64002C99BD /* stat_sys_signal_0.png in Resources */, + 1AE0A49D14AC5C64002C99BD /* stat_sys_signal_1.png in Resources */, + 1AE0A49F14AC5C64002C99BD /* stat_sys_signal_2.png in Resources */, + 1AE0A4A114AC5C64002C99BD /* stat_sys_signal_3.png in Resources */, + 1AE0A4A314AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 4fc990d99faf94b0bf1387e2f74e11cb6669421a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 30 Dec 2011 11:45:59 +0100 Subject: [PATCH 10/60] Hiding call quality indicator when needed + start of call quality indicator on video view --- Classes/IncallViewController.m | 30 ++-- Classes/VideoViewController.h | 6 + Classes/VideoViewController.m | 34 ++++ Classes/VideoViewController.xib | 270 +++++--------------------------- 4 files changed, 95 insertions(+), 245 deletions(-) diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index 392f9ab36..d79e41805 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -635,20 +635,26 @@ int callCount(LinphoneCore* lc) { // Call Quality Indicator UIImageView* callquality = [UIImageView new]; [callquality setFrame:CGRectMake(0, 0, 28, 28)]; - if (linphone_call_get_average_quality(call) >= 4) { - [callquality setImage: [IncallViewController stat_sys_signal_4]]; - } - else if (linphone_call_get_average_quality(call) >= 3) { - [callquality setImage: [IncallViewController stat_sys_signal_3]]; - } - else if (linphone_call_get_average_quality(call) >= 2) { - [callquality setImage: [IncallViewController stat_sys_signal_2]]; - } - else if (linphone_call_get_average_quality(call) >= 1) { - [callquality setImage: [IncallViewController stat_sys_signal_1]]; + if (call->state == LinphoneCallStreamsRunning) + { + if (linphone_call_get_average_quality(call) >= 4) { + [callquality setImage: [IncallViewController stat_sys_signal_4]]; + } + else if (linphone_call_get_average_quality(call) >= 3) { + [callquality setImage: [IncallViewController stat_sys_signal_3]]; + } + else if (linphone_call_get_average_quality(call) >= 2) { + [callquality setImage: [IncallViewController stat_sys_signal_2]]; + } + else if (linphone_call_get_average_quality(call) >= 1) { + [callquality setImage: [IncallViewController stat_sys_signal_1]]; + } + else { + [callquality setImage: [IncallViewController stat_sys_signal_0]]; + } } else { - [callquality setImage: [IncallViewController stat_sys_signal_0]]; + [callquality setImage:nil]; } if (enc != LinphoneMediaEncryptionNone) { diff --git a/Classes/VideoViewController.h b/Classes/VideoViewController.h index 48a728d42..a8958ff9d 100644 --- a/Classes/VideoViewController.h +++ b/Classes/VideoViewController.h @@ -51,6 +51,7 @@ @property (nonatomic, retain) IBOutlet UIMuteButton* mMute; @property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUp; @property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitch; +@property (nonatomic, retain) IBOutlet UIImageView *mCallQuality; @property (nonatomic, retain) IBOutlet UIView* mLandscapeRight; @property (nonatomic, retain) IBOutlet UIView* mDisplayLandRight; @@ -65,4 +66,9 @@ @property (nonatomic, retain) IBOutlet UIMuteButton* mMuteLandLeft; @property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandLeft; @property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandLeft; + +- (void) updateCallQualityIndicator; + +- (void) waitBeforeUpdatingCallQualityIndicator; + @end \ No newline at end of file diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m index 56d2476c5..fe4b931a5 100644 --- a/Classes/VideoViewController.m +++ b/Classes/VideoViewController.m @@ -28,6 +28,7 @@ @synthesize mMute; @synthesize mHangUp; @synthesize mCamSwitch; +@synthesize mCallQuality; @synthesize mLandscapeRight; @synthesize mDisplayLandRight; @@ -54,6 +55,7 @@ - (void)dealloc { + [mCallQuality release]; [super dealloc]; } @@ -76,8 +78,38 @@ [mCamSwitch setPreview:mPreview]; [mCamSwitchLandRight setPreview:mPreviewLandRight]; [mCamSwitchLandLeft setPreview:mPreviewLandLeft]; + + [self performSelector:@selector(waitBeforeUpdatingCallQualityIndicator) withObject:nil afterDelay:1]; isFirst=TRUE; } + +- (void) waitBeforeUpdatingCallQualityIndicator +{ + [self performSelectorOnMainThread:@selector(updateCallQualityIndicator) withObject:nil waitUntilDone:YES]; + + [self performSelector:@selector(waitBeforeUpdatingCallQualityIndicator) withObject:nil afterDelay:1]; +} + +- (void) updateCallQualityIndicator +{ + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + + if (linphone_call_get_average_quality(call) >= 4) { + [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_4.png"] retain]]; + } + else if (linphone_call_get_average_quality(call) >= 3) { + [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_3.png"] retain]]; + } + else if (linphone_call_get_average_quality(call) >= 2) { + [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_2.png"] retain]]; + } + else if (linphone_call_get_average_quality(call) >= 1) { + [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_1.png"] retain]]; + } + else { + [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_0.png"] retain]]; + } +} -(void) configureOrientation:(UIInterfaceOrientation) oritentation { @@ -113,6 +145,8 @@ - (void)viewDidUnload { + [mCallQuality release]; + mCallQuality = nil; [super viewDidUnload]; // Release any retained subviews of the main view. diff --git a/Classes/VideoViewController.xib b/Classes/VideoViewController.xib index f754d3f1a..0ba0cefe2 100644 --- a/Classes/VideoViewController.xib +++ b/Classes/VideoViewController.xib @@ -36,11 +36,9 @@ IBCocoaTouchFramework
- + 292 {320, 460} - - 1 MCAwIDAAA @@ -48,7 +46,7 @@ IBCocoaTouchFramework - + 274 YES @@ -57,8 +55,7 @@ 274 {320, 420} - - + 1 NO IBCocoaTouchFramework @@ -68,7 +65,6 @@ 292 {{1, 418}, {108, 62}} - NO IBCocoaTouchFramework @@ -107,7 +103,6 @@ 292 {{106, 418}, {106, 63}} - NO IBCocoaTouchFramework @@ -132,7 +127,6 @@ 292 {{211, 418}, {108, 62}} - NO IBCocoaTouchFramework 0 @@ -154,7 +148,6 @@ 292 {{233, 309}, {80, 106}} - 3 @@ -165,10 +158,18 @@ IBCocoaTouchFramework + + + 292 + {{6, 387}, {28, 28}} + + + _NS:567 + NO + IBCocoaTouchFramework + {320, 480} - - 3 @@ -177,7 +178,7 @@ IBCocoaTouchFramework - + 292 YES @@ -186,7 +187,6 @@ 274 {420, 320} - 3 @@ -200,7 +200,6 @@ 292 {{420, 0}, {60, 108}} - NO IBCocoaTouchFramework @@ -228,7 +227,6 @@ 292 {{420, 107}, {60, 106}} - NO IBCocoaTouchFramework @@ -250,7 +248,6 @@ 292 {{420, 212}, {60, 108}} - NO IBCocoaTouchFramework 0 @@ -271,7 +268,6 @@ 274 {{308, 233}, {106, 80}} - 3 @@ -282,8 +278,6 @@ {480, 320} - - 3 @@ -297,7 +291,7 @@ IBCocoaTouchFramework - + 292 YES @@ -306,8 +300,7 @@ 274 {{60, 0}, {420, 320}} - - + 3 MQA @@ -320,7 +313,6 @@ 292 {60, 108} - NO IBCocoaTouchFramework @@ -342,8 +334,7 @@ 292 {{0, 107}, {60, 106}} - - + NO IBCocoaTouchFramework 0 @@ -364,7 +355,7 @@ 292 {{0, 212}, {60, 108}} - + NO IBCocoaTouchFramework 0 @@ -385,8 +376,6 @@ 274 {{360, 233}, {106, 80}} - - 3 MQA @@ -396,9 +385,7 @@ {480, 320} - - - + 3 MQA @@ -566,6 +553,14 @@ 51 + + + mCallQuality + + + + 54 + @@ -608,6 +603,7 @@ + portrait @@ -731,6 +727,11 @@ display + + 52 + + + @@ -762,6 +763,7 @@ 38.IBPluginDependency 39.IBPluginDependency 5.IBPluginDependency + 52.IBPluginDependency 6.CustomClassName 6.IBPluginDependency 7.CustomClassName @@ -797,6 +799,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIMuteButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIHangUpButton @@ -818,208 +821,9 @@ - 51 - - - - YES - - UICamSwitch - UIButton - - preview - UIView - - - preview - - preview - UIView - - - - IBProjectSource - ./Classes/UICamSwitch.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - ./Classes/UIMuteButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - VideoViewController - UIViewController - - YES - - YES - mCamSwitch - mCamSwitchLandLeft - mCamSwitchLandRight - mDisplay - mDisplayLandLeft - mDisplayLandRight - mHangUp - mHangUpLandLeft - mHangUpLandRight - mLandscapeLeft - mLandscapeRight - mMute - mMuteLandLeft - mMuteLandRight - mPortrait - mPreview - mPreviewLandLeft - mPreviewLandRight - - - YES - UICamSwitch - UICamSwitch - UICamSwitch - UIView - UIView - UIView - UIHangUpButton - UIHangUpButton - UIHangUpButton - UIView - UIView - UIMuteButton - UIMuteButton - UIMuteButton - UIView - UIView - UIView - UIView - - - - YES - - YES - mCamSwitch - mCamSwitchLandLeft - mCamSwitchLandRight - mDisplay - mDisplayLandLeft - mDisplayLandRight - mHangUp - mHangUpLandLeft - mHangUpLandRight - mLandscapeLeft - mLandscapeRight - mMute - mMuteLandLeft - mMuteLandRight - mPortrait - mPreview - mPreviewLandLeft - mPreviewLandRight - - - YES - - mCamSwitch - UICamSwitch - - - mCamSwitchLandLeft - UICamSwitch - - - mCamSwitchLandRight - UICamSwitch - - - mDisplay - UIView - - - mDisplayLandLeft - UIView - - - mDisplayLandRight - UIView - - - mHangUp - UIHangUpButton - - - mHangUpLandLeft - UIHangUpButton - - - mHangUpLandRight - UIHangUpButton - - - mLandscapeLeft - UIView - - - mLandscapeRight - UIView - - - mMute - UIMuteButton - - - mMuteLandLeft - UIMuteButton - - - mMuteLandRight - UIMuteButton - - - mPortrait - UIView - - - mPreview - UIView - - - mPreviewLandLeft - UIView - - - mPreviewLandRight - UIView - - - - - IBProjectSource - ./Classes/VideoViewController.h - - - + 54 + 0 IBCocoaTouchFramework From c4a2d92ee444f01e77cb580afcb5452df39c9ec8 Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Fri, 30 Dec 2011 13:00:26 +0100 Subject: [PATCH 11/60] Update linphone and fix secure icon crash on press --- Classes/IncallViewController.m | 20 ++++++++++++-------- submodules/linphone | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index d79e41805..ec93cef29 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -24,6 +24,8 @@ #include "private.h" #import "ContactPickerDelegate.h" +const NSInteger SECURE_BUTTON_TAG=5; + @implementation IncallViewController @synthesize controlSubView; @@ -658,12 +660,13 @@ int callCount(LinphoneCore* lc) { } if (enc != LinphoneMediaEncryptionNone) { - cell.accessoryView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease]; - UIButton* accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [accessoryBtn setFrame:CGRectMake(30, 0, 28, 28)]; - [accessoryBtn setImage:nil forState:UIControlStateNormal]; - accessoryBtn.backgroundColor = [UIColor clearColor]; - accessoryBtn.userInteractionEnabled = YES; + cell.accessoryView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease]; + UIButton* accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [accessoryBtn setFrame:CGRectMake(30, 0, 28, 28)]; + [accessoryBtn setImage:nil forState:UIControlStateNormal]; + [accessoryBtn setTag:SECURE_BUTTON_TAG]; + accessoryBtn.backgroundColor = [UIColor clearColor]; + accessoryBtn.userInteractionEnabled = YES; if (enc == LinphoneMediaEncryptionSRTP || linphone_call_get_authentication_token_verified(call)) { [accessoryBtn setImage: verified forState:UIControlStateNormal]; @@ -696,8 +699,9 @@ int callCount(LinphoneCore* lc) { CallDelegate* cd = [[CallDelegate alloc] init]; cd.delegate = self; cd.call = call; - - [(UIButton*)[callTableView cellForRowAtIndexPath:path].accessoryView setImage:nil forState:UIControlStateNormal]; + UIView* container=(UIView*)[callTableView cellForRowAtIndexPath:path].accessoryView; + UIButton *button=(UIButton*)[container viewWithTag:SECURE_BUTTON_TAG]; + [button setImage:nil forState:UIControlStateNormal]; zrtpVerificationSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@" Mark auth token '%s' as:",nil),linphone_call_get_authentication_token(call)] delegate:cd diff --git a/submodules/linphone b/submodules/linphone index 27a5dd7e7..5bf95231b 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 27a5dd7e7799fbc473532f37309d6ac3cd2b029a +Subproject commit 5bf95231b51641ce095af49a864cf00fa6837750 From 92f3d85dfdf0ce557bcf584fddb00ef2b3f7f8ff Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 2 Jan 2012 10:27:01 +0100 Subject: [PATCH 12/60] call quality indicator on conf view --- Classes/ConferenceCallDetailView.h | 2 ++ Classes/ConferenceCallDetailView.m | 52 +++++++++++++++++++++++++++++- Classes/VideoViewController.m | 21 +++++++----- 3 files changed, 66 insertions(+), 9 deletions(-) diff --git a/Classes/ConferenceCallDetailView.h b/Classes/ConferenceCallDetailView.h index ccc5d10c8..8e1e19de0 100644 --- a/Classes/ConferenceCallDetailView.h +++ b/Classes/ConferenceCallDetailView.h @@ -29,4 +29,6 @@ @property (nonatomic, retain) IBOutlet UITableView* table; @property (nonatomic, assign) IBOutlet UITableViewCell* conferenceDetailCell; + +-(void) updateCallQuality; @end diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index 0ca6890c5..ede51d08b 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -21,6 +21,8 @@ @synthesize conferenceDetailCell; +NSTimer *callQualityRefresher; + - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; @@ -75,6 +77,25 @@ [speaker reset]; } +-(void) viewDidAppear:(BOOL)animated { + callQualityRefresher = [NSTimer scheduledTimerWithTimeInterval:1 + target:self + selector:@selector(updateCallQuality) + userInfo:nil + repeats:YES]; +} + +-(void) viewDidDisappear:(BOOL)animated { + if (callQualityRefresher != nil) { + [callQualityRefresher invalidate]; + callQualityRefresher=nil; + } +} + +-(void) updateCallQuality { + [table setNeedsDisplay]; +} + #pragma mark - UITableView delegates -(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row % 2) @@ -97,9 +118,38 @@ UILabel* label = (UILabel*) [cell viewWithTag:2]; /* update cell content */ - LinphoneCall* call = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:YES]; + LinphoneCall* call = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:YES]; [IncallViewController updateCellImageView:image Label:label DetailLabel:nil AndAccessoryView:nil withCall:call]; + cell.accessoryType = UITableViewCellAccessoryNone; + if (cell.accessoryView == nil) { + UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease]; + cell.accessoryView = containerView; + } + else { + for (UIView *view in cell.accessoryView.subviews) { + [view removeFromSuperview]; + } + } + UIImageView* callquality = [UIImageView new]; + [callquality setFrame:CGRectMake(0, 0, 28, 28)]; + if (linphone_call_get_average_quality(call) >= 4) { + [callquality setImage: [IncallViewController stat_sys_signal_4]]; + } + else if (linphone_call_get_average_quality(call) >= 3) { + [callquality setImage: [IncallViewController stat_sys_signal_3]]; + } + else if (linphone_call_get_average_quality(call) >= 2) { + [callquality setImage: [IncallViewController stat_sys_signal_2]]; + } + else if (linphone_call_get_average_quality(call) >= 1) { + [callquality setImage: [IncallViewController stat_sys_signal_1]]; + } + else { + [callquality setImage: [IncallViewController stat_sys_signal_0]]; + } + [cell.accessoryView addSubview:callquality]; + tableView.rowHeight = 80;//cell.bounds.size.height; return cell; diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m index fe4b931a5..d9f677f2f 100644 --- a/Classes/VideoViewController.m +++ b/Classes/VideoViewController.m @@ -44,6 +44,8 @@ @synthesize mHangUpLandLeft; @synthesize mCamSwitchLandLeft; +NSTimer *callQualityRefresher; + - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; @@ -79,16 +81,8 @@ [mCamSwitchLandRight setPreview:mPreviewLandRight]; [mCamSwitchLandLeft setPreview:mPreviewLandLeft]; - [self performSelector:@selector(waitBeforeUpdatingCallQualityIndicator) withObject:nil afterDelay:1]; isFirst=TRUE; } - -- (void) waitBeforeUpdatingCallQualityIndicator -{ - [self performSelectorOnMainThread:@selector(updateCallQualityIndicator) withObject:nil waitUntilDone:YES]; - - [self performSelector:@selector(waitBeforeUpdatingCallQualityIndicator) withObject:nil afterDelay:1]; -} - (void) updateCallQualityIndicator { @@ -158,6 +152,11 @@ [super viewDidDisappear:animated]; [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; linphone_core_set_max_calls([LinphoneManager getLc], maxCall); + + if (callQualityRefresher != nil) { + [callQualityRefresher invalidate]; + callQualityRefresher=nil; + } } -(void) viewWillAppear:(BOOL)animated { @@ -183,6 +182,12 @@ - (void) viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; + + callQualityRefresher = [NSTimer scheduledTimerWithTimeInterval:1 + target:self + selector:@selector(updateCallQualityIndicator) + userInfo:nil + repeats:YES]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { From d5bdceb72899f413a0c005236ba2629d1f9e565f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 2 Jan 2012 12:16:58 +0100 Subject: [PATCH 13/60] call quality indicator updated for conf view --- Classes/ConferenceCallDetailView.m | 1 + Classes/VideoViewController.m | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index ede51d08b..884dd0768 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -93,6 +93,7 @@ NSTimer *callQualityRefresher; } -(void) updateCallQuality { + [table reloadData]; [table setNeedsDisplay]; } diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m index d9f677f2f..5fbcd648b 100644 --- a/Classes/VideoViewController.m +++ b/Classes/VideoViewController.m @@ -89,19 +89,19 @@ NSTimer *callQualityRefresher; LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); if (linphone_call_get_average_quality(call) >= 4) { - [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_4.png"] retain]]; + [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; } else if (linphone_call_get_average_quality(call) >= 3) { - [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_3.png"] retain]]; + [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; } else if (linphone_call_get_average_quality(call) >= 2) { - [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_2.png"] retain]]; + [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; } else if (linphone_call_get_average_quality(call) >= 1) { - [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_1.png"] retain]]; + [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; } else { - [mCallQuality setImage: [[UIImage imageNamed:@"stat_sys_signal_0.png"] retain]]; + [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; } } From ffb03f9c359bbf59cf5a2ff5d047fea438397dba Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 2 Jan 2012 15:30:05 +0100 Subject: [PATCH 14/60] Call quality indicator on all video views --- Classes/VideoViewController.h | 2 + Classes/VideoViewController.m | 16 ++++ Classes/VideoViewController.xib | 139 +++++++++++++++++++++++--------- 3 files changed, 119 insertions(+), 38 deletions(-) diff --git a/Classes/VideoViewController.h b/Classes/VideoViewController.h index a8958ff9d..1cad26a13 100644 --- a/Classes/VideoViewController.h +++ b/Classes/VideoViewController.h @@ -59,6 +59,7 @@ @property (nonatomic, retain) IBOutlet UIMuteButton* mMuteLandRight; @property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandRight; @property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandRight; +@property (nonatomic, retain) IBOutlet UIImageView *mCallQualityLandRight; @property (nonatomic, retain) IBOutlet UIView* mLandscapeLeft; @property (nonatomic, retain) IBOutlet UIView* mDisplayLandLeft; @@ -66,6 +67,7 @@ @property (nonatomic, retain) IBOutlet UIMuteButton* mMuteLandLeft; @property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandLeft; @property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandLeft; +@property (retain, nonatomic) IBOutlet UIImageView *mCallQualityLandLeft; - (void) updateCallQualityIndicator; diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m index 5fbcd648b..424f0d118 100644 --- a/Classes/VideoViewController.m +++ b/Classes/VideoViewController.m @@ -36,6 +36,7 @@ @synthesize mMuteLandRight; @synthesize mHangUpLandRight; @synthesize mCamSwitchLandRight; +@synthesize mCallQualityLandRight; @synthesize mLandscapeLeft; @synthesize mDisplayLandLeft; @@ -43,6 +44,7 @@ @synthesize mMuteLandLeft; @synthesize mHangUpLandLeft; @synthesize mCamSwitchLandLeft; +@synthesize mCallQualityLandLeft; NSTimer *callQualityRefresher; @@ -58,6 +60,8 @@ NSTimer *callQualityRefresher; - (void)dealloc { [mCallQuality release]; + [mCallQualityLandRight release]; + [mCallQualityLandLeft release]; [super dealloc]; } @@ -90,18 +94,28 @@ NSTimer *callQualityRefresher; if (linphone_call_get_average_quality(call) >= 4) { [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; + [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; + [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; } else if (linphone_call_get_average_quality(call) >= 3) { [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; + [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; + [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; } else if (linphone_call_get_average_quality(call) >= 2) { [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; + [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; + [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; } else if (linphone_call_get_average_quality(call) >= 1) { [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; + [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; + [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; } else { [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; + [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; + [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; } } @@ -141,6 +155,8 @@ NSTimer *callQualityRefresher; { [mCallQuality release]; mCallQuality = nil; + [self setMCallQualityLandRight:nil]; + [self setMCallQualityLandLeft:nil]; [super viewDidUnload]; // Release any retained subviews of the main view. diff --git a/Classes/VideoViewController.xib b/Classes/VideoViewController.xib index 0ba0cefe2..cd1e2025e 100644 --- a/Classes/VideoViewController.xib +++ b/Classes/VideoViewController.xib @@ -36,9 +36,11 @@ IBCocoaTouchFramework - + 292 {320, 460} + + 1 MCAwIDAAA @@ -46,7 +48,7 @@ IBCocoaTouchFramework - + 274 YES @@ -127,6 +129,7 @@ 292 {{211, 418}, {108, 62}} + NO IBCocoaTouchFramework 0 @@ -170,6 +173,7 @@ {320, 480} + 3 @@ -178,7 +182,7 @@ IBCocoaTouchFramework - + 292 YES @@ -227,7 +231,7 @@ 292 {{420, 107}, {60, 106}} - + NO IBCocoaTouchFramework 0 @@ -248,6 +252,7 @@ 292 {{420, 212}, {60, 108}} + NO IBCocoaTouchFramework 0 @@ -276,8 +281,19 @@ IBCocoaTouchFramework + + + 292 + {{8, 285}, {28, 28}} + + + _NS:567 + NO + IBCocoaTouchFramework + {480, 320} + 3 @@ -291,7 +307,7 @@ IBCocoaTouchFramework - + 292 YES @@ -300,7 +316,7 @@ 274 {{60, 0}, {420, 320}} - + 3 MQA @@ -376,6 +392,7 @@ 274 {{360, 233}, {106, 80}} + 3 MQA @@ -383,8 +400,19 @@ IBCocoaTouchFramework + + + 292 + {{68, 285}, {28, 28}} + + + _NS:567 + NO + IBCocoaTouchFramework + {480, 320} + 3 @@ -489,14 +517,6 @@ 43 - - - mDisplayLandRight - - - - 44 - mPreviewLandRight @@ -505,14 +525,6 @@ 45 - - - mDisplayLandLeft - - - - 46 - mMuteLandLeft @@ -561,6 +573,38 @@ 54 + + + mDisplayLandRight + + + + 44 + + + + mCallQualityLandRight + + + + 58 + + + + mDisplayLandLeft + + + + 46 + + + + mCallQualityLandLeft + + + + 60 + @@ -617,6 +661,9 @@ 9 + + YES + preview @@ -641,11 +688,12 @@ YES - + + landscape-right @@ -668,15 +716,6 @@ Mute - - 15 - - - YES - - - display - 16 @@ -692,6 +731,7 @@ + @@ -700,6 +740,9 @@ 35 + + YES + preview @@ -721,17 +764,33 @@ Mute + + 52 + + + + + 56 + + + + + 15 + + + display + + + 59 + + + 39 display - - 52 - - -
@@ -764,6 +823,8 @@ 39.IBPluginDependency 5.IBPluginDependency 52.IBPluginDependency + 56.IBPluginDependency + 59.IBPluginDependency 6.CustomClassName 6.IBPluginDependency 7.CustomClassName @@ -800,6 +861,8 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIMuteButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIHangUpButton @@ -821,7 +884,7 @@ - 54 + 60
0 From 280992c61f6e9638bb043010b0260b52119611ea Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 3 Jan 2012 10:02:21 +0100 Subject: [PATCH 15/60] Fix DTMF 9 issue --- Classes/PhoneViewController.xib | 82 +++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 25 deletions(-) diff --git a/Classes/PhoneViewController.xib b/Classes/PhoneViewController.xib index 97777b7b0..ef1171aee 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/PhoneViewController.xib @@ -271,7 +271,7 @@ {{0, 196}, {107, 66}} - + NO NO IBCocoaTouchFramework @@ -459,6 +459,7 @@ {{160, 328}, {160, 66}} + NO NO IBCocoaTouchFramework @@ -492,7 +493,7 @@ {{0, 328}, {160, 66}} - + NO NO IBCocoaTouchFramework @@ -518,7 +519,7 @@ {{0, 328}, {320, 66}} - + NO NO IBCocoaTouchFramework @@ -727,15 +728,6 @@ 19
- - - doKeyPad: - - - 1 - - 92 -
@@ -1021,6 +1013,46 @@ YES + + MainScreenWithVideoPreview + UIViewController + + YES + + YES + phoneMainView + window + + + YES + PhoneViewController + UIWindow + + + + YES + + YES + phoneMainView + window + + + YES + + phoneMainView + PhoneViewController + + + window + UIWindow + + + + + IBProjectSource + ./Classes/MainScreenWithVideoPreview.h + + PhoneViewController UIViewController @@ -1040,7 +1072,6 @@ YES address - back backToCallView callLarge callShort @@ -1049,8 +1080,8 @@ erase five four - hangup hash + mMainScreenWithVideoPreview myTabBarController nine one @@ -1058,6 +1089,7 @@ six star status + switchCamera three two zero @@ -1068,14 +1100,13 @@ UIButton UIButton UIButton - UIButton UIView UIButton UIEraseButton UIButton UIButton UIButton - UIButton + MainScreenWithVideoPreview UITabBarController UIButton UIButton @@ -1086,6 +1117,7 @@ UIButton UIButton UIButton + UIButton @@ -1093,7 +1125,6 @@ YES address - back backToCallView callLarge callShort @@ -1102,8 +1133,8 @@ erase five four - hangup hash + mMainScreenWithVideoPreview myTabBarController nine one @@ -1111,6 +1142,7 @@ six star status + switchCamera three two zero @@ -1121,10 +1153,6 @@ address UITextField - - back - UIButton - backToCallView UIButton @@ -1158,12 +1186,12 @@ UIButton - hangup + hash UIButton - hash - UIButton + mMainScreenWithVideoPreview + MainScreenWithVideoPreview myTabBarController @@ -1193,6 +1221,10 @@ status UILabel + + switchCamera + UIButton + three UIButton From edaa567ff10274b28163f12f31787b5bcd390935 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 6 Jan 2012 15:52:28 +0100 Subject: [PATCH 16/60] make video work under iOS/simulator (except camera capture) and rework README --- README | 93 +++++++++++++++++++++++++++------------------ submodules/linphone | 2 +- 2 files changed, 58 insertions(+), 37 deletions(-) diff --git a/README b/README index 7d0f28019..69c6e6e7e 100644 --- a/README +++ b/README @@ -1,57 +1,78 @@ LINPHONE ON IPHONE ****************************************** -Linphone for iPhone depends on liblinphone sdk. To build this sdk, you must install both xcode with iPhone OS SDK and MacPorts (www.macports.org) with the following ports: --nawk --coreutils --automake --autoconf --libtool --intltool --wget --pkgconfig --cmake (for ZRTP support) --yasm --doxygen + +BUILD PREQUISITES +***************** + +Linphone for iPhone depends on liblinphone sdk. This SDK is generated from makefiles and shell scripts. +You must first install both xcode with iPhone OS SDK and MacPorts (www.macports.org) for these scripts to work. + +Once xccode and macports are installed, open a terminal and install the required build-time tools with: + + $ sudo port install nawk coreutils automake autoconf libtool intltool wget pkgconfig cmake yasm doxygen -gas-preprosessor.pl (http://github.com/yuvi/gas-preprocessor/ ) to be copied into /opt/local/bin : -$ wget --no-check-certificate https://raw.github.com/yuvi/gas-preprocessor/master/gas-preprocessor.pl -$ sudo mv gas-preprocessor.pl /opt/local/bin/. +Install gas-preprosessor.pl (http://github.com/yuvi/gas-preprocessor/ ) to be copied into /opt/local/bin : -Link macport libtoolize to glibtoolize (sudo ln -s /opt/local/bin/glibtoolize /opt/local/bin/libtoolize) -Link host's strings to simulator SDK (ln -s /usr/bin/strings /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings) + $ wget --no-check-certificate https://raw.github.com/yuvi/gas-preprocessor/master/gas-preprocessor.pl + $ sudo mv gas-preprocessor.pl /opt/local/bin/. + $ sudo chmod +x /opt/local/bin/gas-preprocessor.pl + +Link macport libtoolize to glibtoolize + + $ sudo ln -s /opt/local/bin/glibtoolize /opt/local/bin/libtoolize + +Link host's strings to simulator SDK + + $ ln -s /usr/bin/strings /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings + + + +BUILDING THE SDK +**************** + + * GPL third parties versus non GPL third parties -*********************************************************************** -*******GPL third parties versus non GPL third parties****************** -*********************************************************************** This sdk can be generated in 2 flavors. Firt is with GPL third parties, it means liblinphone includes GPL third parties like FFMPEG or x264. If you choose this flavor, your final application must comply with GPL in any case. This is the default mode. -To generate the liblinphone multi arch sdk in GPL mode, once the above commands have been executed: - cd submodules/build - make all +To generate the liblinphone multi arch sdk in GPL mode, do: + $ cd submodules/build + $ make all ALTERNATIVELY, you can force liblinphone to use only non GPL code except for liblinphone, mediastremer2, ortp, exosip, osip. -If you choose this flavor, your final application is still subject to GPL except if you have an alternative license for liblinphone, mediastremer2, ortp, exosip, osip. +If you choose this flavor, your final application is still subject to GPL except if you have a commercial license for liblinphone, mediastremer2, ortp, exosip, osip. -To generate the liblinphone multi arch sdkin non GPL mode, once the above commands have been executed: - cd submodules/build - make all enable_gpl_third_parties=no +To generate the liblinphone multi arch sdkin non GPL mode, do: + $ cd submodules/build + $ make all enable_gpl_third_parties=no + -Note: simulator build does not work with this flavor. +The resulting sdk is in liblinphone-sdk/ directory. -****************************************** -****Third party, subject to lincense***** -****************************************** -The liblinphone-sdk is compiled with third parties code that are subject to license, specially: AMR, SILK and X264. -Linphone activates/de-activates these codecs thanks to the preprocessor macros HAVE_SILK, HAVE_AMR, HAVE_X264 positioned in xcode. + +In case you upgrade your IOS SDK, you may force rebuilding everything, by doing + $ make veryclean + $ make all + +BUILDING THE APPLICATION +************************ + +After the SDK is built, just open the linphone xcode project with Xcode, and press "Run". + + * Note regarding third party components subject to license + +The liblinphone-sdk is compiled with third parties code that are subject to patent license, specially: AMR, SILK and X264 codecs. +Linphone controls the embedding of these codecs thanks to the preprocessor macros HAVE_SILK, HAVE_AMR, HAVE_X264 positioned in xcode project. Before embeding these 3 codecs in the final application, make sure to have the right to do so. -****************************************** -In case you upgrade your IOS SDK, you may force configure by using make targets +LIMITATIONS, KNOWN BUGS +*********************** + +* Video capture does not work in simulator (not implemented by simulator ?). +* Sound does not work well (or at all) in simulator -Libraries are available from liblinphone-sdk/ diff --git a/submodules/linphone b/submodules/linphone index 5bf95231b..9c9588ffe 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 5bf95231b51641ce095af49a864cf00fa6837750 +Subproject commit 9c9588ffe6cf8b163f797305b7d9c4e358788b9e From e94fba9564bd270cddc7f2065ab13d76c68586a3 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Wed, 4 Jan 2012 17:24:12 +0100 Subject: [PATCH 17/60] Fix Xcode warnings --- Classes/ConferenceCallDetailView.m | 1 + Classes/IncallViewController.m | 133 ++++++++++++------------- Classes/LinphoneUI/UIBluetoothButton.m | 6 +- Classes/LinphoneUI/UICamSwitch.h | 4 +- Classes/LinphoneUI/UICamSwitch.m | 3 +- Classes/PhoneViewController.h | 5 - Classes/PhoneViewController.m | 63 ++++-------- Classes/VideoViewController.h | 2 - 8 files changed, 90 insertions(+), 127 deletions(-) diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index 884dd0768..08467e3a8 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -18,6 +18,7 @@ @synthesize back; @synthesize hangup; @synthesize table; +@synthesize addCall; @synthesize conferenceDetailCell; diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index ec93cef29..a0d43dce3 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -17,6 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #import "IncallViewController.h" +#import "VideoViewController.h" #import #import #import "linphonecore.h" @@ -58,16 +59,8 @@ const NSInteger SECURE_BUTTON_TAG=5; @synthesize hash; @synthesize videoViewController; -/* -// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { - // Custom initialization +@synthesize addVideo; - } - return self; -} -*/ + (UIImage*) stat_sys_signal_0 { return [[UIImage imageNamed:@"stat_sys_signal_0.png"] retain]; @@ -108,6 +101,63 @@ int callCount(LinphoneCore* lc) { return count; } +-(void) updateUIFromLinphoneState:(UIViewController *)viewCtrl { + activeCallCell = nil; + [mute reset]; + + LinphoneCore* lc; + + @try { + lc = [LinphoneManager getLc]; + + if (callCount([LinphoneManager getLc]) > 1) { + [pause setHidden:YES]; + [mergeCalls setHidden:NO]; + } else { + [pause setHidden:NO]; + [mergeCalls setHidden:YES]; + } + + [callTableView reloadData]; + } @catch (NSException* exc) { + return; + } + LinphoneCall* selectedCall = linphone_core_get_current_call([LinphoneManager getLc]); + int callsCount = linphone_core_get_calls_nb(lc); + // hide pause/resume if in conference + if (selectedCall) { + if (linphone_core_is_in_conference(lc)) + [pause setHidden:YES]; + else if (callCount(lc) == callsCount && callsCount == 1) { + [pause setHidden:NO]; + pause.selected = NO; + } else { + [pause setHidden:YES]; + } + } else { + if (callsCount == 1) { + LinphoneCall* c = (LinphoneCall*)linphone_core_get_calls(lc)->data; + if (linphone_call_get_state(c) == LinphoneCallPaused || + linphone_call_get_state(c) == LinphoneCallPausing) { + [pause setHidden:NO]; + pause.selected = YES; + } + [pause setHidden:NO]; + } else { + [pause setHidden:YES]; + } + } + [mergeCalls setHidden:!pause.hidden]; + + // update conference details view if diaplsyed + if (self.presentedViewController == conferenceDetail) { + if (!linphone_core_is_in_conference(lc)) + [self dismissModalViewControllerAnimated:YES]; + else + [conferenceDetail.table reloadData]; + } +} + // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; @@ -288,7 +338,7 @@ int callCount(LinphoneCore* lc) { } -(void) dismissVideoView { - [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO]; + [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; [self dismissModalViewControllerAnimated:FALSE];//just in case mVideoShown=FALSE; } @@ -315,7 +365,7 @@ int callCount(LinphoneCore* lc) { linphone_core_set_native_video_window_id([LinphoneManager getLc],0); linphone_core_set_native_preview_window_id([LinphoneManager getLc],0); } - [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO]; + [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; [self dismissModalViewControllerAnimated:FALSE];//just in case } @@ -325,7 +375,7 @@ int callCount(LinphoneCore* lc) { } -(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { if (mIncallViewIsReady) { - [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; + [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; mVideoShown=TRUE; [self presentModalViewController:mVideoViewController animated:true]; } else { @@ -333,65 +383,6 @@ int callCount(LinphoneCore* lc) { mVideoIsPending=TRUE; } } --(void) updateUIFromLinphoneState:(UIViewController *)viewCtrl { - activeCallCell = nil; - [mute reset]; - // if ( - // [pause reset]; - - - LinphoneCore* lc; - - @try { - lc = [LinphoneManager getLc]; - - if (callCount([LinphoneManager getLc]) > 1) { - [pause setHidden:YES]; - [mergeCalls setHidden:NO]; - } else { - [pause setHidden:NO]; - [mergeCalls setHidden:YES]; - } - - [callTableView reloadData]; - } @catch (NSException* exc) { - return; - } - LinphoneCall* selectedCall = linphone_core_get_current_call([LinphoneManager getLc]); - int callsCount = linphone_core_get_calls_nb(lc); - // hide pause/resume if in conference - if (selectedCall) { - if (linphone_core_is_in_conference(lc)) - [pause setHidden:YES]; - else if (callCount(lc) == callsCount && callsCount == 1) { - [pause setHidden:NO]; - pause.selected = NO; - } else { - [pause setHidden:YES]; - } - } else { - if (callsCount == 1) { - LinphoneCall* c = (LinphoneCall*)linphone_core_get_calls(lc)->data; - if (linphone_call_get_state(c) == LinphoneCallPaused || - linphone_call_get_state(c) == LinphoneCallPausing) { - [pause setHidden:NO]; - pause.selected = YES; - } - [pause setHidden:NO]; - } else { - [pause setHidden:YES]; - } - } - [mergeCalls setHidden:!pause.hidden]; - - // update conference details view if diaplsyed - if (self.presentedViewController == conferenceDetail) { - if (!linphone_core_is_in_conference(lc)) - [self dismissModalViewControllerAnimated:YES]; - else - [conferenceDetail.table reloadData]; - } -} - (IBAction)doAction:(id)sender { diff --git a/Classes/LinphoneUI/UIBluetoothButton.m b/Classes/LinphoneUI/UIBluetoothButton.m index 4f3248a39..c565779be 100644 --- a/Classes/LinphoneUI/UIBluetoothButton.m +++ b/Classes/LinphoneUI/UIBluetoothButton.m @@ -29,7 +29,7 @@ if (au!=0) ms_error("UIBluetoothButton error for %s: ret=%ld",method,au) //redirect audio to bluetooth UInt32 size = sizeof(CFStringRef); - CFStringRef route="HeadsetBT"; + CFStringRef route=CFSTR("HeadsetBT"); OSStatus result = AudioSessionSetProperty(kAudioSessionProperty_AudioRoute, size, &route); check_auresult(result,"set kAudioSessionProperty_AudioRoute HeadsetBT"); @@ -52,8 +52,8 @@ if (au!=0) ms_error("UIBluetoothButton error for %s: ret=%ld",method,au) ); check_auresult(result,"set kAudioSessionProperty_OverrideCategoryEnableBluetoothInput 0"); UInt32 size = sizeof(CFStringRef); - CFStringRef route="ReceiverAndMicrophone"; - result = AudioSessionSetProperty(kAudioSessionProperty_AudioRoute, &size, &route); + CFStringRef route=CFSTR("ReceiverAndMicrophone"); + result = AudioSessionSetProperty(kAudioSessionProperty_AudioRoute, size, &route); check_auresult(result,"set kAudioSessionProperty_AudioRoute ReceiverAndMicrophone"); diff --git a/Classes/LinphoneUI/UICamSwitch.h b/Classes/LinphoneUI/UICamSwitch.h index beaab07e6..a3927bf17 100644 --- a/Classes/LinphoneUI/UICamSwitch.h +++ b/Classes/LinphoneUI/UICamSwitch.h @@ -23,8 +23,8 @@ @interface UICamSwitch : UIButton { @private - char* currentCamId; - char* nextCamId; + const char* currentCamId; + const char* nextCamId; UIView* preview; } @property (nonatomic, retain) IBOutlet UIView* preview; diff --git a/Classes/LinphoneUI/UICamSwitch.m b/Classes/LinphoneUI/UICamSwitch.m index aaa3032e3..45c208c4d 100644 --- a/Classes/LinphoneUI/UICamSwitch.m +++ b/Classes/LinphoneUI/UICamSwitch.m @@ -32,7 +32,8 @@ linphone_core_update_call([LinphoneManager getLc] , linphone_core_get_current_call([LinphoneManager getLc]) ,NULL); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],preview); + linphone_core_set_native_preview_window_id([LinphoneManager getLc], + (unsigned long)preview); } } diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h index f30177d2c..259af213d 100644 --- a/Classes/PhoneViewController.h +++ b/Classes/PhoneViewController.h @@ -91,11 +91,6 @@ @property (nonatomic, retain) IBOutlet UIButton* switchCamera; - -// method to handle keypad event -- (IBAction)doKeyPad:(id)sender; - - @property (nonatomic, retain) IBOutlet UITabBarController* myTabBarController; @property (nonatomic, retain) IBOutlet MainScreenWithVideoPreview* mMainScreenWithVideoPreview; @end diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 97cd28226..da2455057 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -19,6 +19,7 @@ #import "PhoneViewController.h" #import "linphoneAppDelegate.h" +#import "IncallViewController.h" #import #import #import "LinphoneManager.h" @@ -55,17 +56,25 @@ @synthesize switchCamera; -//implements keypad behavior -/*-(IBAction) doKeyPad:(id)sender { - if (sender == back) { - if ([address.text length] >0) { - NSString* newAddress; - newAddress = [address.text substringToIndex: [address.text length]-1]; - [address setText:newAddress]; - } - } - -}*/ +-(void) updateCallAndBackButtons { + @try { + if (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0) { + [callLarge setHidden:FALSE]; + [callShort setHidden:TRUE]; + [backToCallView setHidden:TRUE]; + } else { + [callShort setEnabled:!linphone_core_sound_resources_locked([LinphoneManager getLc])]; + [callLarge setHidden:TRUE]; + [callShort setHidden:FALSE]; + [backToCallView setHidden:FALSE]; + } + } @catch (NSException* exc) { + // R.A.S: linphone core si simply not ready... + ms_warning("Exception %s: %s", + [exc.name cStringUsingEncoding:[NSString defaultCStringEncoding]], + [exc.reason cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } +} - (void)viewDidAppear:(BOOL)animated { [[UIApplication sharedApplication] setIdleTimerDisabled:true]; @@ -109,20 +118,8 @@ mIncallViewController = [[IncallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"IncallViewController" bundle:[NSBundle mainBundle]]; - } - - - -/* - // Override to allow orientations other than the default portrait orientation. - - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); - } - */ - - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; @@ -144,26 +141,6 @@ return YES; } --(void) updateCallAndBackButtons { - @try { - if (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0) { - [callLarge setHidden:FALSE]; - [callShort setHidden:TRUE]; - [backToCallView setHidden:TRUE]; - } else { - [callShort setEnabled:!linphone_core_sound_resources_locked([LinphoneManager getLc])]; - [callLarge setHidden:TRUE]; - [callShort setHidden:FALSE]; - [backToCallView setHidden:FALSE]; - } - } @catch (NSException* exc) { - // R.A.S: linphone core si simply not ready... - ms_warning("Exception %s: %s", - [exc.name cStringUsingEncoding:[NSString defaultCStringEncoding]], - [exc.reason cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } -} - -(void)viewWillAppear:(BOOL)animated { [self updateCallAndBackButtons]; } diff --git a/Classes/VideoViewController.h b/Classes/VideoViewController.h index 1cad26a13..7f4db8d17 100644 --- a/Classes/VideoViewController.h +++ b/Classes/VideoViewController.h @@ -71,6 +71,4 @@ - (void) updateCallQualityIndicator; -- (void) waitBeforeUpdatingCallQualityIndicator; - @end \ No newline at end of file From 6a6ca627ac48e983887318134be9ae59b2c414d3 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 5 Jan 2012 13:12:26 +0100 Subject: [PATCH 18/60] Idle mode: screen is always allowed to be turned, except during calls Only 3 views prevent to turn off iPhone' screen: * in call view * video call view * conference call view --- Classes/ConferenceCallDetailView.m | 3 +++ Classes/IncallViewController.m | 1 + Classes/PhoneViewController.m | 1 - 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index 08467e3a8..7eceffcc8 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -76,6 +76,7 @@ NSTimer *callQualityRefresher; [table reloadData]; [mute reset]; [speaker reset]; + [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; } -(void) viewDidAppear:(BOOL)animated { @@ -87,6 +88,8 @@ NSTimer *callQualityRefresher; } -(void) viewDidDisappear:(BOOL)animated { + [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; + if (callQualityRefresher != nil) { [callQualityRefresher invalidate]; callQualityRefresher=nil; diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index a0d43dce3..9fa171804 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -247,6 +247,7 @@ int callCount(LinphoneCore* lc) { -(void) viewWillAppear:(BOOL)animated {} -(void)viewDidAppear:(BOOL)animated { + [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; [super viewDidAppear:animated]; if (dismissed) { [self dismissModalViewControllerAnimated:true]; diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index da2455057..4fc041da2 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -77,7 +77,6 @@ } - (void)viewDidAppear:(BOOL)animated { - [[UIApplication sharedApplication] setIdleTimerDisabled:true]; if ([[NSUserDefaults standardUserDefaults] boolForKey:@"enable_first_login_view_preference"] == true) { myFirstLoginViewController = [[FirstLoginViewController alloc] initWithNibName:@"FirstLoginViewController" bundle:[NSBundle mainBundle]]; From 4325741e61192c387b0d1602494ad934675e8fd2 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 6 Jan 2012 10:43:23 +0100 Subject: [PATCH 19/60] Fix objC memory leaks --- Classes/CallHistoryTableViewController.m | 27 ++++++++++++++--------- Classes/ConferenceCallDetailView.m | 1 + Classes/ConsoleViewController.m | 4 ++-- Classes/ContactPickerDelegate.m | 4 +++- Classes/FirstLoginViewController.m | 2 ++ Classes/IncallViewController.m | 16 +++++++------- Classes/LinphoneAppDelegate.m | 3 +++ Classes/LinphoneUI/FastAddressBook.m | 1 + Classes/LinphoneUI/LinphoneManager.m | 28 +++++++++++++++++------- Classes/LinphoneUI/UICallButton.h | 1 - Classes/LinphoneUI/UICallButton.m | 3 ++- Classes/LinphoneUI/UIToggleButton.h | 1 - Classes/PhoneViewController.m | 3 ++- 13 files changed, 61 insertions(+), 33 deletions(-) diff --git a/Classes/CallHistoryTableViewController.m b/Classes/CallHistoryTableViewController.m index ab7dc6a83..13d07f9c3 100644 --- a/Classes/CallHistoryTableViewController.m +++ b/Classes/CallHistoryTableViewController.m @@ -43,6 +43,7 @@ target:self action:@selector(doAction:)]; [self.navigationItem setRightBarButtonItem:clearButton]; + [clearButton release]; } /* @@ -144,15 +145,21 @@ const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; const char* displayName = linphone_address_get_display_name(partyToDisplay); + // explicit release are needed to avoid mem leaks : NSString are created with retainCount == 1. + // Assigning them to a textLabel.text property (which has 'retain' flag) bumps it to 2. So we set them back to 1. if (displayName) { - [cell.textLabel setText:[[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]]; - [cell.detailTextLabel setText:[NSString stringWithFormat:@"%s"/* [%s]"*/,username/*,callLogs->start_date*/]]; - } else { - [cell.textLabel setText:[[NSString alloc] initWithCString:username encoding:[NSString defaultCStringEncoding]]]; - [cell.detailTextLabel setText:nil]; - } - - + NSString* str1 = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]; + [cell.textLabel setText:str1]; + NSString* str2 = [NSString stringWithFormat:@"%s"/* [%s]"*/,username/*,callLogs->start_date*/]; + [cell.detailTextLabel setText:str2]; + [str1 release]; + assert(str1.retainCount == 1); + } else { + NSString* str1 = [[NSString alloc] initWithCString:username encoding:[NSString defaultCStringEncoding]]; + [cell.textLabel setText:str1]; + [cell.detailTextLabel setText:nil]; + [str1 release]; + } return cell; } @@ -191,8 +198,8 @@ } [[LinphoneManager instance].callDelegate displayDialerFromUI:self forUser:phoneNumber - withDisplayName:[[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]]; - + withDisplayName:[[[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]] autorelease]]; + [phoneNumber release]; } diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index 7eceffcc8..a8f47c07b 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -156,6 +156,7 @@ NSTimer *callQualityRefresher; [cell.accessoryView addSubview:callquality]; tableView.rowHeight = 80;//cell.bounds.size.height; + [callquality release]; return cell; } diff --git a/Classes/ConsoleViewController.m b/Classes/ConsoleViewController.m index 36a01a466..c2ee28379 100644 --- a/Classes/ConsoleViewController.m +++ b/Classes/ConsoleViewController.m @@ -41,10 +41,10 @@ NSMutableString* MoreViewController_logs; // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; - UIBarButtonItem* clear = [[UIBarButtonItem alloc] + UIBarButtonItem* clear = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self - action:@selector(doAction)]; + action:@selector(doAction)] autorelease]; [self.navigationItem setRightBarButtonItem:clear]; } diff --git a/Classes/ContactPickerDelegate.m b/Classes/ContactPickerDelegate.m index 62f429dfa..00d53e489 100644 --- a/Classes/ContactPickerDelegate.m +++ b/Classes/ContactPickerDelegate.m @@ -38,7 +38,9 @@ NSString *phoneNumber = (NSString *)ABMultiValueCopyValueAtIndex(multiValue, valueIdx); [[LinphoneManager instance].callDelegate displayDialerFromUI:nil forUser:phoneNumber - withDisplayName:(NSString*)ABRecordCopyCompositeName(person)]; + withDisplayName:[(NSString*)ABRecordCopyCompositeName(person) autorelease]]; + [phoneNumber release]; + CFRelease(multiValue); return false; } diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 335604561..99bd808c5 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -77,6 +77,7 @@ cancelButtonTitle:NSLocalizedString(@"Continue",nil) otherButtonTitles:nil]; [error show]; + [error release]; } else { [[NSUserDefaults standardUserDefaults] setObject:username.text forKey:@"username_preference"]; [[NSUserDefaults standardUserDefaults] setObject:passwd.text forKey:@"password_preference"]; @@ -104,6 +105,7 @@ cancelButtonTitle:@"Continue" otherButtonTitles:nil ,nil]; [error show]; + [error release]; //erase uername passwd [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"username_preference"]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"password_preference"]; diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index 9fa171804..cc62ef1f0 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -63,23 +63,23 @@ const NSInteger SECURE_BUTTON_TAG=5; + (UIImage*) stat_sys_signal_0 { - return [[UIImage imageNamed:@"stat_sys_signal_0.png"] retain]; + return [UIImage imageNamed:@"stat_sys_signal_0.png"]; } + (UIImage*) stat_sys_signal_1 { - return [[UIImage imageNamed:@"stat_sys_signal_1.png"] retain]; + return [UIImage imageNamed:@"stat_sys_signal_1.png"]; } + (UIImage*) stat_sys_signal_2 { - return [[UIImage imageNamed:@"stat_sys_signal_2.png"] retain]; + return [UIImage imageNamed:@"stat_sys_signal_2.png"]; } + (UIImage*) stat_sys_signal_3 { - return [[UIImage imageNamed:@"stat_sys_signal_3.png"] retain]; + return [UIImage imageNamed:@"stat_sys_signal_3.png"]; } + (UIImage*) stat_sys_signal_4 { - return [[UIImage imageNamed:@"stat_sys_signal_4.png"] retain];; + return [UIImage imageNamed:@"stat_sys_signal_4.png"]; } bool isInConference(LinphoneCall* call) { @@ -393,7 +393,7 @@ int callCount(LinphoneCore* lc) { } else if (sender == contacts) { // start people picker myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; - [myPeoplePickerController setPeoplePickerDelegate:[[ContactPickerDelegate alloc] init] /*self*/]; + [myPeoplePickerController setPeoplePickerDelegate:[[[ContactPickerDelegate alloc] init] autorelease]]; [self presentModalViewController: myPeoplePickerController animated:true]; } else if (sender == close) { @@ -494,7 +494,7 @@ int callCount(LinphoneCore* lc) { if (addr) { const char* lUserNameChars=linphone_address_get_username(addr); - NSString* lUserName = lUserNameChars?[[NSString alloc] initWithUTF8String:lUserNameChars]:NSLocalizedString(@"Unknown",nil); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); NSMutableString* mss = [[NSMutableString alloc] init]; /* contact name */ const char* n = linphone_address_get_display_name(addr); @@ -509,7 +509,6 @@ int callCount(LinphoneCore* lc) { imageView.image = [[LinphoneManager instance] getImageFromAddressBook:lUserName]; } [mss release]; - [lUserName release]; } else { [label setText:@"plop"]; imageView.image = nil; @@ -673,6 +672,7 @@ int callCount(LinphoneCore* lc) { } [cell.accessoryView addSubview:callquality]; + [callquality release]; } cell.userInteractionEnabled = YES; diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index dcb97b6b7..2a813d0f5 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -112,6 +112,7 @@ //more tab MoreViewController *moreViewController = [[MoreViewController alloc] initWithNibName:@"MoreViewController" bundle:[NSBundle mainBundle]]; UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:moreViewController]; + [moreViewController release]; //copy tab bar item aNavigationController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:MORE_TAB_INDEX] tabBarItem]; @@ -119,7 +120,9 @@ NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.myTabBarController.viewControllers]; [newArray replaceObjectAtIndex:CONTACTS_TAB_INDEX withObject:myPeoplePickerController]; [newArray replaceObjectAtIndex:MORE_TAB_INDEX withObject:aNavigationController]; + [aNavigationController release]; [newArray replaceObjectAtIndex:HISTORY_TAB_INDEX withObject:aCallHistNavigationController]; + [aCallHistNavigationController release]; [myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; [myTabBarController setViewControllers:newArray animated:NO]; diff --git a/Classes/LinphoneUI/FastAddressBook.m b/Classes/LinphoneUI/FastAddressBook.m index c08762045..1f88a0077 100644 --- a/Classes/LinphoneUI/FastAddressBook.m +++ b/Classes/LinphoneUI/FastAddressBook.m @@ -62,6 +62,7 @@ void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void Contact* lContact = [[Contact alloc] initWithRecord:lPerson ofType:(NSString *)lLocalizedLabel]; [lAddressBookMap setObject:lContact forKey:lNormalizedKey]; CFRelease(lValue); + [lContact release]; if (lLabel) CFRelease(lLabel); if (lLocalizedLabel) CFRelease(lLocalizedLabel); } diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index b2be5fad7..4fad424d5 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -92,7 +92,7 @@ extern void libmssilk_init(); linphone_call_log_set_ref_key(log, ltmpString); CFRelease(lFormatedString); } - return (NSString*)lDisplayName; + return [(NSString*)lDisplayName autorelease]; } //[number release]; @@ -112,7 +112,7 @@ extern void libmssilk_init(); } else { d = (NSData*)ABPersonCopyImageData(person); } - return [UIImage imageWithData:d]; + return [UIImage imageWithData:[d autorelease]]; } } /* return default image */ @@ -143,16 +143,18 @@ extern void libmssilk_init(); } else { ms_message("No contact entry found for [%s] in address book",lUserName); } + + [lE164Number release]; return; } -(void) onCall:(LinphoneCall*) call StateChanged: (LinphoneCallState) new_state withMessage: (const char *) message { const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); - NSString* lUserName = lUserNameChars?[[NSString alloc] initWithUTF8String:lUserNameChars]:NSLocalizedString(@"Unknown",nil); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); if (new_state == LinphoneCallIncomingReceived) { [self updateCallWithAddressBookData:call]; // display name is updated } const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); - NSString* lDisplayName = lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@""; + NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease]; bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); @@ -216,6 +218,7 @@ extern void libmssilk_init(); cancelButtonTitle:NSLocalizedString(@"Dismiss",nil) otherButtonTitles:nil]; [error show]; + [error release]; if (canHideInCallView) { [callDelegate displayDialerFromUI:mCurrentViewController forUser:@"" @@ -277,7 +280,9 @@ static void linphone_iphone_log(struct _LinphoneCore * lc, const char * message) } //status static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char * message) { - [(LinphoneManager*)linphone_core_get_user_data(lc) displayStatus:[[NSString alloc] initWithCString:message encoding:[NSString defaultCStringEncoding]]]; + NSString* status = [[NSString alloc] initWithCString:message encoding:[NSString defaultCStringEncoding]]; + [(LinphoneManager*)linphone_core_get_user_data(lc) displayStatus:status]; + [status release]; } static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall* call, LinphoneCallState state,const char* message) { @@ -350,6 +355,10 @@ static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall* call, Lin } } + + [lUserName release]; + [lDisplayName release]; + [lDomain release]; } static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyConfig* cfg, LinphoneRegistrationState state,const char* message) { @@ -491,8 +500,6 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //clear existing proxy config linphone_core_clear_proxy_config(theLinphoneCore); if (username && [username length] >0 && domain && [domain length]>0) { - - const char* identity = [[NSString stringWithFormat:@"sip:%@@%@",username,domain] cStringUsingEncoding:[NSString defaultCStringEncoding]]; const char* password = [accountPassword cStringUsingEncoding:[NSString defaultCStringEncoding]]; @@ -546,6 +553,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach cancelButtonTitle:NSLocalizedString(@"Continue",nil) otherButtonTitles:NSLocalizedString(@"Never remind",nil),nil]; [error show]; + [error release]; } } @@ -620,7 +628,10 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach NSString *platform = [[NSString alloc ] initWithUTF8String:machine]; free(machine); - return ![platform isEqualToString:@"iPhone1,2"]; + BOOL result = ![platform isEqualToString:@"iPhone1,2"]; + + [platform release]; + return result; } // no proxy configured alert @@ -789,6 +800,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach cancelButtonTitle:NSLocalizedString(@"Ok",nil) otherButtonTitles:nil ,nil]; [error show]; + [error release]; } /*DETECT cameras*/ frontCamId= backCamId=nil; diff --git a/Classes/LinphoneUI/UICallButton.h b/Classes/LinphoneUI/UICallButton.h index 08301ae5c..f5dc0db54 100644 --- a/Classes/LinphoneUI/UICallButton.h +++ b/Classes/LinphoneUI/UICallButton.h @@ -22,7 +22,6 @@ @interface UICallButton : UIButton { @private - char mDigit; UITextField* mAddress; } -(void) initWithAddress:(UITextField*) address; diff --git a/Classes/LinphoneUI/UICallButton.m b/Classes/LinphoneUI/UICallButton.m index 7846548d8..58ddac124 100644 --- a/Classes/LinphoneUI/UICallButton.m +++ b/Classes/LinphoneUI/UICallButton.m @@ -30,6 +30,7 @@ cancelButtonTitle:NSLocalizedString(@"Continue",nil) otherButtonTitles:nil]; [error show]; + [error release]; return; } if (TRUE /*!linphone_core_in_call([LinphoneManager getLc])*/) { @@ -50,7 +51,7 @@ cancelButtonTitle:NSLocalizedString(@"Continue",nil) otherButtonTitles:nil]; [error show]; - + [error release]; } else { char normalizedUserName[256]; NSString* toUserName = [NSString stringWithString:[mAddress text]]; diff --git a/Classes/LinphoneUI/UIToggleButton.h b/Classes/LinphoneUI/UIToggleButton.h index 61ba8aba7..b76550652 100644 --- a/Classes/LinphoneUI/UIToggleButton.h +++ b/Classes/LinphoneUI/UIToggleButton.h @@ -29,7 +29,6 @@ @private UIImage* mOnImage; UIImage* mOffImage; - id mActionHandler; bool mIsOn; diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 4fc041da2..b76e61b36 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -93,10 +93,11 @@ } -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. +// Implement viewDidLoad to do additional setup after loading the view, typically from a nib : called twice (?!) - (void)viewDidLoad { [super viewDidLoad]; + [mDisplayName release]; mDisplayName = [UILabel alloc]; [zero initWithNumber:'0' addressField:address dtmf:false]; [one initWithNumber:'1' addressField:address dtmf:false]; From 8bbd36a62a61c94d38204a83e527071ca86e9149 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 9 Jan 2012 11:10:49 +0100 Subject: [PATCH 20/60] Log UI visibility changes --- Classes/IncallViewController.m | 89 ++++++++++------------------ Classes/LinphoneUI/LinphoneManager.h | 2 + Classes/LinphoneUI/LinphoneManager.m | 11 ++++ Classes/PhoneViewController.m | 28 ++++----- 4 files changed, 55 insertions(+), 75 deletions(-) diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index cc62ef1f0..3e5045437 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -25,6 +25,10 @@ #include "private.h" #import "ContactPickerDelegate.h" +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) +#define AT __FILE__ ":" TOSTRING(__LINE__) + const NSInteger SECURE_BUTTON_TAG=5; @implementation IncallViewController @@ -109,15 +113,10 @@ int callCount(LinphoneCore* lc) { @try { lc = [LinphoneManager getLc]; - - if (callCount([LinphoneManager getLc]) > 1) { - [pause setHidden:YES]; - [mergeCalls setHidden:NO]; - } else { - [pause setHidden:NO]; - [mergeCalls setHidden:YES]; - } - + + [LinphoneManager set:pause hidden:(callCount([LinphoneManager getLc]) > 1) withName:"PAUSE button" andReason:"call count"]; + [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; + [callTableView reloadData]; } @catch (NSException* exc) { return; @@ -126,28 +125,28 @@ int callCount(LinphoneCore* lc) { int callsCount = linphone_core_get_calls_nb(lc); // hide pause/resume if in conference if (selectedCall) { - if (linphone_core_is_in_conference(lc)) - [pause setHidden:YES]; + if (linphone_core_is_in_conference(lc)) { + [LinphoneManager set:pause hidden:YES withName:"PAUSE button" andReason:"is in conference"]; + } else if (callCount(lc) == callsCount && callsCount == 1) { - [pause setHidden:NO]; + [LinphoneManager set:pause hidden:NO withName:"PAUSE button" andReason:"call count == 1"]; pause.selected = NO; } else { - [pause setHidden:YES]; + [LinphoneManager set:pause hidden:YES withName:"PAUSE button" andReason:AT]; } } else { if (callsCount == 1) { LinphoneCall* c = (LinphoneCall*)linphone_core_get_calls(lc)->data; if (linphone_call_get_state(c) == LinphoneCallPaused || linphone_call_get_state(c) == LinphoneCallPausing) { - [pause setHidden:NO]; pause.selected = YES; } - [pause setHidden:NO]; + [LinphoneManager set:pause hidden:NO withName:"PAUSE button" andReason:AT]; } else { - [pause setHidden:YES]; + [LinphoneManager set:pause hidden:YES withName:"PAUSE button" andReason:AT]; } } - [mergeCalls setHidden:!pause.hidden]; + [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:AT]; // update conference details view if diaplsyed if (self.presentedViewController == conferenceDetail) { @@ -184,9 +183,8 @@ int callCount(LinphoneCore* lc) { [addCall addTarget:self action:@selector(addCallPressed) forControlEvents:UIControlEventTouchUpInside]; [mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside]; - //[endCtrl addTarget:self action:@selector(endCallPressed) forControlEvents:UIControlEventTouchUpInside]; [pause addTarget:self action:@selector(pauseCallPressed) forControlEvents:UIControlEventTouchUpInside]; - [mergeCalls setHidden:YES]; + [LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"]; if ([LinphoneManager runningOnIpad]) { ms_message("Running on iPad"); @@ -210,16 +208,19 @@ int callCount(LinphoneCore* lc) { } -(void) addCallPressed { + [LinphoneManager logUIElementPressed:"CALL button"]; [self dismissModalViewControllerAnimated:true]; } -(void) mergeCallsPressed { + [LinphoneManager logUIElementPressed:"MERGE button"]; LinphoneCore* lc = [LinphoneManager getLc]; linphone_core_add_all_to_conference(lc); } -(void) pauseCallPressed { + [LinphoneManager logUIElementPressed:"PAUSE button"]; LinphoneCore* lc = [LinphoneManager getLc]; LinphoneCall* currentCall = linphone_core_get_current_call(lc); @@ -279,14 +280,11 @@ int callCount(LinphoneCore* lc) { && [device isMultitaskingSupported]) { bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; bool startVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"start_video_preference"]; - if (enableVideo && !startVideo) { - [addVideo setHidden:FALSE]; - [contacts setHidden:TRUE]; - } else { - [addVideo setHidden:TRUE]; - [contacts setHidden:FALSE]; - } - } } + + [LinphoneManager set:contacts hidden:(enableVideo && !startVideo) withName:"CONTACT button" andReason:AT]; + [LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT]; + } + } } -(void) viewWillDisappear:(BOOL)animated { @@ -318,10 +316,10 @@ int callCount(LinphoneCore* lc) { } -(void) displayPad:(bool) enable { - [callTableView setHidden:enable]; - [hangUpView setHidden:enable]; - [controlSubView setHidden:enable]; - [padSubView setHidden:!enable]; + [LinphoneManager set:callTableView hidden:enable withName:"CALL_TABLE view" andReason:AT]; + [LinphoneManager set:hangUpView hidden:enable withName:"HANG_UP view" andReason:AT]; + [LinphoneManager set:controlSubView hidden:enable withName:"CONTROL view" andReason:AT]; + [LinphoneManager set:padSubView hidden:!enable withName:"PAD view" andReason:AT]; } -(void) displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { //restaure view @@ -537,21 +535,6 @@ int callCount(LinphoneCore* lc) { [detailLabel setText:ms]; [ms release]; } - /* - if (accessoryView != nil) { - LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); - if (enc != LinphoneMediaEncryptionNone) { - if (accessoryView.imageView.image == nil) { - if (enc == LinphoneMediaEncryptionSRTP || linphone_call_get_authentication_token_verified(call)) { - [accessoryView setImage: verified forState:UIControlStateNormal]; - } else { - [accessoryView setImage: unverified forState:UIControlStateNormal]; - } - } - } else { - [accessoryView setImage: (UIImage*)nil forState:UIControlStateNormal]; - } - }*/ } @@ -746,20 +729,10 @@ int callCount(LinphoneCore* lc) { return count; } -// UITableViewDataSource -//- (NSArray*) sectionIndexTitlesForTableView:(UITableView *)tableView { -// return [NSArray arrayWithObjects:@"Conf", @"Calls", nil ]; -//} - // UITableViewDataSource - (NSString*) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return nil; - return @"Calls"; - if (section == 0 && linphone_core_get_conference_size([LinphoneManager getLc]) > 0) - return @"Conference"; - else - return @"Calls"; } // UITableViewDataSource @@ -773,9 +746,7 @@ int callCount(LinphoneCore* lc) { [tableView deselectRowAtIndexPath:indexPath animated:NO]; LinphoneCore* lc = [LinphoneManager getLc]; - - //[[callTableView cellForRowAtIndexPath:indexPath] setSelected:YES animated:NO]; - + bool inConf = (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0); LinphoneCall* selectedCall = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:inConf]; diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 6cfec8e7d..6b8114db3 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -49,6 +49,8 @@ typedef enum _Connectivity { +(LinphoneManager*) instance; +(LinphoneCore*) getLc; +(BOOL) runningOnIpad; ++(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; ++(void) logUIElementPressed:(const char*) name; -(void) registerLogView:(id) view; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 4fad424d5..be75fb53f 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -876,5 +876,16 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach return NO; } ++(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason{ + if (view.hidden != hidden) { + ms_message("UI - '%s' is now '%s' ('%s')", name, hidden ? "HIDDEN" : "SHOWN", reason); + [view setHidden:hidden]; + } +} + ++(void) logUIElementPressed:(const char*) name { + ms_message("UI - '%s' pressed", name); +} + @end diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index b76e61b36..a99cfe838 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -58,16 +58,14 @@ -(void) updateCallAndBackButtons { @try { - if (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0) { - [callLarge setHidden:FALSE]; - [callShort setHidden:TRUE]; - [backToCallView setHidden:TRUE]; - } else { + bool zeroCall = (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0); + + [LinphoneManager set:callLarge hidden:!zeroCall withName:"CALL_LARGE button" andReason:__FUNCTION__]; + [LinphoneManager set:callShort hidden:zeroCall withName:"CALL_SHORT button" andReason:__FUNCTION__]; + [LinphoneManager set:backToCallView hidden:zeroCall withName:"BACK button" andReason:__FUNCTION__]; + + if (!callShort.hidden) [callShort setEnabled:!linphone_core_sound_resources_locked([LinphoneManager getLc])]; - [callLarge setHidden:TRUE]; - [callShort setHidden:FALSE]; - [backToCallView setHidden:FALSE]; - } } @catch (NSException* exc) { // R.A.S: linphone core si simply not ready... ms_warning("Exception %s: %s", @@ -249,16 +247,14 @@ [self presentModalViewController:(UIViewController*)mIncallViewController animated:true]; } - - - + [mIncallViewController displayInCall:call FromUI:viewCtrl forUser:username withDisplayName:displayName]; - [callLarge setHidden:TRUE]; - [callShort setHidden:FALSE]; - [backToCallView setHidden:FALSE]; - + + [LinphoneManager set:callLarge hidden:YES withName:"CALL_LARGE button" andReason:__FUNCTION__]; + [LinphoneManager set:callShort hidden:NO withName:"CALL_SHORT button" andReason:__FUNCTION__]; + [LinphoneManager set:backToCallView hidden:NO withName:"CALL_BACK button" andReason:__FUNCTION__]; } From bcc0bcee80ab1f7318a1f81a472c6ace91783d31 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 9 Jan 2012 11:21:52 +0100 Subject: [PATCH 21/60] Log 'toggle buttons' state change --- Classes/ConferenceCallDetailView.m | 4 ++-- Classes/IncallViewController.m | 4 ++-- Classes/LinphoneUI/UISpeakerButton.m | 4 ++-- Classes/LinphoneUI/UIToggleButton.h | 3 ++- Classes/LinphoneUI/UIToggleButton.m | 7 +++++-- Classes/VideoViewController.m | 6 +++--- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index a8f47c07b..8d218efef 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -51,8 +51,8 @@ NSTimer *callQualityRefresher; table.rowHeight = 80; - [mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; - [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] ]; + [mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; + [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"]; } -(void) backButtonPressed { diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index 3e5045437..c99f1b964 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -161,8 +161,8 @@ int callCount(LinphoneCore* lc) { - (void)viewDidLoad { [super viewDidLoad]; //Controls - [mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; - [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] ]; + [mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; + [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"]; verified = [[UIImage imageNamed:@"secured.png"] retain]; unverified = [[UIImage imageNamed:@"unverified.png"] retain]; diff --git a/Classes/LinphoneUI/UISpeakerButton.m b/Classes/LinphoneUI/UISpeakerButton.m index 717025e00..10fdf5b5f 100644 --- a/Classes/LinphoneUI/UISpeakerButton.m +++ b/Classes/LinphoneUI/UISpeakerButton.m @@ -34,8 +34,8 @@ static void audioRouteChangeListenerCallback ( } --(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage { - [super initWithOnImage:onImage offImage:offImage]; +-(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage debugName:(const char *)name{ + [super initWithOnImage:onImage offImage:offImage debugName:name]; AudioSessionPropertyID routeChangeID = kAudioSessionProperty_AudioRouteChange; AudioSessionInitialize(NULL, NULL, NULL, NULL); OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self); diff --git a/Classes/LinphoneUI/UIToggleButton.h b/Classes/LinphoneUI/UIToggleButton.h index b76550652..6e37990d0 100644 --- a/Classes/LinphoneUI/UIToggleButton.h +++ b/Classes/LinphoneUI/UIToggleButton.h @@ -30,10 +30,11 @@ UIImage* mOnImage; UIImage* mOffImage; bool mIsOn; + const char* debugName; } --(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage; +-(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage debugName:(const char*) name; -(bool) reset; -(bool) isOn; -(bool) toggle; diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index 04c0b3721..c6db043e3 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #import "UIToggleButton.h" - +#include "linphonecore.h" @implementation UIToggleButton @@ -28,6 +28,8 @@ return mIsOn; } -(bool) toggle { + ms_message("UI - Toggle button '%s' state change %d -> %d", + debugName, mIsOn, !mIsOn); if (mIsOn) { [self setImage:mOffImage forState:UIControlStateNormal]; mIsOn=!mIsOn; @@ -46,10 +48,11 @@ return mIsOn; } --(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage { +-(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage debugName:(const char *)name{ mOnImage = [onImage retain]; mOffImage = [offImage retain]; mIsOn=false; + debugName = name; [self reset]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m index 424f0d118..c7b2febc7 100644 --- a/Classes/VideoViewController.m +++ b/Classes/VideoViewController.m @@ -78,9 +78,9 @@ NSTimer *callQualityRefresher; - (void)viewDidLoad { [super viewDidLoad]; - [mMute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; - [mMuteLandRight initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; - [mMuteLandLeft initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; + [mMute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; + [mMuteLandRight initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE2 button"]; + [mMuteLandLeft initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE3 button"]; [mCamSwitch setPreview:mPreview]; [mCamSwitchLandRight setPreview:mPreviewLandRight]; [mCamSwitchLandLeft setPreview:mPreviewLandLeft]; From 3303a18616d377d4ba47344606c7a54655eace2c Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 9 Jan 2012 12:00:03 +0100 Subject: [PATCH 22/60] Update osip submodule --- submodules/externals/osip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/externals/osip b/submodules/externals/osip index 9e8c64cff..b47ff1140 160000 --- a/submodules/externals/osip +++ b/submodules/externals/osip @@ -1 +1 @@ -Subproject commit 9e8c64cff496d2794fe352a6a3907e0e36988931 +Subproject commit b47ff114063d29fbadb0b16c7b5c66ad3b334c7f From 8ccd6cb931d5c75f18410c1bed1de38be2b2f614 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 9 Jan 2012 12:14:32 +0100 Subject: [PATCH 23/60] Update osip (use 'linphone' branch) --- submodules/externals/osip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/externals/osip b/submodules/externals/osip index b47ff1140..7e98a3379 160000 --- a/submodules/externals/osip +++ b/submodules/externals/osip @@ -1 +1 @@ -Subproject commit b47ff114063d29fbadb0b16c7b5c66ad3b334c7f +Subproject commit 7e98a3379280307811ed4ad67a95fbf73ba5bbb6 From 514d0a5be6bda3eef7d130f112c8a8597ec7cc97 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 12 Jan 2012 22:06:07 +0100 Subject: [PATCH 24/60] revert osip to a commit that works - otherwise it crashes all the time. --- submodules/externals/osip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/externals/osip b/submodules/externals/osip index 7e98a3379..7dbd4b443 160000 --- a/submodules/externals/osip +++ b/submodules/externals/osip @@ -1 +1 @@ -Subproject commit 7e98a3379280307811ed4ad67a95fbf73ba5bbb6 +Subproject commit 7dbd4b443eed178480b76498173e7bffc7e73d00 From 4aef1e400bed03cbebe029160eb64343d0361caf Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 10 Jan 2012 11:23:32 +0100 Subject: [PATCH 25/60] Moved Advanced settings to a new child panel Also added a note indicating to the user the necessity of restarting Linphone for SIP account to take effect Fixes issue: 107, 80 --- Settings.bundle/Advanced.plist | 89 ++++++++++++++++++ Settings.bundle/Root.plist | 90 ++----------------- .../Settings.bundle/Advanced.plist | 89 ++++++++++++++++++ nogpl-thirdparties/Settings.bundle/Root.plist | 90 ++----------------- submodules/linphone | 2 +- 5 files changed, 193 insertions(+), 167 deletions(-) create mode 100644 Settings.bundle/Advanced.plist create mode 100644 nogpl-thirdparties/Settings.bundle/Advanced.plist diff --git a/Settings.bundle/Advanced.plist b/Settings.bundle/Advanced.plist new file mode 100644 index 000000000..4aad4e2a9 --- /dev/null +++ b/Settings.bundle/Advanced.plist @@ -0,0 +1,89 @@ + + + + + PreferenceSpecifiers + + + DefaultValue + + Key + debugenable_preference + Title + Debug + Type + PSToggleSwitchSpecifier + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + prefix_preference + KeyboardType + NumberPad + Title + Prefix + Type + PSTextFieldSpecifier + + + DefaultValue + + Key + substitute_+_by_00_preference + Title + Substitue + by 00 + Type + PSToggleSwitchSpecifier + + + DefaultValue + udp + Key + transport_preference + Title + Transport + Titles + + udp + tcp + tls + + Type + PSMultiValueSpecifier + Values + + udp + tcp + tls + + + + DefaultValue + + Key + enable_srtp_preference + Title + Secure rtp + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + backgroundmode_preference + Title + Background mode + Type + PSToggleSwitchSpecifier + + + + diff --git a/Settings.bundle/Root.plist b/Settings.bundle/Root.plist index 5bc0378b6..4b6332f8e 100644 --- a/Settings.bundle/Root.plist +++ b/Settings.bundle/Root.plist @@ -9,6 +9,8 @@ SIP account Type PSGroupSpecifier + FooterText + Linphone must be restarted for changes to take effect AutocapitalizationType @@ -94,7 +96,7 @@ Title - Media + Type PSGroupSpecifier @@ -102,7 +104,7 @@ File audio Title - Audio + Audio Codecs Type PSChildPaneSpecifier @@ -115,90 +117,12 @@ PSChildPaneSpecifier + File + Advanced Title Advanced Type - PSGroupSpecifier - - - DefaultValue - - Key - debugenable_preference - Title - Debug - Type - PSToggleSwitchSpecifier - - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - IsSecure - - Key - prefix_preference - KeyboardType - NumberPad - Title - Prefix - Type - PSTextFieldSpecifier - - - DefaultValue - - Key - substitute_+_by_00_preference - Title - Substitue + by 00 - Type - PSToggleSwitchSpecifier - - - DefaultValue - udp - Key - transport_preference - Title - Transport - Titles - - udp - tcp - tls - - Type - PSMultiValueSpecifier - Values - - udp - tcp - tls - - - - DefaultValue - - Key - enable_srtp_preference - Title - Secure rtp - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - backgroundmode_preference - Title - Background mode - Type - PSToggleSwitchSpecifier + PSChildPaneSpecifier StringsTable diff --git a/nogpl-thirdparties/Settings.bundle/Advanced.plist b/nogpl-thirdparties/Settings.bundle/Advanced.plist new file mode 100644 index 000000000..4aad4e2a9 --- /dev/null +++ b/nogpl-thirdparties/Settings.bundle/Advanced.plist @@ -0,0 +1,89 @@ + + + + + PreferenceSpecifiers + + + DefaultValue + + Key + debugenable_preference + Title + Debug + Type + PSToggleSwitchSpecifier + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + prefix_preference + KeyboardType + NumberPad + Title + Prefix + Type + PSTextFieldSpecifier + + + DefaultValue + + Key + substitute_+_by_00_preference + Title + Substitue + by 00 + Type + PSToggleSwitchSpecifier + + + DefaultValue + udp + Key + transport_preference + Title + Transport + Titles + + udp + tcp + tls + + Type + PSMultiValueSpecifier + Values + + udp + tcp + tls + + + + DefaultValue + + Key + enable_srtp_preference + Title + Secure rtp + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + backgroundmode_preference + Title + Background mode + Type + PSToggleSwitchSpecifier + + + + diff --git a/nogpl-thirdparties/Settings.bundle/Root.plist b/nogpl-thirdparties/Settings.bundle/Root.plist index 5bc0378b6..4b6332f8e 100644 --- a/nogpl-thirdparties/Settings.bundle/Root.plist +++ b/nogpl-thirdparties/Settings.bundle/Root.plist @@ -9,6 +9,8 @@ SIP account Type PSGroupSpecifier + FooterText + Linphone must be restarted for changes to take effect AutocapitalizationType @@ -94,7 +96,7 @@ Title - Media + Type PSGroupSpecifier @@ -102,7 +104,7 @@ File audio Title - Audio + Audio Codecs Type PSChildPaneSpecifier @@ -115,90 +117,12 @@ PSChildPaneSpecifier + File + Advanced Title Advanced Type - PSGroupSpecifier - - - DefaultValue - - Key - debugenable_preference - Title - Debug - Type - PSToggleSwitchSpecifier - - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - IsSecure - - Key - prefix_preference - KeyboardType - NumberPad - Title - Prefix - Type - PSTextFieldSpecifier - - - DefaultValue - - Key - substitute_+_by_00_preference - Title - Substitue + by 00 - Type - PSToggleSwitchSpecifier - - - DefaultValue - udp - Key - transport_preference - Title - Transport - Titles - - udp - tcp - tls - - Type - PSMultiValueSpecifier - Values - - udp - tcp - tls - - - - DefaultValue - - Key - enable_srtp_preference - Title - Secure rtp - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - backgroundmode_preference - Title - Background mode - Type - PSToggleSwitchSpecifier + PSChildPaneSpecifier StringsTable diff --git a/submodules/linphone b/submodules/linphone index 9c9588ffe..5bf95231b 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 9c9588ffe6cf8b163f797305b7d9c4e358788b9e +Subproject commit 5bf95231b51641ce095af49a864cf00fa6837750 From 50cf044b46bf24f72f0a66f9fd9ed10f7808d2e8 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 12 Jan 2012 15:22:28 +0100 Subject: [PATCH 26/60] Fix memleaks --- Classes/CallHistoryTableViewController.m | 6 +++++- Classes/PhoneViewController.m | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Classes/CallHistoryTableViewController.m b/Classes/CallHistoryTableViewController.m index 13d07f9c3..eb1b56446 100644 --- a/Classes/CallHistoryTableViewController.m +++ b/Classes/CallHistoryTableViewController.m @@ -196,10 +196,14 @@ } else { phoneNumber = [[NSString alloc] initWithCString:linphone_address_as_string_uri_only(partyToCall) encoding:[NSString defaultCStringEncoding]]; } + + NSString* dispName = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]; + [[LinphoneManager instance].callDelegate displayDialerFromUI:self forUser:phoneNumber - withDisplayName:[[[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]] autorelease]]; + withDisplayName:dispName]; [phoneNumber release]; + [dispName release]; } diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index a99cfe838..979b1f104 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -204,7 +204,7 @@ [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; } } else { - CallDelegate* cd = [[CallDelegate alloc] init]; + CallDelegate* cd = [[[CallDelegate alloc] init] autorelease]; cd.delegate = self; cd.call = call; From 3604881db975d122d35c3a27985c47b1dafc865c Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 12 Jan 2012 16:08:42 +0100 Subject: [PATCH 27/60] Add special call failure popup on UserNotFound error --- Classes/LinphoneUI/LinphoneManager.m | 11 +++++++---- submodules/linphone | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index be75fb53f..909e1f7eb 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -204,12 +204,15 @@ extern void libmssilk_init(); lMessage=NSLocalizedString(@"Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.",nil); } else { lMessage=[NSString stringWithFormat : NSLocalizedString(@"Cannot call %@",nil),lUserName]; - } - if (message!=nil){ - lMessage=[NSString stringWithFormat : NSLocalizedString(@"%@\nReason was: %s",nil),lMessage, message]; - } + if (linphone_call_get_reason(call) == LinphoneReasonNotFound) { + lMessage=[NSString stringWithFormat : NSLocalizedString(@"'%@' not registered to Service",nil), lUserName]; + } else { + if (message!=nil){ + lMessage=[NSString stringWithFormat : NSLocalizedString(@"%@\nReason was: %s",nil),lMessage, message]; + } + } lTitle=NSLocalizedString(@"Call failed",nil); UIAlertView* error = [[UIAlertView alloc] initWithTitle:lTitle diff --git a/submodules/linphone b/submodules/linphone index 5bf95231b..9140451ac 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 5bf95231b51641ce095af49a864cf00fa6837750 +Subproject commit 9140451acf5f86f2b14ac1cbfca269148fc6536f From fef733581b5c8a946a3345deca087bb25a08d037 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 13 Jan 2012 11:14:32 +0100 Subject: [PATCH 28/60] no_gpl: add Automatically start video setting --- nogpl-thirdparties/Settings.bundle/video.plist | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/nogpl-thirdparties/Settings.bundle/video.plist b/nogpl-thirdparties/Settings.bundle/video.plist index 5df2306c8..976ec6284 100644 --- a/nogpl-thirdparties/Settings.bundle/video.plist +++ b/nogpl-thirdparties/Settings.bundle/video.plist @@ -14,6 +14,16 @@ DefaultValue + + Type + PSToggleSwitchSpecifier + Title + Automatically start video + Key + start_video_preference + DefaultValue + + Title Codecs From 85ea3baf6f1aa06f94e3a9568352c3631d968535 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 13 Jan 2012 11:30:13 +0100 Subject: [PATCH 29/60] Fix iPad version UI (buttons not responding) --- Classes/InCallViewController-ipad.xib | 373 +++----------------------- 1 file changed, 38 insertions(+), 335 deletions(-) diff --git a/Classes/InCallViewController-ipad.xib b/Classes/InCallViewController-ipad.xib index cdf915ea3..592a9208f 100644 --- a/Classes/InCallViewController-ipad.xib +++ b/Classes/InCallViewController-ipad.xib @@ -43,7 +43,6 @@ 274 {768, 805} - _NS:408 @@ -71,7 +70,6 @@ 292 {{0, 1}, {320, 66}} - 1 MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA @@ -116,7 +114,6 @@ {{224, 937}, {320, 77}} - _NS:196 @@ -134,7 +131,6 @@ 292 {{107, 70}, {106, 66}} - NO @@ -171,7 +167,6 @@ 292 {{0, 4}, {107, 66}} - NO @@ -212,7 +207,6 @@ 292 {{0, 70}, {107, 66}} - NO @@ -238,7 +232,6 @@ 292 {{213, 70}, {107, 66}} - NO @@ -267,7 +260,6 @@ -2147483356 {{213, 70}, {107, 66}} - NO @@ -295,7 +287,6 @@ 292 {{107, 4}, {106, 66}} - NO @@ -321,7 +312,6 @@ 292 {{213, 4}, {107, 66}} - NO @@ -352,7 +342,6 @@ 292 {{107, 70}, {106, 66}} - NO @@ -382,7 +371,6 @@ {{224, 801.5}, {320, 135}} - NO @@ -398,7 +386,6 @@ 292 {{119, 251}, {82, 52}} - NO @@ -421,7 +408,6 @@ 292 {{119, 193}, {82, 52}} - 3 @@ -447,7 +433,6 @@ 292 {{31, 19}, {82, 52}} - NO @@ -470,7 +455,6 @@ 292 {{119, 19}, {82, 52}} - NO @@ -490,7 +474,6 @@ 292 {{207, 19}, {82, 52}} - NO @@ -513,7 +496,6 @@ 292 {{31, 77}, {82, 52}} - NO @@ -536,7 +518,6 @@ 292 {{119, 77}, {82, 52}} - NO @@ -559,7 +540,6 @@ 292 {{207, 77}, {82, 52}} - NO @@ -582,7 +562,6 @@ 292 {{31, 135}, {82, 52}} - NO @@ -605,7 +584,6 @@ 292 {{119, 135}, {82, 52}} - NO @@ -628,7 +606,6 @@ 292 {{207, 135}, {82, 52}} - NO @@ -651,7 +628,6 @@ 292 {{31, 193}, {82, 52}} - NO @@ -674,7 +650,6 @@ 292 {{207, 193}, {82, 52}} - NO @@ -695,7 +670,6 @@ {{178, 146}, {320, 310}} - 3 @@ -708,7 +682,6 @@ {{0, 20}, {768, 1004}} - _NS:212 @@ -935,6 +908,14 @@ 114 + + + dialer + + + + 141 + dataSource @@ -951,6 +932,33 @@ 140 + + + doAction: + + + 7 + + 144 + + + + doAction: + + + 7 + + 142 + + + + doAction: + + + 7 + + 143 + @@ -1234,314 +1242,9 @@ - 140 - - - - - IncallViewController - UIViewController - - doAction: - id - - - doAction: - - doAction: - id - - - - UIButton - UIButton - UITableView - UIButton - UIViewController - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - VideoViewController - UIButton - - - - addCall - UIButton - - - addVideo - UIButton - - - callTableView - UITableView - - - close - UIButton - - - conferenceDetail - UIViewController - - - contacts - UIButton - - - controlSubView - UIView - - - dialer - UIButton - - - eight - UIButton - - - endCtrl - UIButton - - - five - UIButton - - - four - UIButton - - - hangUpView - UIView - - - hash - UIButton - - - mergeCalls - UIButton - - - mute - UIButton - - - nine - UIButton - - - one - UIButton - - - padSubView - UIView - - - pause - UIButton - - - seven - UIButton - - - six - UIButton - - - speaker - UIButton - - - star - UIButton - - - three - UIButton - - - two - UIButton - - - videoViewController - VideoViewController - - - zero - UIButton - - - - IBProjectSource - ./Classes/IncallViewController.h - - - - UIAddVideoButton - UIButton - - IBProjectSource - ./Classes/UIAddVideoButton.h - - - - UICamSwitch - UIButton - - preview - UIView - - - preview - - preview - UIView - - - - IBProjectSource - ./Classes/UICamSwitch.h - - - - UIDigitButton - UIButton - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - ./Classes/UIMuteButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - VideoViewController - UIViewController - - UICamSwitch - UICamSwitch - UIView - UIView - UIHangUpButton - UIHangUpButton - UIView - UIMuteButton - UIMuteButton - UIView - UIView - UIView - - - - mCamSwitch - UICamSwitch - - - mCamSwitchLand - UICamSwitch - - - mDisplay - UIView - - - mDisplayLand - UIView - - - mHangUp - UIHangUpButton - - - mHangUpLand - UIHangUpButton - - - mLandscape - UIView - - - mMute - UIMuteButton - - - mMuteLand - UIMuteButton - - - mPortrait - UIView - - - mPreview - UIView - - - mPreviewLand - UIView - - - - IBProjectSource - ./Classes/VideoViewController.h - - - + 144 + 0 IBIPadFramework YES @@ -1556,7 +1259,7 @@ {16, 16} {107, 67} {106, 67} - {20, 20} + {82, 82} {107, 67} {107, 67} {106, 67} From 35f865151b8032f5d93140736a1fe3b7485b9692 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 13 Jan 2012 11:33:30 +0100 Subject: [PATCH 30/60] no_gpl: define Linphone's target as Universal --- Classes/MainScreenWithVideoPreview.xib | 3 --- Classes/PhoneViewController.m | 2 +- linphone.xcodeproj/project.pbxproj | 16 ++++++++-------- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Classes/MainScreenWithVideoPreview.xib b/Classes/MainScreenWithVideoPreview.xib index 8670a5b07..7efd70f0a 100644 --- a/Classes/MainScreenWithVideoPreview.xib +++ b/Classes/MainScreenWithVideoPreview.xib @@ -44,7 +44,6 @@ 292 {768, 1024} - _NS:196 3 @@ -143,7 +142,6 @@ 266 {{0, 975}, {768, 49}} - 3 MCAwAA @@ -158,7 +156,6 @@ 274 {{0, 20}, {768, 1004}} - _NS:212 1 diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 979b1f104..a99cfe838 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -204,7 +204,7 @@ [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; } } else { - CallDelegate* cd = [[[CallDelegate alloc] init] autorelease]; + CallDelegate* cd = [[CallDelegate alloc] init]; cd.delegate = self; cd.call = call; diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 1cc22ef67..80d12321e 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -1666,7 +1666,7 @@ submodules/externals/speex/include, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", @@ -1683,7 +1683,7 @@ PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; @@ -1719,7 +1719,7 @@ submodules/externals/speex/include, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", @@ -1736,7 +1736,7 @@ "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; @@ -1772,7 +1772,7 @@ submodules/externals/speex/include, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", @@ -1789,7 +1789,7 @@ "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Distribution; }; @@ -1825,7 +1825,7 @@ submodules/externals/speex/include, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", @@ -1842,7 +1842,7 @@ "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = DistributionAdhoc; }; From 3c3bdfe1a8b47ffbad3360c090e28de1325d9fd3 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 13 Jan 2012 12:17:57 +0100 Subject: [PATCH 31/60] iPad: disable video preview on main screen when 'Enable video' setting is off --- Classes/MainScreenWithVideoPreview.m | 49 +++++++++++++++++--------- Classes/MainScreenWithVideoPreview.xib | 5 ++- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/Classes/MainScreenWithVideoPreview.m b/Classes/MainScreenWithVideoPreview.m index 5c7d962b0..39764b38d 100644 --- a/Classes/MainScreenWithVideoPreview.m +++ b/Classes/MainScreenWithVideoPreview.m @@ -39,19 +39,11 @@ } */ -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad -{ - [super viewDidLoad]; - +-(void) initVideoPreview { session = [[AVCaptureSession alloc] init]; - - currentCamera = 0; - - AVCaptureVideoPreviewLayer* previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session]; previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; @@ -62,7 +54,19 @@ [session setSessionPreset:AVCaptureSessionPresetHigh]; [session commitConfiguration]; - [self useCameraAtIndex:0 startSession:NO]; + [self useCameraAtIndex:0 startSession:NO]; +} + +// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. +- (void)viewDidLoad +{ + [super viewDidLoad]; + + bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; + + if (enableVideo) { + [self initVideoPreview ]; + } } -(void) switchCameraPressed { @@ -94,18 +98,31 @@ -(void) showPreview:(BOOL) show { - if (show && !session.running) { - [window addSubview:self.view]; - [window sendSubviewToBack:self.view]; - [session startRunning]; - } else if (!show && session.running) { + bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; + + if (enableVideo) { + if (session == nil) { + [self initVideoPreview]; + } + + if (show && !session.running) { + [window addSubview:self.view]; + [window sendSubviewToBack:self.view]; + [session startRunning]; + } else if (!show && session.running) { + [self.view removeFromSuperview]; + [session stopRunning]; + } + } else { + if (session != nil) + [session stopRunning]; [self.view removeFromSuperview]; - [session stopRunning]; } } -(void) viewDidAppear:(BOOL)animated { [phoneMainView.switchCamera addTarget:self action:@selector(switchCameraPressed) forControlEvents:UIControlEventTouchUpInside]; + } -(void) viewDidDisappear:(BOOL)animated { diff --git a/Classes/MainScreenWithVideoPreview.xib b/Classes/MainScreenWithVideoPreview.xib index 7efd70f0a..2a0b84cae 100644 --- a/Classes/MainScreenWithVideoPreview.xib +++ b/Classes/MainScreenWithVideoPreview.xib @@ -44,10 +44,11 @@ 292 {768, 1024} + _NS:196 3 - MQA + MC42NjY2NjY2NjY3AA NO NO @@ -142,6 +143,7 @@ 266 {{0, 975}, {768, 49}} + 3 MCAwAA @@ -156,6 +158,7 @@ 274 {{0, 20}, {768, 1004}} + _NS:212 1 From 50f6a4770751f15c0895d3a30bbc5776159fbe4e Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 13 Jan 2012 14:30:23 +0100 Subject: [PATCH 32/60] iPad: add conference details view --- Classes/ConferenceCallDetailView-ipad.xib | 479 ++++++++++++++++++++++ Classes/IncallViewController.m | 11 +- linphone.xcodeproj/project.pbxproj | 6 + 3 files changed, 492 insertions(+), 4 deletions(-) create mode 100644 Classes/ConferenceCallDetailView-ipad.xib diff --git a/Classes/ConferenceCallDetailView-ipad.xib b/Classes/ConferenceCallDetailView-ipad.xib new file mode 100644 index 000000000..57f2d7412 --- /dev/null +++ b/Classes/ConferenceCallDetailView-ipad.xib @@ -0,0 +1,479 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + IBUIButton + IBUITableView + IBUIView + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 274 + + + + 274 + {768, 872} + + + + _NS:418 + + 3 + MCAwAA + + YES + IBIPadFramework + YES + 0 + NO + YES + 44 + 22 + 22 + + + + 292 + {{224, 874}, {107, 66}} + + + + NO + IBIPadFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + effacer.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{437, 873}, {107, 66}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + HP_inverse.png + + + NSImage + HP.png + + + 2 + 2 + + + Helvetica-Bold + 18 + 16 + + + + + 292 + {{224, 938}, {320, 66}} + + + + + 1 + MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + stopcall-red.png + + + NSImage + clavier-01-106px.png + + + + + + + 292 + {{331, 873}, {106, 66}} + + + + + NO + NO + IBIPadFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + mic_active.png + + + NSImage + micro_inverse.png + + + NSImage + micro.png + + + + + + {{0, 20}, {768, 1004}} + + + + + 3 + MC42NjY2NjY2NjY3AA + + + 2 + + IBIPadFramework + + + + + + + back + + + + 8 + + + + hangup + + + + 9 + + + + mute + + + + 10 + + + + speaker + + + + 11 + + + + table + + + + 12 + + + + view + + + + 13 + + + + dataSource + + + + 14 + + + + delegate + + + + 15 + + + + + + 0 + + + + + + 1 + + + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + Erase + + + 4 + + + speaker + + + 5 + + + + + 6 + + + end + + + 7 + + + mute + + + + + ConferenceCallDetailView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIEraseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UISpeakerButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMuteButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 15 + + + + + ConferenceCallDetailView + UIViewController + + UIButton + UIButton + UITableViewCell + UIButton + UIButton + UIButton + UITableView + + + + addCall + UIButton + + + back + UIButton + + + conferenceDetailCell + UITableViewCell + + + hangup + UIButton + + + mute + UIButton + + + speaker + UIButton + + + table + UITableView + + + + IBProjectSource + ./Classes/ConferenceCallDetailView.h + + + + UIEraseButton + UIButton + + IBProjectSource + ./Classes/UIEraseButton.h + + + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UIMuteButton + UIToggleButton + + IBProjectSource + ./Classes/UIMuteButton.h + + + + UISpeakerButton + UIToggleButton + + IBProjectSource + ./Classes/UISpeakerButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + + 0 + IBIPadFramework + YES + 3 + + {107, 67} + {107, 67} + {106, 60} + {66, 65} + {20, 20} + {107, 67} + {107, 67} + {62, 54} + + 933 + + diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index c99f1b964..45315cbd5 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -190,14 +190,17 @@ int callCount(LinphoneCore* lc) { ms_message("Running on iPad"); mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController-ipad" bundle:[NSBundle mainBundle]]; + conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView-ipad" + bundle:[NSBundle mainBundle]]; + } else { mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController" bundle:[NSBundle mainBundle]]; - } - - conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView" - bundle:[NSBundle mainBundle]]; + conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView" + bundle:[NSBundle mainBundle]]; + } + mVideoShown=FALSE; mIncallViewIsReady=FALSE; mVideoIsPending=FALSE; diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 80d12321e..d609bdf39 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -230,6 +230,8 @@ 22F254811073D99800AC9B3F /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; 22F51EF6107FA66500F98953 /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; + 340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; + 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; @@ -611,6 +613,7 @@ 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = ""; }; + 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "ConferenceCallDetailView-ipad.xib"; sourceTree = ""; }; 341FCA8D149798210084BC26 /* linphonerc-ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-ipad"; sourceTree = ""; }; 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "InCallViewController-ipad.xib"; sourceTree = ""; }; 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "PhoneViewController-ipad.xib"; sourceTree = ""; }; @@ -765,6 +768,7 @@ 22E028B613B4CCBD0068A713 /* VideoViewController.xib */, 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */, 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */, + 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */, 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */, 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */, 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */, @@ -1362,6 +1366,7 @@ 1AE0A49E14AC5C64002C99BD /* stat_sys_signal_2.png in Resources */, 1AE0A4A014AC5C64002C99BD /* stat_sys_signal_3.png in Resources */, 1AE0A4A214AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, + 340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1430,6 +1435,7 @@ 1AE0A49F14AC5C64002C99BD /* stat_sys_signal_2.png in Resources */, 1AE0A4A114AC5C64002C99BD /* stat_sys_signal_3.png in Resources */, 1AE0A4A314AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, + 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From cc616170d86c43629f7d210fea7cfb3f10be76f8 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 13 Jan 2012 15:08:24 +0100 Subject: [PATCH 33/60] Update linphone --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 9140451ac..ae0857e88 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 9140451acf5f86f2b14ac1cbfca269148fc6536f +Subproject commit ae0857e88c8bac66c5e825de10c261ff322614f6 From 9bb2bcb89d2bfda9b9621b43dba7885cad726ffe Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 13 Jan 2012 17:42:46 +0100 Subject: [PATCH 34/60] Revert "revert osip to a commit that works - otherwise it crashes all the time." This reverts commit 514d0a5be6bda3eef7d130f112c8a8597ec7cc97. --- submodules/externals/osip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/externals/osip b/submodules/externals/osip index 7dbd4b443..7e98a3379 160000 --- a/submodules/externals/osip +++ b/submodules/externals/osip @@ -1 +1 @@ -Subproject commit 7dbd4b443eed178480b76498173e7bffc7e73d00 +Subproject commit 7e98a3379280307811ed4ad67a95fbf73ba5bbb6 From f42fc2f2a9d0adbee8ae87262ae7d2c24aab1f62 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 13 Jan 2012 18:20:32 +0100 Subject: [PATCH 35/60] Fix crash occuring when clicking Cancel in the Contact view --- Classes/IncallViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index 45315cbd5..49cdcf878 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -394,7 +394,7 @@ int callCount(LinphoneCore* lc) { } else if (sender == contacts) { // start people picker myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; - [myPeoplePickerController setPeoplePickerDelegate:[[[ContactPickerDelegate alloc] init] autorelease]]; + [myPeoplePickerController setPeoplePickerDelegate:[[ContactPickerDelegate alloc] init] ]; [self presentModalViewController: myPeoplePickerController animated:true]; } else if (sender == close) { From 278e821ef56a8a8c7d40261fa696f171ed2ae802 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 16 Jan 2012 10:29:58 +0100 Subject: [PATCH 36/60] Fix liblinphone tutorials compilation --- .../hello-world.xcodeproj/project.pbxproj | 304 +++++++++++------- 1 file changed, 188 insertions(+), 116 deletions(-) diff --git a/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj b/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj index 1954ee871..2aa526a1c 100755 --- a/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj +++ b/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj @@ -9,34 +9,12 @@ /* Begin PBXBuildFile section */ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 2220D597127844C9008F2C2E /* helloworld.c in Sources */ = {isa = PBXBuildFile; fileRef = 2220D596127844C9008F2C2E /* helloworld.c */; }; - 2220D5BE127845EE008F2C2E /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5BD127845EE008F2C2E /* libeXosip2.a */; }; - 2220D5C0127845EE008F2C2E /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5BF127845EE008F2C2E /* libgsm.a */; }; - 2220D5C2127845EE008F2C2E /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C1127845EE008F2C2E /* libilbc.a */; }; - 2220D5C4127845EE008F2C2E /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C3127845EE008F2C2E /* liblinphone.a */; }; - 2220D5C6127845EE008F2C2E /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C5127845EE008F2C2E /* libmediastreamer.a */; }; - 2220D5C8127845EE008F2C2E /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C7127845EE008F2C2E /* libortp.a */; }; - 2220D5CA127845EE008F2C2E /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C9127845EE008F2C2E /* libosip2.a */; }; - 2220D5CC127845EE008F2C2E /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CB127845EE008F2C2E /* libosipparser2.a */; }; - 2220D5CE127845EE008F2C2E /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CD127845EE008F2C2E /* libspeex.a */; }; - 2220D5D0127845EE008F2C2E /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CF127845EE008F2C2E /* libspeexdsp.a */; }; 2220D5D81278461C008F2C2E /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D71278461C008F2C2E /* CFNetwork.framework */; }; 2220D5DA1278461C008F2C2E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D91278461C008F2C2E /* CoreAudio.framework */; }; 2220D5EA12784672008F2C2E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5E912784672008F2C2E /* AudioToolbox.framework */; }; - 2294996712A53FEE00D6CF48 /* registration.c in Sources */ = {isa = PBXBuildFile; fileRef = 2294995712A53FD800D6CF48 /* registration.c */; }; 2294996912A53FEE00D6CF48 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 2294996A12A53FEE00D6CF48 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 2294996B12A53FEE00D6CF48 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - 2294996C12A53FEE00D6CF48 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5BD127845EE008F2C2E /* libeXosip2.a */; }; - 2294996D12A53FEE00D6CF48 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5BF127845EE008F2C2E /* libgsm.a */; }; - 2294996E12A53FEE00D6CF48 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C1127845EE008F2C2E /* libilbc.a */; }; - 2294996F12A53FEE00D6CF48 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C3127845EE008F2C2E /* liblinphone.a */; }; - 2294997012A53FEE00D6CF48 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C5127845EE008F2C2E /* libmediastreamer.a */; }; - 2294997112A53FEE00D6CF48 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C7127845EE008F2C2E /* libortp.a */; }; - 2294997212A53FEE00D6CF48 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C9127845EE008F2C2E /* libosip2.a */; }; - 2294997312A53FEE00D6CF48 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CB127845EE008F2C2E /* libosipparser2.a */; }; - 2294997412A53FEE00D6CF48 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CD127845EE008F2C2E /* libspeex.a */; }; - 2294997512A53FEE00D6CF48 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CF127845EE008F2C2E /* libspeexdsp.a */; }; 2294997612A53FEE00D6CF48 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D71278461C008F2C2E /* CFNetwork.framework */; }; 2294997712A53FEE00D6CF48 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D91278461C008F2C2E /* CoreAudio.framework */; }; 2294997812A53FEE00D6CF48 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5E912784672008F2C2E /* AudioToolbox.framework */; }; @@ -44,40 +22,18 @@ 229499A612A5417D00D6CF48 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 229499A712A5417D00D6CF48 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 229499A812A5417D00D6CF48 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - 229499A912A5417D00D6CF48 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5BD127845EE008F2C2E /* libeXosip2.a */; }; - 229499AA12A5417D00D6CF48 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5BF127845EE008F2C2E /* libgsm.a */; }; - 229499AB12A5417D00D6CF48 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C1127845EE008F2C2E /* libilbc.a */; }; - 229499AC12A5417D00D6CF48 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C3127845EE008F2C2E /* liblinphone.a */; }; - 229499AD12A5417D00D6CF48 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C5127845EE008F2C2E /* libmediastreamer.a */; }; - 229499AE12A5417D00D6CF48 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C7127845EE008F2C2E /* libortp.a */; }; - 229499AF12A5417D00D6CF48 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C9127845EE008F2C2E /* libosip2.a */; }; - 229499B012A5417D00D6CF48 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CB127845EE008F2C2E /* libosipparser2.a */; }; - 229499B112A5417D00D6CF48 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CD127845EE008F2C2E /* libspeex.a */; }; - 229499B212A5417D00D6CF48 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CF127845EE008F2C2E /* libspeexdsp.a */; }; 229499B312A5417D00D6CF48 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D71278461C008F2C2E /* CFNetwork.framework */; }; 229499B412A5417D00D6CF48 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D91278461C008F2C2E /* CoreAudio.framework */; }; 229499B512A5417D00D6CF48 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5E912784672008F2C2E /* AudioToolbox.framework */; }; 229499B612A5417D00D6CF48 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B6A012A3E159001AE361 /* libresolv.dylib */; }; - 229499BD12A5419500D6CF48 /* chatroom.c in Sources */ = {isa = PBXBuildFile; fileRef = 2294995612A53FD800D6CF48 /* chatroom.c */; }; 229499EB12A5433F00D6CF48 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 229499EC12A5433F00D6CF48 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 229499ED12A5433F00D6CF48 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - 229499EE12A5433F00D6CF48 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5BD127845EE008F2C2E /* libeXosip2.a */; }; - 229499EF12A5433F00D6CF48 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5BF127845EE008F2C2E /* libgsm.a */; }; - 229499F012A5433F00D6CF48 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C1127845EE008F2C2E /* libilbc.a */; }; - 229499F112A5433F00D6CF48 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C3127845EE008F2C2E /* liblinphone.a */; }; - 229499F212A5433F00D6CF48 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C5127845EE008F2C2E /* libmediastreamer.a */; }; - 229499F312A5433F00D6CF48 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C7127845EE008F2C2E /* libortp.a */; }; - 229499F412A5433F00D6CF48 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5C9127845EE008F2C2E /* libosip2.a */; }; - 229499F512A5433F00D6CF48 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CB127845EE008F2C2E /* libosipparser2.a */; }; - 229499F612A5433F00D6CF48 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CD127845EE008F2C2E /* libspeex.a */; }; - 229499F712A5433F00D6CF48 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5CF127845EE008F2C2E /* libspeexdsp.a */; }; 229499F812A5433F00D6CF48 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D71278461C008F2C2E /* CFNetwork.framework */; }; 229499F912A5433F00D6CF48 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D91278461C008F2C2E /* CoreAudio.framework */; }; 229499FA12A5433F00D6CF48 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5E912784672008F2C2E /* AudioToolbox.framework */; }; 229499FB12A5433F00D6CF48 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B6A012A3E159001AE361 /* libresolv.dylib */; }; 22D1B6A112A3E159001AE361 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B6A012A3E159001AE361 /* libresolv.dylib */; }; - 22DF2B1612A65892007C6B74 /* buddy_status.c in Sources */ = {isa = PBXBuildFile; fileRef = 2294995512A53FD800D6CF48 /* buddy_status.c */; }; 22E5AFC5133A2E260044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC3133A2E260044EA25 /* libssl.a */; }; 22E5AFC6133A2E260044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC4133A2E260044EA25 /* libcrypto.a */; }; 22E5AFC9133A2E3F0044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC7133A2E3F0044EA25 /* libssl.a */; }; @@ -87,30 +43,85 @@ 22E5AFD1133A2E760044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; }; 22E5AFD2133A2E760044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; }; 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; + 34F9DFE914C418B600E1BC69 /* helloworld.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE514C418B600E1BC69 /* helloworld.c */; }; + 34F9DFF514C41EBA00E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; }; + 34F9DFF614C41EBA00E1BC69 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */; }; + 34F9DFF714C41EBA00E1BC69 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; }; + 34F9DFF814C41EBA00E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; }; + 34F9DFF914C41EBA00E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; }; + 34F9DFFA14C41EBA00E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; }; + 34F9DFFB14C41EBA00E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; }; + 34F9DFFC14C41EBA00E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; }; + 34F9DFFD14C41EBA00E1BC69 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF314C41EBA00E1BC69 /* libspeex.a */; }; + 34F9DFFE14C41EBA00E1BC69 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */; }; + 34F9DFFF14C41F4900E1BC69 /* buddy_status.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE314C418B600E1BC69 /* buddy_status.c */; }; + 34F9E00014C41F4E00E1BC69 /* chatroom.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE414C418B600E1BC69 /* chatroom.c */; }; + 34F9E00114C41F5300E1BC69 /* registration.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE614C418B600E1BC69 /* registration.c */; }; + 34F9E00314C41FB400E1BC69 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */; }; + 34F9E00614C41FCF00E1BC69 /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00414C41FCF00E1BC69 /* libsrtp.a */; }; + 34F9E00714C41FCF00E1BC69 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00514C41FCF00E1BC69 /* libvpx.a */; }; + 34F9E00B14C4202100E1BC69 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00A14C4202100E1BC69 /* QuartzCore.framework */; }; + 34F9E00C14C4203900E1BC69 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */; }; + 34F9E00D14C4203900E1BC69 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00A14C4202100E1BC69 /* QuartzCore.framework */; }; + 34F9E00E14C4204600E1BC69 /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00414C41FCF00E1BC69 /* libsrtp.a */; }; + 34F9E00F14C4204600E1BC69 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00514C41FCF00E1BC69 /* libvpx.a */; }; + 34F9E01014C4207700E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; }; + 34F9E01114C4208C00E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; }; + 34F9E01214C4208C00E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; }; + 34F9E01314C4208C00E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; }; + 34F9E01414C420A200E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; }; + 34F9E01514C420A200E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; }; + 34F9E01614C420B800E1BC69 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */; }; + 34F9E01714C420B800E1BC69 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF314C41EBA00E1BC69 /* libspeex.a */; }; + 34F9E01814C420B800E1BC69 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */; }; + 34F9E01914C420DD00E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; }; + 34F9E01A14C420DD00E1BC69 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */; }; + 34F9E01B14C420DD00E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; }; + 34F9E01C14C420DD00E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; }; + 34F9E01D14C420DD00E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; }; + 34F9E01E14C420DD00E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; }; + 34F9E01F14C420DD00E1BC69 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF314C41EBA00E1BC69 /* libspeex.a */; }; + 34F9E02014C420DD00E1BC69 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */; }; + 34F9E02114C420F000E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; }; + 34F9E02214C420FA00E1BC69 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00A14C4202100E1BC69 /* QuartzCore.framework */; }; + 34F9E02314C4210100E1BC69 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */; }; + 34F9E02414C4211000E1BC69 /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00414C41FCF00E1BC69 /* libsrtp.a */; }; + 34F9E02514C4211000E1BC69 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00514C41FCF00E1BC69 /* libvpx.a */; }; + 34F9E02614C4212F00E1BC69 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */; }; + 34F9E02714C4212F00E1BC69 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00A14C4202100E1BC69 /* QuartzCore.framework */; }; + 34F9E02814C4214500E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; }; + 34F9E02914C4214500E1BC69 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */; }; + 34F9E02A14C4214500E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; }; + 34F9E02B14C4214500E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; }; + 34F9E02C14C4214500E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; }; + 34F9E02D14C4214500E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; }; + 34F9E02E14C4214500E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; }; + 34F9E02F14C4214500E1BC69 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF314C41EBA00E1BC69 /* libspeex.a */; }; + 34F9E03014C4214500E1BC69 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */; }; + 34F9E03114C4214500E1BC69 /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00414C41FCF00E1BC69 /* libsrtp.a */; }; + 34F9E03214C4214500E1BC69 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00514C41FCF00E1BC69 /* libvpx.a */; }; + 34F9E03414C4247A00E1BC69 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E03314C4247A00E1BC69 /* AVFoundation.framework */; }; + 34F9E03514C4249600E1BC69 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00814C41FE900E1BC69 /* CoreVideo.framework */; }; + 34F9E03714C424AF00E1BC69 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E03614C424AF00E1BC69 /* CoreMedia.framework */; }; + 34F9E03814C4250B00E1BC69 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E03314C4247A00E1BC69 /* AVFoundation.framework */; }; + 34F9E03914C4250B00E1BC69 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E03614C424AF00E1BC69 /* CoreMedia.framework */; }; + 34F9E03A14C4250B00E1BC69 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00814C41FE900E1BC69 /* CoreVideo.framework */; }; + 34F9E03B14C4251B00E1BC69 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E03314C4247A00E1BC69 /* AVFoundation.framework */; }; + 34F9E03C14C4251B00E1BC69 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E03614C424AF00E1BC69 /* CoreMedia.framework */; }; + 34F9E03D14C4251B00E1BC69 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00814C41FE900E1BC69 /* CoreVideo.framework */; }; + 34F9E03E14C4252600E1BC69 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E03314C4247A00E1BC69 /* AVFoundation.framework */; }; + 34F9E03F14C4253300E1BC69 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E03614C424AF00E1BC69 /* CoreMedia.framework */; }; + 34F9E04014C4253300E1BC69 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00814C41FE900E1BC69 /* CoreVideo.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D6058910D05DD3D006BFB54 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 2220D596127844C9008F2C2E /* helloworld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = helloworld.c; path = "../../liblinphone-sdk/apple-darwin/share/tutorials/linphone/helloworld.c"; sourceTree = SOURCE_ROOT; }; - 2220D5BD127845EE008F2C2E /* libeXosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libeXosip2.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/libeXosip2.a"; sourceTree = ""; }; - 2220D5BF127845EE008F2C2E /* libgsm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgsm.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/libgsm.a"; sourceTree = ""; }; - 2220D5C1127845EE008F2C2E /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; }; - 2220D5C3127845EE008F2C2E /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = ""; }; - 2220D5C5127845EE008F2C2E /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = ""; }; - 2220D5C7127845EE008F2C2E /* libortp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libortp.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/libortp.a"; sourceTree = ""; }; - 2220D5C9127845EE008F2C2E /* libosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosip2.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/libosip2.a"; sourceTree = ""; }; - 2220D5CB127845EE008F2C2E /* libosipparser2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosipparser2.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/libosipparser2.a"; sourceTree = ""; }; - 2220D5CD127845EE008F2C2E /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = ""; }; - 2220D5CF127845EE008F2C2E /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; }; 2220D5D51278461C008F2C2E /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; 2220D5D71278461C008F2C2E /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 2220D5D91278461C008F2C2E /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; 2220D5E912784672008F2C2E /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - 2294995512A53FD800D6CF48 /* buddy_status.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = buddy_status.c; path = "../../liblinphone-sdk/apple-darwin/share/tutorials/linphone/buddy_status.c"; sourceTree = SOURCE_ROOT; }; - 2294995612A53FD800D6CF48 /* chatroom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chatroom.c; path = "../../liblinphone-sdk/apple-darwin/share/tutorials/linphone/chatroom.c"; sourceTree = SOURCE_ROOT; }; - 2294995712A53FD800D6CF48 /* registration.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = registration.c; path = "../../liblinphone-sdk/apple-darwin/share/tutorials/linphone/registration.c"; sourceTree = SOURCE_ROOT; }; 2294997D12A53FEE00D6CF48 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 229499BA12A5417D00D6CF48 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 229499FF12A5433F00D6CF48 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -125,6 +136,27 @@ 22E5AFD0133A2E760044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 32CA4F630368D1EE00C91783 /* hello_world_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hello_world_Prefix.pch; sourceTree = ""; }; + 34F9DFE314C418B600E1BC69 /* buddy_status.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = buddy_status.c; path = ../../submodules/linphone/coreapi/help/buddy_status.c; sourceTree = ""; }; + 34F9DFE414C418B600E1BC69 /* chatroom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chatroom.c; path = ../../submodules/linphone/coreapi/help/chatroom.c; sourceTree = ""; }; + 34F9DFE514C418B600E1BC69 /* helloworld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = helloworld.c; path = ../../submodules/linphone/coreapi/help/helloworld.c; sourceTree = ""; }; + 34F9DFE614C418B600E1BC69 /* registration.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = registration.c; path = ../../submodules/linphone/coreapi/help/registration.c; sourceTree = ""; }; + 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libeXosip2.a; path = "../../liblinphone-sdk/apple-darwin/lib/libeXosip2.a"; sourceTree = ""; }; + 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgsm.a; path = "../../liblinphone-sdk/apple-darwin/lib/libgsm.a"; sourceTree = ""; }; + 34F9DFED14C41EBA00E1BC69 /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "../../liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; }; + 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "../../liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = ""; }; + 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "../../liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = ""; }; + 34F9DFF014C41EBA00E1BC69 /* libortp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libortp.a; path = "../../liblinphone-sdk/apple-darwin/lib/libortp.a"; sourceTree = ""; }; + 34F9DFF114C41EBA00E1BC69 /* libosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosip2.a; path = "../../liblinphone-sdk/apple-darwin/lib/libosip2.a"; sourceTree = ""; }; + 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosipparser2.a; path = "../../liblinphone-sdk/apple-darwin/lib/libosipparser2.a"; sourceTree = ""; }; + 34F9DFF314C41EBA00E1BC69 /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "../../liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = ""; }; + 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "../../liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; }; + 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 34F9E00414C41FCF00E1BC69 /* libsrtp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsrtp.a; path = "../../liblinphone-sdk/apple-darwin/lib/libsrtp.a"; sourceTree = ""; }; + 34F9E00514C41FCF00E1BC69 /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "../../liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; + 34F9E00814C41FE900E1BC69 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; + 34F9E00A14C4202100E1BC69 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 34F9E03314C4247A00E1BC69 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 34F9E03614C424AF00E1BC69 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* helloworld-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "helloworld-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -133,21 +165,28 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 34F9E03714C424AF00E1BC69 /* CoreMedia.framework in Frameworks */, + 34F9E03514C4249600E1BC69 /* CoreVideo.framework in Frameworks */, + 34F9E03414C4247A00E1BC69 /* AVFoundation.framework in Frameworks */, + 34F9E00B14C4202100E1BC69 /* QuartzCore.framework in Frameworks */, + 34F9E00614C41FCF00E1BC69 /* libsrtp.a in Frameworks */, + 34F9E00714C41FCF00E1BC69 /* libvpx.a in Frameworks */, + 34F9E00314C41FB400E1BC69 /* OpenGLES.framework in Frameworks */, + 34F9DFF514C41EBA00E1BC69 /* libeXosip2.a in Frameworks */, + 34F9DFF614C41EBA00E1BC69 /* libgsm.a in Frameworks */, + 34F9DFF714C41EBA00E1BC69 /* libilbc.a in Frameworks */, + 34F9DFF814C41EBA00E1BC69 /* liblinphone.a in Frameworks */, + 34F9DFF914C41EBA00E1BC69 /* libmediastreamer.a in Frameworks */, + 34F9DFFA14C41EBA00E1BC69 /* libortp.a in Frameworks */, + 34F9DFFB14C41EBA00E1BC69 /* libosip2.a in Frameworks */, + 34F9DFFC14C41EBA00E1BC69 /* libosipparser2.a in Frameworks */, + 34F9DFFD14C41EBA00E1BC69 /* libspeex.a in Frameworks */, + 34F9DFFE14C41EBA00E1BC69 /* libspeexdsp.a in Frameworks */, 22E5AFC5133A2E260044EA25 /* libssl.a in Frameworks */, 22E5AFC6133A2E260044EA25 /* libcrypto.a in Frameworks */, 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, - 2220D5BE127845EE008F2C2E /* libeXosip2.a in Frameworks */, - 2220D5C0127845EE008F2C2E /* libgsm.a in Frameworks */, - 2220D5C2127845EE008F2C2E /* libilbc.a in Frameworks */, - 2220D5C4127845EE008F2C2E /* liblinphone.a in Frameworks */, - 2220D5C6127845EE008F2C2E /* libmediastreamer.a in Frameworks */, - 2220D5C8127845EE008F2C2E /* libortp.a in Frameworks */, - 2220D5CA127845EE008F2C2E /* libosip2.a in Frameworks */, - 2220D5CC127845EE008F2C2E /* libosipparser2.a in Frameworks */, - 2220D5CE127845EE008F2C2E /* libspeex.a in Frameworks */, - 2220D5D0127845EE008F2C2E /* libspeexdsp.a in Frameworks */, 2220D5D81278461C008F2C2E /* CFNetwork.framework in Frameworks */, 2220D5DA1278461C008F2C2E /* CoreAudio.framework in Frameworks */, 2220D5EA12784672008F2C2E /* AudioToolbox.framework in Frameworks */, @@ -159,21 +198,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 34F9E03F14C4253300E1BC69 /* CoreMedia.framework in Frameworks */, + 34F9E04014C4253300E1BC69 /* CoreVideo.framework in Frameworks */, + 34F9E03E14C4252600E1BC69 /* AVFoundation.framework in Frameworks */, + 34F9E01614C420B800E1BC69 /* libgsm.a in Frameworks */, + 34F9E01714C420B800E1BC69 /* libspeex.a in Frameworks */, + 34F9E01814C420B800E1BC69 /* libspeexdsp.a in Frameworks */, + 34F9E01414C420A200E1BC69 /* libosip2.a in Frameworks */, + 34F9E01514C420A200E1BC69 /* libosipparser2.a in Frameworks */, + 34F9E01114C4208C00E1BC69 /* libeXosip2.a in Frameworks */, + 34F9E01214C4208C00E1BC69 /* libmediastreamer.a in Frameworks */, + 34F9E01314C4208C00E1BC69 /* libortp.a in Frameworks */, + 34F9E01014C4207700E1BC69 /* liblinphone.a in Frameworks */, + 34F9E00E14C4204600E1BC69 /* libsrtp.a in Frameworks */, + 34F9E00F14C4204600E1BC69 /* libvpx.a in Frameworks */, + 34F9E00C14C4203900E1BC69 /* OpenGLES.framework in Frameworks */, + 34F9E00D14C4203900E1BC69 /* QuartzCore.framework in Frameworks */, 22E5AFC9133A2E3F0044EA25 /* libssl.a in Frameworks */, 22E5AFCA133A2E3F0044EA25 /* libcrypto.a in Frameworks */, 2294996912A53FEE00D6CF48 /* Foundation.framework in Frameworks */, 2294996A12A53FEE00D6CF48 /* UIKit.framework in Frameworks */, 2294996B12A53FEE00D6CF48 /* CoreGraphics.framework in Frameworks */, - 2294996C12A53FEE00D6CF48 /* libeXosip2.a in Frameworks */, - 2294996D12A53FEE00D6CF48 /* libgsm.a in Frameworks */, - 2294996E12A53FEE00D6CF48 /* libilbc.a in Frameworks */, - 2294996F12A53FEE00D6CF48 /* liblinphone.a in Frameworks */, - 2294997012A53FEE00D6CF48 /* libmediastreamer.a in Frameworks */, - 2294997112A53FEE00D6CF48 /* libortp.a in Frameworks */, - 2294997212A53FEE00D6CF48 /* libosip2.a in Frameworks */, - 2294997312A53FEE00D6CF48 /* libosipparser2.a in Frameworks */, - 2294997412A53FEE00D6CF48 /* libspeex.a in Frameworks */, - 2294997512A53FEE00D6CF48 /* libspeexdsp.a in Frameworks */, 2294997612A53FEE00D6CF48 /* CFNetwork.framework in Frameworks */, 2294997712A53FEE00D6CF48 /* CoreAudio.framework in Frameworks */, 2294997812A53FEE00D6CF48 /* AudioToolbox.framework in Frameworks */, @@ -185,21 +230,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 34F9E03B14C4251B00E1BC69 /* AVFoundation.framework in Frameworks */, + 34F9E03C14C4251B00E1BC69 /* CoreMedia.framework in Frameworks */, + 34F9E03D14C4251B00E1BC69 /* CoreVideo.framework in Frameworks */, + 34F9E02414C4211000E1BC69 /* libsrtp.a in Frameworks */, + 34F9E02514C4211000E1BC69 /* libvpx.a in Frameworks */, + 34F9E02314C4210100E1BC69 /* OpenGLES.framework in Frameworks */, + 34F9E02214C420FA00E1BC69 /* QuartzCore.framework in Frameworks */, + 34F9E02114C420F000E1BC69 /* libmediastreamer.a in Frameworks */, + 34F9E01914C420DD00E1BC69 /* libeXosip2.a in Frameworks */, + 34F9E01A14C420DD00E1BC69 /* libgsm.a in Frameworks */, + 34F9E01B14C420DD00E1BC69 /* liblinphone.a in Frameworks */, + 34F9E01C14C420DD00E1BC69 /* libortp.a in Frameworks */, + 34F9E01D14C420DD00E1BC69 /* libosip2.a in Frameworks */, + 34F9E01E14C420DD00E1BC69 /* libosipparser2.a in Frameworks */, + 34F9E01F14C420DD00E1BC69 /* libspeex.a in Frameworks */, + 34F9E02014C420DD00E1BC69 /* libspeexdsp.a in Frameworks */, 22E5AFCD133A2E5C0044EA25 /* libssl.a in Frameworks */, 22E5AFCE133A2E5C0044EA25 /* libcrypto.a in Frameworks */, 229499A612A5417D00D6CF48 /* Foundation.framework in Frameworks */, 229499A712A5417D00D6CF48 /* UIKit.framework in Frameworks */, 229499A812A5417D00D6CF48 /* CoreGraphics.framework in Frameworks */, - 229499A912A5417D00D6CF48 /* libeXosip2.a in Frameworks */, - 229499AA12A5417D00D6CF48 /* libgsm.a in Frameworks */, - 229499AB12A5417D00D6CF48 /* libilbc.a in Frameworks */, - 229499AC12A5417D00D6CF48 /* liblinphone.a in Frameworks */, - 229499AD12A5417D00D6CF48 /* libmediastreamer.a in Frameworks */, - 229499AE12A5417D00D6CF48 /* libortp.a in Frameworks */, - 229499AF12A5417D00D6CF48 /* libosip2.a in Frameworks */, - 229499B012A5417D00D6CF48 /* libosipparser2.a in Frameworks */, - 229499B112A5417D00D6CF48 /* libspeex.a in Frameworks */, - 229499B212A5417D00D6CF48 /* libspeexdsp.a in Frameworks */, 229499B312A5417D00D6CF48 /* CFNetwork.framework in Frameworks */, 229499B412A5417D00D6CF48 /* CoreAudio.framework in Frameworks */, 229499B512A5417D00D6CF48 /* AudioToolbox.framework in Frameworks */, @@ -211,21 +262,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 34F9E03814C4250B00E1BC69 /* AVFoundation.framework in Frameworks */, + 34F9E03914C4250B00E1BC69 /* CoreMedia.framework in Frameworks */, + 34F9E03A14C4250B00E1BC69 /* CoreVideo.framework in Frameworks */, + 34F9E02814C4214500E1BC69 /* libeXosip2.a in Frameworks */, + 34F9E02914C4214500E1BC69 /* libgsm.a in Frameworks */, + 34F9E02A14C4214500E1BC69 /* liblinphone.a in Frameworks */, + 34F9E02B14C4214500E1BC69 /* libmediastreamer.a in Frameworks */, + 34F9E02C14C4214500E1BC69 /* libortp.a in Frameworks */, + 34F9E02D14C4214500E1BC69 /* libosip2.a in Frameworks */, + 34F9E02E14C4214500E1BC69 /* libosipparser2.a in Frameworks */, + 34F9E02F14C4214500E1BC69 /* libspeex.a in Frameworks */, + 34F9E03014C4214500E1BC69 /* libspeexdsp.a in Frameworks */, + 34F9E03114C4214500E1BC69 /* libsrtp.a in Frameworks */, + 34F9E03214C4214500E1BC69 /* libvpx.a in Frameworks */, + 34F9E02614C4212F00E1BC69 /* OpenGLES.framework in Frameworks */, + 34F9E02714C4212F00E1BC69 /* QuartzCore.framework in Frameworks */, 22E5AFD1133A2E760044EA25 /* libssl.a in Frameworks */, 22E5AFD2133A2E760044EA25 /* libcrypto.a in Frameworks */, 229499EB12A5433F00D6CF48 /* Foundation.framework in Frameworks */, 229499EC12A5433F00D6CF48 /* UIKit.framework in Frameworks */, 229499ED12A5433F00D6CF48 /* CoreGraphics.framework in Frameworks */, - 229499EE12A5433F00D6CF48 /* libeXosip2.a in Frameworks */, - 229499EF12A5433F00D6CF48 /* libgsm.a in Frameworks */, - 229499F012A5433F00D6CF48 /* libilbc.a in Frameworks */, - 229499F112A5433F00D6CF48 /* liblinphone.a in Frameworks */, - 229499F212A5433F00D6CF48 /* libmediastreamer.a in Frameworks */, - 229499F312A5433F00D6CF48 /* libortp.a in Frameworks */, - 229499F412A5433F00D6CF48 /* libosip2.a in Frameworks */, - 229499F512A5433F00D6CF48 /* libosipparser2.a in Frameworks */, - 229499F612A5433F00D6CF48 /* libspeex.a in Frameworks */, - 229499F712A5433F00D6CF48 /* libspeexdsp.a in Frameworks */, 229499F812A5433F00D6CF48 /* CFNetwork.framework in Frameworks */, 229499F912A5433F00D6CF48 /* CoreAudio.framework in Frameworks */, 229499FA12A5433F00D6CF48 /* AudioToolbox.framework in Frameworks */, @@ -257,6 +314,23 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( + 34F9E03614C424AF00E1BC69 /* CoreMedia.framework */, + 34F9E03314C4247A00E1BC69 /* AVFoundation.framework */, + 34F9E00A14C4202100E1BC69 /* QuartzCore.framework */, + 34F9E00814C41FE900E1BC69 /* CoreVideo.framework */, + 34F9E00414C41FCF00E1BC69 /* libsrtp.a */, + 34F9E00514C41FCF00E1BC69 /* libvpx.a */, + 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */, + 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */, + 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */, + 34F9DFED14C41EBA00E1BC69 /* libilbc.a */, + 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */, + 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */, + 34F9DFF014C41EBA00E1BC69 /* libortp.a */, + 34F9DFF114C41EBA00E1BC69 /* libosip2.a */, + 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */, + 34F9DFF314C41EBA00E1BC69 /* libspeex.a */, + 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */, 22E5AFCF133A2E760044EA25 /* libssl.a */, 22E5AFD0133A2E760044EA25 /* libcrypto.a */, 22E5AFCB133A2E5C0044EA25 /* libssl.a */, @@ -270,16 +344,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, - 2220D5BD127845EE008F2C2E /* libeXosip2.a */, - 2220D5BF127845EE008F2C2E /* libgsm.a */, - 2220D5C1127845EE008F2C2E /* libilbc.a */, - 2220D5C3127845EE008F2C2E /* liblinphone.a */, - 2220D5C5127845EE008F2C2E /* libmediastreamer.a */, - 2220D5C7127845EE008F2C2E /* libortp.a */, - 2220D5C9127845EE008F2C2E /* libosip2.a */, - 2220D5CB127845EE008F2C2E /* libosipparser2.a */, - 2220D5CD127845EE008F2C2E /* libspeex.a */, - 2220D5CF127845EE008F2C2E /* libspeexdsp.a */, 2220D5D51278461C008F2C2E /* AudioUnit.framework */, 2220D5D71278461C008F2C2E /* CFNetwork.framework */, 2220D5D91278461C008F2C2E /* CoreAudio.framework */, @@ -292,10 +356,10 @@ 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( - 2294995512A53FD800D6CF48 /* buddy_status.c */, - 2294995612A53FD800D6CF48 /* chatroom.c */, - 2294995712A53FD800D6CF48 /* registration.c */, - 2220D596127844C9008F2C2E /* helloworld.c */, + 34F9DFE314C418B600E1BC69 /* buddy_status.c */, + 34F9DFE414C418B600E1BC69 /* chatroom.c */, + 34F9DFE514C418B600E1BC69 /* helloworld.c */, + 34F9DFE614C418B600E1BC69 /* registration.c */, 32CA4F630368D1EE00C91783 /* hello_world_Prefix.pch */, ); name = "Other Sources"; @@ -453,7 +517,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2220D597127844C9008F2C2E /* helloworld.c in Sources */, + 34F9DFE914C418B600E1BC69 /* helloworld.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -461,7 +525,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2294996712A53FEE00D6CF48 /* registration.c in Sources */, + 34F9E00114C41F5300E1BC69 /* registration.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -469,7 +533,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 229499BD12A5419500D6CF48 /* chatroom.c in Sources */, + 34F9E00014C41F4E00E1BC69 /* chatroom.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -477,7 +541,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 22DF2B1612A65892007C6B74 /* buddy_status.c in Sources */, + 34F9DFFF14C41F4900E1BC69 /* buddy_status.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -493,6 +557,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = hello_world_Prefix.pch; + GCC_VERSION = com.apple.compilers.llvmgcc42; INFOPLIST_FILE = "helloworld-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( @@ -511,6 +576,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = hello_world_Prefix.pch; + GCC_VERSION = com.apple.compilers.llvmgcc42; INFOPLIST_FILE = "helloworld-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( @@ -532,6 +598,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = hello_world_Prefix.pch; + GCC_VERSION = com.apple.compilers.llvmgcc42; INFOPLIST_FILE = "helloworld-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( @@ -551,6 +618,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = hello_world_Prefix.pch; + GCC_VERSION = com.apple.compilers.llvmgcc42; INFOPLIST_FILE = "helloworld-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( @@ -573,6 +641,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = hello_world_Prefix.pch; + GCC_VERSION = com.apple.compilers.llvmgcc42; INFOPLIST_FILE = "helloworld-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( @@ -592,6 +661,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = hello_world_Prefix.pch; + GCC_VERSION = com.apple.compilers.llvmgcc42; INFOPLIST_FILE = "helloworld-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( @@ -614,6 +684,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = hello_world_Prefix.pch; + GCC_VERSION = com.apple.compilers.llvmgcc42; INFOPLIST_FILE = "helloworld-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( @@ -633,6 +704,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = hello_world_Prefix.pch; + GCC_VERSION = com.apple.compilers.llvmgcc42; INFOPLIST_FILE = "helloworld-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( From ea7d0489064ea2b7d4d00cafb61639bcc5fc24a1 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 17 Jan 2012 11:45:08 +0100 Subject: [PATCH 37/60] Pause video stream when user press the 'home' button --- Classes/LinphoneAppDelegate.m | 35 +++++++++++++++++++++++++++- Classes/LinphoneUI/LinphoneManager.h | 11 ++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 2a813d0f5..52d29b56b 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -27,7 +27,7 @@ #include "CallHistoryTableViewController.h" #include "LinphoneManager.h" - +#include "linphonecore.h" @implementation linphoneAppDelegate @@ -37,11 +37,44 @@ @synthesize myPhoneViewController; +-(void)applicationWillResignActive:(UIApplication *)application { + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* call = linphone_core_get_current_call(lc); + if (call == NULL) + return; + + /* save call context */ + LinphoneManager* instance = [LinphoneManager instance]; + instance->currentCallContextBeforeGoingBackground.call = call; + instance->currentCallContextBeforeGoingBackground.cameraIsEnabled = linphone_call_camera_enabled(call); + + const LinphoneCallParams* params = linphone_call_get_current_params(call); + if (linphone_call_params_video_enabled(params)) { + linphone_call_enable_camera(call, false); + } + +} - (void)applicationDidEnterBackground:(UIApplication *)application { [[LinphoneManager instance] enterBackgroundMode]; } - (void)applicationDidBecomeActive:(UIApplication *)application { [[LinphoneManager instance] becomeActive]; + + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* call = linphone_core_get_current_call(lc); + if (call == NULL) + return; + + LinphoneManager* instance = [LinphoneManager instance]; + if (call == instance->currentCallContextBeforeGoingBackground.call) { + const LinphoneCallParams* params = linphone_call_get_current_params(call); + if (linphone_call_params_video_enabled(params)) { + linphone_call_enable_camera( + call, + instance->currentCallContextBeforeGoingBackground.cameraIsEnabled); + } + instance->currentCallContextBeforeGoingBackground.call = 0; + } } - (void) loadDefaultSettings { diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 6b8114db3..1c0915469 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -29,6 +29,13 @@ typedef enum _Connectivity { ,none } Connectivity; @class FastAddressBook; + +/* Application specific call context */ +typedef struct _CallContext { + LinphoneCall* call; + bool_t cameraIsEnabled; +} CallContext; + @interface LinphoneManager : NSObject { @private SCNetworkReachabilityContext proxyReachabilityContext; @@ -44,7 +51,9 @@ typedef enum _Connectivity { FastAddressBook* mFastAddressBook; const char* frontCamId; const char* backCamId; - + +@public + CallContext currentCallContextBeforeGoingBackground; } +(LinphoneManager*) instance; +(LinphoneCore*) getLc; From e53bc9209dbcf5b72693185f80b06644cb46cc55 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 17 Jan 2012 16:59:05 +0100 Subject: [PATCH 38/60] Fix NULL pointer dereference in video stats display --- Classes/VideoViewController.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m index c7b2febc7..8e2200c68 100644 --- a/Classes/VideoViewController.m +++ b/Classes/VideoViewController.m @@ -91,7 +91,9 @@ NSTimer *callQualityRefresher; - (void) updateCallQualityIndicator { LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - + if (!call) + return; + if (linphone_call_get_average_quality(call) >= 4) { [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; From dc301bb8169800728d220e4565025eef0b6d5419 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 17 Jan 2012 16:59:53 +0100 Subject: [PATCH 39/60] Embbed nowebcamCIF.jpg image in application --- Classes/LinphoneUI/LinphoneManager.m | 8 ++++++++ linphone.xcodeproj/project.pbxproj | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 909e1f7eb..5408fe6ca 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -805,6 +805,14 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach [error show]; [error release]; } + + NSString* path = [myBundle pathForResource:@"nowebcamCIF" ofType:@"jpg"]; + if (path) { + const char* imagePath = [path cStringUsingEncoding:[NSString defaultCStringEncoding]]; + ms_message("Using '%s' as source image for no webcam", imagePath); + linphone_core_set_static_picture(theLinphoneCore, imagePath); + } + /*DETECT cameras*/ frontCamId= backCamId=nil; char** camlist = (char**)linphone_core_get_video_devices(theLinphoneCore); diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index d609bdf39..a57d43ab8 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -232,6 +232,8 @@ 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; 340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; + 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; + 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; @@ -614,6 +616,7 @@ 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = ""; }; 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "ConferenceCallDetailView-ipad.xib"; sourceTree = ""; }; + 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = nowebcamCIF.jpg; path = submodules/linphone/mediastreamer2/src/nowebcamCIF.jpg; sourceTree = ""; }; 341FCA8D149798210084BC26 /* linphonerc-ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-ipad"; sourceTree = ""; }; 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "InCallViewController-ipad.xib"; sourceTree = ""; }; 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "PhoneViewController-ipad.xib"; sourceTree = ""; }; @@ -1173,6 +1176,7 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */, 1AE0A49214AC5C64002C99BD /* mic_active.png */, 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */, 1AE0A49414AC5C64002C99BD /* stat_sys_signal_1.png */, @@ -1367,6 +1371,7 @@ 1AE0A4A014AC5C64002C99BD /* stat_sys_signal_3.png in Resources */, 1AE0A4A214AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, 340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, + 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1436,6 +1441,7 @@ 1AE0A4A114AC5C64002C99BD /* stat_sys_signal_3.png in Resources */, 1AE0A4A314AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, + 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From ce40b549e3c658817a075946f0bb67a40368316f Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Wed, 18 Jan 2012 11:52:08 +0100 Subject: [PATCH 40/60] Fix copyright header --- Classes/ConferenceCallDetailView.h | 26 ++++++++++++++++++-------- Classes/ConferenceCallDetailView.m | 25 ++++++++++++++++++------- Classes/MainScreenWithVideoPreview.h | 25 ++++++++++++++++++------- Classes/MainScreenWithVideoPreview.m | 26 ++++++++++++++++++-------- Classes/MainScreenWithVideoPreview.xib | 3 --- 5 files changed, 72 insertions(+), 33 deletions(-) diff --git a/Classes/ConferenceCallDetailView.h b/Classes/ConferenceCallDetailView.h index 8e1e19de0..b6bb27fe7 100644 --- a/Classes/ConferenceCallDetailView.h +++ b/Classes/ConferenceCallDetailView.h @@ -1,11 +1,21 @@ -// -// ConferenceCallDetailView.h -// linphone -// -// Created by Pierre-Eric Pelloux-Prayer on 25/11/11. -// Copyright (c) 2011 Belledonne Communications. All rights reserved. -// - +/* ConferenceCallDetailView.h + * + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ #import #import "LinphoneUI/UIMuteButton.h" #import "LinphoneUI/UISpeakerButton.h" diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index 8d218efef..462fbc2ec 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -1,10 +1,21 @@ -// -// ConferenceCallDetailView.m -// linphone -// -// Created by Pierre-Eric Pelloux-Prayer on 25/11/11. -// Copyright (c) 2011 Belledonne Communications. All rights reserved. -// +/* ConferenceCallDetailView.m + * + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ #import "ConferenceCallDetailView.h" #import "linphonecore.h" diff --git a/Classes/MainScreenWithVideoPreview.h b/Classes/MainScreenWithVideoPreview.h index 6b443b6b2..e981e7d63 100644 --- a/Classes/MainScreenWithVideoPreview.h +++ b/Classes/MainScreenWithVideoPreview.h @@ -1,10 +1,21 @@ -// -// MainScreenWithVideoPreview.h -// linphone -// -// Created by Pierre-Eric Pelloux-Prayer on 07/12/11. -// Copyright (c) 2011 __MyCompanyName__. All rights reserved. -// +/* MainScreenWithVideoPreview.h + * + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ #import #import diff --git a/Classes/MainScreenWithVideoPreview.m b/Classes/MainScreenWithVideoPreview.m index 39764b38d..98db47401 100644 --- a/Classes/MainScreenWithVideoPreview.m +++ b/Classes/MainScreenWithVideoPreview.m @@ -1,11 +1,21 @@ -// -// MainScreenWithVideoPreview.m -// linphone -// -// Created by Pierre-Eric Pelloux-Prayer on 07/12/11. -// Copyright (c) 2011 __MyCompanyName__. All rights reserved. -// - +/* MainScreenWithVideoPreview.h + * + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ #import "MainScreenWithVideoPreview.h" #import diff --git a/Classes/MainScreenWithVideoPreview.xib b/Classes/MainScreenWithVideoPreview.xib index 2a0b84cae..4af39bdd9 100644 --- a/Classes/MainScreenWithVideoPreview.xib +++ b/Classes/MainScreenWithVideoPreview.xib @@ -44,7 +44,6 @@ 292 {768, 1024} - _NS:196 3 @@ -143,7 +142,6 @@ 266 {{0, 975}, {768, 49}} - 3 MCAwAA @@ -158,7 +156,6 @@ 274 {{0, 20}, {768, 1004}} - _NS:212 1 From 352a600bbb1550078d81ea8fe39e70cc85a88665 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Wed, 18 Jan 2012 11:52:25 +0100 Subject: [PATCH 41/60] Split UI registration status indication in a separate ViewController --- Classes/FirstLoginViewController.m | 1 - Classes/InCallViewController-ipad.xib | 389 +++++++++++++++++- Classes/IncallViewController.xib | 142 ++++++- Classes/LinphoneUI/LinphoneManager.m | 3 +- Classes/PhoneViewController-ipad.xib | 83 ++-- Classes/PhoneViewController.h | 7 +- Classes/PhoneViewController.m | 93 ++++- Classes/PhoneViewController.xib | 550 +++++++++++++------------- Classes/StatusSubViewController.h | 34 ++ Classes/StatusSubViewController.m | 99 +++++ Classes/StatusSubViewController.xib | 253 ++++++++++++ Resources/startcall-gray.png | Bin 0 -> 2111 bytes Resources/status_gray.png | Bin 0 -> 948 bytes Resources/status_green.png | Bin 0 -> 1242 bytes Resources/status_offline.png | Bin 0 -> 1179 bytes Resources/status_orange.png | Bin 0 -> 1252 bytes Resources/status_red.png | Bin 0 -> 1202 bytes linphone.xcodeproj/project.pbxproj | 50 +++ submodules/linphone | 2 +- 19 files changed, 1333 insertions(+), 373 deletions(-) create mode 100644 Classes/StatusSubViewController.h create mode 100644 Classes/StatusSubViewController.m create mode 100644 Classes/StatusSubViewController.xib create mode 100644 Resources/startcall-gray.png create mode 100644 Resources/status_gray.png create mode 100644 Resources/status_green.png create mode 100644 Resources/status_offline.png create mode 100644 Resources/status_orange.png create mode 100644 Resources/status_red.png diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 99bd808c5..ddacf0e09 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -90,7 +90,6 @@ [[NSUserDefaults standardUserDefaults] setBool:false forKey:@"enable_first_login_view_preference"]; [self.parentViewController dismissModalViewControllerAnimated:true]; [self.activityIndicator setHidden:true]; - [[LinphoneManager instance] setRegistrationDelegate:nil]; } -(void) displayRegisteringFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { [self.activityIndicator setHidden:false]; diff --git a/Classes/InCallViewController-ipad.xib b/Classes/InCallViewController-ipad.xib index 592a9208f..17661327c 100644 --- a/Classes/InCallViewController-ipad.xib +++ b/Classes/InCallViewController-ipad.xib @@ -43,6 +43,7 @@ 274 {768, 805} + _NS:408 @@ -70,6 +71,8 @@ 292 {{0, 1}, {320, 66}} + + 1 MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA @@ -114,6 +117,7 @@ {{224, 937}, {320, 77}} + _NS:196 @@ -131,6 +135,7 @@ 292 {{107, 70}, {106, 66}} + NO @@ -144,10 +149,6 @@ MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - NSImage - conf_merge.png - NSImage grouper.png @@ -167,6 +168,7 @@ 292 {{0, 4}, {107, 66}} + NO @@ -207,6 +209,7 @@ 292 {{0, 70}, {107, 66}} + NO @@ -232,6 +235,7 @@ 292 {{213, 70}, {107, 66}} + NO @@ -260,6 +264,7 @@ -2147483356 {{213, 70}, {107, 66}} + NO @@ -287,6 +292,7 @@ 292 {{107, 4}, {106, 66}} + NO @@ -312,6 +318,7 @@ 292 {{213, 4}, {107, 66}} + NO @@ -342,6 +349,7 @@ 292 {{107, 70}, {106, 66}} + NO @@ -371,6 +379,7 @@ {{224, 801.5}, {320, 135}} + NO @@ -386,6 +395,7 @@ 292 {{119, 251}, {82, 52}} + NO @@ -408,6 +418,7 @@ 292 {{119, 193}, {82, 52}} + 3 @@ -433,6 +444,7 @@ 292 {{31, 19}, {82, 52}} + NO @@ -455,6 +467,7 @@ 292 {{119, 19}, {82, 52}} + NO @@ -474,6 +487,7 @@ 292 {{207, 19}, {82, 52}} + NO @@ -496,6 +510,7 @@ 292 {{31, 77}, {82, 52}} + NO @@ -518,6 +533,7 @@ 292 {{119, 77}, {82, 52}} + NO @@ -540,6 +556,7 @@ 292 {{207, 77}, {82, 52}} + NO @@ -562,6 +579,7 @@ 292 {{31, 135}, {82, 52}} + NO @@ -584,6 +602,7 @@ 292 {{119, 135}, {82, 52}} + NO @@ -606,6 +625,7 @@ 292 {{207, 135}, {82, 52}} + NO @@ -628,6 +648,7 @@ 292 {{31, 193}, {82, 52}} + NO @@ -650,6 +671,7 @@ 292 {{207, 193}, {82, 52}} + NO @@ -670,6 +692,7 @@ {{178, 146}, {320, 310}} + 3 @@ -682,6 +705,7 @@ {{0, 20}, {768, 1004}} + _NS:212 @@ -1220,7 +1244,7 @@ UIAddVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIMuteButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1244,7 +1268,357 @@ 144 - + + + + IncallViewController + UIViewController + + doAction: + id + + + doAction: + + doAction: + id + + + + UIButton + UIButton + UITableView + UIButton + UIViewController + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + VideoViewController + UIButton + + + + addCall + UIButton + + + addVideo + UIButton + + + callTableView + UITableView + + + close + UIButton + + + conferenceDetail + UIViewController + + + contacts + UIButton + + + controlSubView + UIView + + + dialer + UIButton + + + eight + UIButton + + + endCtrl + UIButton + + + five + UIButton + + + four + UIButton + + + hangUpView + UIView + + + hash + UIButton + + + mergeCalls + UIButton + + + mute + UIButton + + + nine + UIButton + + + one + UIButton + + + padSubView + UIView + + + pause + UIButton + + + seven + UIButton + + + six + UIButton + + + speaker + UIButton + + + star + UIButton + + + three + UIButton + + + two + UIButton + + + videoViewController + VideoViewController + + + zero + UIButton + + + + IBProjectSource + ./Classes/IncallViewController.h + + + + UIAddVideoButton + UIButton + + IBProjectSource + ./Classes/UIAddVideoButton.h + + + + UICamSwitch + UIButton + + preview + UIView + + + preview + + preview + UIView + + + + IBProjectSource + ./Classes/UICamSwitch.h + + + + UIDigitButton + UIButton + + IBProjectSource + ./Classes/UIDigitButton.h + + + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UIMuteButton + UIToggleButton + + IBProjectSource + ./Classes/UIMuteButton.h + + + + UISpeakerButton + UIToggleButton + + IBProjectSource + ./Classes/UISpeakerButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + VideoViewController + UIViewController + + UIImageView + UIImageView + UIImageView + UICamSwitch + UICamSwitch + UICamSwitch + UIView + UIView + UIView + UIHangUpButton + UIHangUpButton + UIHangUpButton + UIView + UIView + UIMuteButton + UIMuteButton + UIMuteButton + UIView + UIView + UIView + UIView + + + + mCallQuality + UIImageView + + + mCallQualityLandLeft + UIImageView + + + mCallQualityLandRight + UIImageView + + + mCamSwitch + UICamSwitch + + + mCamSwitchLandLeft + UICamSwitch + + + mCamSwitchLandRight + UICamSwitch + + + mDisplay + UIView + + + mDisplayLandLeft + UIView + + + mDisplayLandRight + UIView + + + mHangUp + UIHangUpButton + + + mHangUpLandLeft + UIHangUpButton + + + mHangUpLandRight + UIHangUpButton + + + mLandscapeLeft + UIView + + + mLandscapeRight + UIView + + + mMute + UIMuteButton + + + mMuteLandLeft + UIMuteButton + + + mMuteLandRight + UIMuteButton + + + mPortrait + UIView + + + mPreview + UIView + + + mPreviewLandLeft + UIView + + + mPreviewLandRight + UIView + + + + IBProjectSource + ./Classes/VideoViewController.h + + + + 0 IBIPadFramework YES @@ -1256,10 +1630,9 @@ {106, 60} {160, 60} {106, 67} - {16, 16} {107, 67} {106, 67} - {82, 82} + {20, 20} {107, 67} {107, 67} {106, 67} diff --git a/Classes/IncallViewController.xib b/Classes/IncallViewController.xib index 3e1b63885..9a8d85d63 100644 --- a/Classes/IncallViewController.xib +++ b/Classes/IncallViewController.xib @@ -150,10 +150,6 @@ MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - NSImage - conf_merge.png - NSImage grouper.png @@ -1284,7 +1280,7 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1376,6 +1372,7 @@ callControlSubView callTableView close + conferenceDetail contacts controlSubView dialer @@ -1408,6 +1405,7 @@ UIView UITableView UIButton + UIViewController UIButton UIView UIButton @@ -1443,6 +1441,7 @@ callControlSubView callTableView close + conferenceDetail contacts controlSubView dialer @@ -1493,6 +1492,10 @@ close UIButton + + conferenceDetail + UIViewController + contacts UIButton @@ -1666,30 +1669,60 @@ YES YES + mCallQuality + mCallQualityLandLeft + mCallQualityLandRight mCamSwitch mCamSwitchLand + mCamSwitchLandLeft + mCamSwitchLandRight mDisplay mDisplayLand + mDisplayLandLeft + mDisplayLandRight mHangUp mHangUpLand + mHangUpLandLeft + mHangUpLandRight mLandscape + mLandscapeLeft + mLandscapeRight mMute mMuteLand + mMuteLandLeft + mMuteLandRight mPortrait mPreview mPreviewLand + mPreviewLandLeft + mPreviewLandRight YES + UIImageView + UIImageView + UIImageView + UICamSwitch + UICamSwitch UICamSwitch UICamSwitch UIView UIView + UIView + UIView + UIHangUpButton + UIHangUpButton UIHangUpButton UIHangUpButton UIView + UIView + UIView UIMuteButton UIMuteButton + UIMuteButton + UIMuteButton + UIView + UIView UIView UIView UIView @@ -1699,21 +1732,48 @@ YES YES + mCallQuality + mCallQualityLandLeft + mCallQualityLandRight mCamSwitch mCamSwitchLand + mCamSwitchLandLeft + mCamSwitchLandRight mDisplay mDisplayLand + mDisplayLandLeft + mDisplayLandRight mHangUp mHangUpLand + mHangUpLandLeft + mHangUpLandRight mLandscape + mLandscapeLeft + mLandscapeRight mMute mMuteLand + mMuteLandLeft + mMuteLandRight mPortrait mPreview mPreviewLand + mPreviewLandLeft + mPreviewLandRight YES + + mCallQuality + UIImageView + + + mCallQualityLandLeft + UIImageView + + + mCallQualityLandRight + UIImageView + mCamSwitch UICamSwitch @@ -1722,6 +1782,14 @@ mCamSwitchLand UICamSwitch + + mCamSwitchLandLeft + UICamSwitch + + + mCamSwitchLandRight + UICamSwitch + mDisplay UIView @@ -1730,6 +1798,14 @@ mDisplayLand UIView + + mDisplayLandLeft + UIView + + + mDisplayLandRight + UIView + mHangUp UIHangUpButton @@ -1738,10 +1814,26 @@ mHangUpLand UIHangUpButton + + mHangUpLandLeft + UIHangUpButton + + + mHangUpLandRight + UIHangUpButton + mLandscape UIView + + mLandscapeLeft + UIView + + + mLandscapeRight + UIView + mMute UIMuteButton @@ -1750,6 +1842,14 @@ mMuteLand UIMuteButton + + mMuteLandLeft + UIMuteButton + + + mMuteLandRight + UIMuteButton + mPortrait UIView @@ -1762,6 +1862,14 @@ mPreviewLand UIView + + mPreviewLandLeft + UIView + + + mPreviewLandRight + UIView + @@ -1793,7 +1901,6 @@ clavier-01-106px.png clavier-01-160px.png clavier.png - conf_merge.png contact.png grouper.png mic_active.png @@ -1805,20 +1912,19 @@ YES - {164, 104} - {164, 104} - {164, 104} + {107, 67} + {107, 67} + {107, 67} {106, 60} {160, 60} - {164, 104} - {82, 75} - {164, 104} - {164, 104} - {20, 20} - {164, 104} - {164, 104} - {164, 104} - {164, 104} + {106, 67} + {107, 67} + {106, 67} + {82, 82} + {107, 67} + {107, 67} + {106, 67} + {106, 67} {62, 54} diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 5408fe6ca..8dcf1e4c3 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -312,6 +312,8 @@ static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall* call, Lin } -(void) onRegister:(LinphoneCore *)lc cfg:(LinphoneProxyConfig*) cfg state:(LinphoneRegistrationState) state message:(const char*) message { + NSLog(@"NEW REGISTRATION STATE: '%s' (message: '%s')", linphone_registration_state_to_string(state), message); + LinphoneAddress* lAddress = linphone_address_new(linphone_proxy_config_get_identity(cfg)); NSString* lUserName = linphone_address_get_username(lAddress)? [[NSString alloc] initWithUTF8String:linphone_address_get_username(lAddress) ]:@""; NSString* lDisplayName = linphone_address_get_display_name(lAddress)? [[NSString alloc] initWithUTF8String:linphone_address_get_display_name(lAddress) ]:@""; @@ -345,7 +347,6 @@ static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall* call, Lin forReason:lErrorMessage]; if (lErrorMessage != nil - && registrationDelegate==nil && linphone_proxy_config_get_error(cfg) != LinphoneReasonNoResponse) { //do not report network connection issue on registration //default behavior if no registration delegates diff --git a/Classes/PhoneViewController-ipad.xib b/Classes/PhoneViewController-ipad.xib index ca23ef6e4..54406ea07 100644 --- a/Classes/PhoneViewController-ipad.xib +++ b/Classes/PhoneViewController-ipad.xib @@ -11,7 +11,6 @@ 933 - IBUILabel IBUIViewController IBUIButton IBUIView @@ -158,7 +157,7 @@ {{573, 112.5}, {160, 231}} - + NO NO IBIPadFramework @@ -235,39 +234,6 @@ - - - 292 - {{415, 346}, {320, 29}} - - - - - 3 - MCAwAA - - NO - YES - NO - IBIPadFramework - status - - 1 - MCAwIDAAA - - - 1 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - 292 @@ -551,6 +517,20 @@ + + + 292 + {{415, 351}, {320, 20}} + + + + _NS:212 + + 3 + MCAwAA + + IBIPadFramework + {{0, 569}, {768, 386}} @@ -739,11 +719,11 @@ - status + statusViewHolder - + - 55 + 62 @@ -798,12 +778,12 @@ - + @@ -903,9 +883,10 @@ Call-large - 21 - + 61 + + status_holder @@ -919,7 +900,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIEraseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -951,12 +931,13 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 60 + 62 @@ -985,17 +966,6 @@ PhoneViewController UIViewController - - doKeyPad: - id - - - doKeyPad: - - doKeyPad: - id - - UITextField UIButton @@ -1015,6 +985,7 @@ UIButton UIButton UILabel + UIView UIButton UIButton UIButton @@ -1093,6 +1064,10 @@ status UILabel + + statusViewHolder + UIView + switchCamera UIButton diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h index 259af213d..27b93562c 100644 --- a/Classes/PhoneViewController.h +++ b/Classes/PhoneViewController.h @@ -21,13 +21,14 @@ #import "linphonecore.h" #import "UILinphone.h" #import "CallDelegate.h" +#import "StatusSubViewController.h" @class MainScreenWithVideoPreview; @class IncallViewController; @class FirstLoginViewController; -@interface PhoneViewController : UIViewController { +@interface PhoneViewController : UIViewController { @private //UI definition @@ -55,6 +56,7 @@ UIDigitButton* hash; UIButton* backToCallView; + UIView* statusViewHolder; UITabBarController* myTabBarController; @@ -62,6 +64,7 @@ FirstLoginViewController* myFirstLoginViewController; IncallViewController* mIncallViewController; MainScreenWithVideoPreview* mMainScreenWithVideoPreview; + StatusSubViewController* statusSubViewController; UIButton* switchCamera; } @@ -87,6 +90,8 @@ @property (nonatomic, retain) IBOutlet UIButton* zero; @property (nonatomic, retain) IBOutlet UIButton* hash; +@property (nonatomic, retain) IBOutlet UIView* statusViewHolder; + @property (nonatomic, retain) IBOutlet UIButton* backToCallView; @property (nonatomic, retain) IBOutlet UIButton* switchCamera; diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index a99cfe838..b1f1214a8 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -49,12 +49,54 @@ @synthesize zero; @synthesize hash; +@synthesize statusViewHolder; + @synthesize myTabBarController; @synthesize mMainScreenWithVideoPreview; @synthesize backToCallView; @synthesize switchCamera; +-(void) updateStatusSubView { + LinphoneCore* lc = 0; + @try { + lc = [LinphoneManager getLc]; + } @catch (NSException* exc) { + return; + } + + if (!lc) + return; + + BOOL enableCallButtons; + LinphoneProxyConfig* config; + linphone_core_get_default_proxy([LinphoneManager getLc], &config); + + LinphoneRegistrationState s; + NSString* m = nil; + + if (config == NULL) { + s = LinphoneRegistrationNone; + m = @"No SIP account configured"; + } else { + s = linphone_proxy_config_get_state(config); + + switch (s) { + case LinphoneRegistrationOk: m = @"Registered"; break; + case LinphoneRegistrationNone: m=@"Not registered"; break; + case LinphoneRegistrationFailed: m = @"Registration failed"; break; + case LinphoneRegistrationProgress: m = @"Registration in progress"; break; + case LinphoneRegistrationCleared: m= @"No SIP account"; break; + default: break; + } + } + + enableCallButtons = [statusSubViewController updateWithRegistrationState:s message:m]; + + [callLarge setEnabled:enableCallButtons]; + [callShort setEnabled:enableCallButtons]; + [backToCallView setEnabled:enableCallButtons]; +} -(void) updateCallAndBackButtons { @try { @@ -72,15 +114,18 @@ [exc.name cStringUsingEncoding:[NSString defaultCStringEncoding]], [exc.reason cStringUsingEncoding:[NSString defaultCStringEncoding]]); } + + [self updateStatusSubView]; } + - (void)viewDidAppear:(BOOL)animated { if ([[NSUserDefaults standardUserDefaults] boolForKey:@"enable_first_login_view_preference"] == true) { myFirstLoginViewController = [[FirstLoginViewController alloc] initWithNibName:@"FirstLoginViewController" bundle:[NSBundle mainBundle]]; - [[LinphoneManager instance] setRegistrationDelegate:myFirstLoginViewController]; [self presentModalViewController:myFirstLoginViewController animated:true]; - }; + } + [[LinphoneManager instance] setRegistrationDelegate:self]; [mMainScreenWithVideoPreview showPreview:YES]; [self updateCallAndBackButtons]; @@ -91,10 +136,10 @@ } -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib : called twice (?!) +// Implement viewDidLoad to do additional setup after loading the view, typically from a nib : may be called twice - (void)viewDidLoad { [super viewDidLoad]; - + [mDisplayName release]; mDisplayName = [UILabel alloc]; [zero initWithNumber:'0' addressField:address dtmf:false]; @@ -114,8 +159,17 @@ [erase initWithAddressField:address]; [backToCallView addTarget:self action:@selector(backToCallViewPressed) forControlEvents:UIControlEventTouchUpInside]; - mIncallViewController = [[IncallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"IncallViewController" + if (mIncallViewController == nil) + mIncallViewController = [[IncallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"IncallViewController" bundle:[NSBundle mainBundle]]; + + if (statusSubViewController == nil) { + statusSubViewController = [[StatusSubViewController alloc] initWithNibName:@"StatusSubViewController" + bundle:[NSBundle mainBundle]]; + [statusViewHolder addSubview:statusSubViewController.view]; + } + + [self updateCallAndBackButtons]; } - (void)didReceiveMemoryWarning { @@ -180,8 +234,7 @@ } //status reporting --(void) displayStatus:(NSString*) message { - [status setText:message]; +-(void) displayStatus:(NSString*) message { [mIncallViewController displayStatus:message]; } @@ -302,5 +355,31 @@ [super dealloc]; } +-(void) displayRegisteredFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { + if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { + [myFirstLoginViewController displayRegisteredFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; + } + [self updateStatusSubView]; +} +-(void) displayRegisteringFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { + if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { + [myFirstLoginViewController displayRegisteringFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; + } + [self updateStatusSubView]; +} +-(void) displayRegistrationFailedFromUI:(UIViewController*) viewCtrl forUser:(NSString*) user withDisplayName:(NSString*) displayName onDomain:(NSString*)domain forReason:(NSString*) reason { + if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { + [myFirstLoginViewController displayRegistrationFailedFromUI:viewCtrl forUser:user withDisplayName:displayName onDomain:domain forReason:reason]; + } + [self updateStatusSubView]; +} + +-(void) displayNotRegisteredFromUI:(UIViewController*) viewCtrl { + if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { + [myFirstLoginViewController displayNotRegisteredFromUI:viewCtrl]; + } + [self updateStatusSubView]; +} + @end diff --git a/Classes/PhoneViewController.xib b/Classes/PhoneViewController.xib index ef1171aee..60f3013c1 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/PhoneViewController.xib @@ -12,11 +12,10 @@ YES - IBUITextField IBUIViewController IBUIButton IBUIView - IBUILabel + IBUITextField IBProxyObject @@ -51,10 +50,10 @@ 292 - {{254, 0}, {66, 65}} + {{254, 0}, {66, 81}} - + NO IBCocoaTouchFramework 0 @@ -90,10 +89,11 @@ 292 - {{5, 0}, {255, 66}} + {{0, 1}, {255, 80}} + NO NO IBCocoaTouchFramework @@ -103,9 +103,6 @@ 3 MAA - - 2 - YES 15 @@ -128,216 +125,31 @@ - {320, 65} + {320, 81} - - 1 - MC45MDE5NjA3OSAwLjkwMTk2MDc5IDAuOTAxOTYwNzkAA - + IBCocoaTouchFramework - + 292 - {{9, 390}, {304, 21}} + {255, 20} - - NO - YES - NO + + _NS:196 + + 3 + MCAwAA + IBCocoaTouchFramework - status - - 1 - MCAwIDAAA - - - 1 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{213, 64}, {107, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - clavier-01-106px.png - - - - - - - 292 - {{0, 130}, {107, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{107, 130}, {106, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - clavier-01-108px.png - - - - - - - 292 - {{213, 130}, {107, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{0, 196}, {107, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{213, 196}, {107, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{107, 64}, {106, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 2 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - 292 - {{0, 64}, {107, 66}} + {{0, 81}, {107, 66}} @@ -357,83 +169,158 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + NSImage + clavier-01-106px.png + - + 292 - {{0, 262}, {107, 66}} + {{107, 81}, {106, 66}} - + NO NO IBCocoaTouchFramework 0 0 - * + 2 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + NSImage + clavier-01-108px.png + - + 292 - {{107, 262}, {106, 66}} + {{213, 81}, {107, 66}} - + NO NO IBCocoaTouchFramework 0 0 - 0+ + 3 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + - + 292 - {{213, 262}, {107, 66}} + {{0, 147}, {107, 66}} - + NO NO IBCocoaTouchFramework 0 0 - # + 4 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + + + + + + 292 + {{107, 147}, {106, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 5 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{213, 147}, {107, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 6 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{0, 213}, {107, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 7 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + 292 - {{107, 196}, {106, 66}} + {{107, 213}, {106, 66}} @@ -449,14 +336,106 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + + + + + + 292 + {{213, 213}, {107, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 9 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{0, 279}, {107, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + * + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{107, 279}, {106, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 0+ + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + 292 + {{213, 279}, {107, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + # + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + 292 - {{160, 328}, {160, 66}} + {{160, 345}, {160, 66}} @@ -490,7 +469,7 @@ 292 - {{0, 328}, {160, 66}} + {{0, 345}, {160, 66}} @@ -505,10 +484,15 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + NSImage + startcall-gray.png + NSImage startcall-green.png + @@ -516,10 +500,10 @@ 292 - {{0, 328}, {320, 66}} + {{0, 345}, {320, 66}} - + NO NO IBCocoaTouchFramework @@ -531,7 +515,9 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + @@ -541,10 +527,7 @@ - - 3 - MCAwAA - + 5 IBCocoaTouchFramework @@ -568,14 +551,6 @@ 12 - - - status - - - - 15 - view @@ -680,14 +655,6 @@ 54 - - - erase - - - - 151 - dialerView @@ -720,6 +687,22 @@ 164 + + + statusViewHolder + + + + 169 + + + + erase + + + + 151 + delegate @@ -765,23 +748,23 @@ YES - - - - - - - - - + + + + + + + + + @@ -811,11 +794,6 @@ Call-short - - 7 - - - 35 @@ -861,18 +839,12 @@ YES - + Dialer - - 150 - - - Erase - 4 @@ -891,6 +863,18 @@ Call-large + + 165 + + + status_view + + + 150 + + + Erase + @@ -909,6 +893,8 @@ 160.IBPluginDependency 162.CustomClassName 162.IBPluginDependency + 162.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 165.IBPluginDependency 29.CustomClassName 29.IBPluginDependency 30.CustomClassName @@ -936,7 +922,7 @@ 41.IBPluginDependency 5.CustomClassName 5.IBPluginDependency - 7.IBPluginDependency + 5.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 80.IBPluginDependency @@ -950,7 +936,7 @@ YES - 410 + 412 1 @@ -965,6 +951,8 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton @@ -992,7 +980,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1008,7 +996,7 @@ - 164 + 169 @@ -1056,17 +1044,6 @@ PhoneViewController UIViewController - - doKeyPad: - id - - - doKeyPad: - - doKeyPad: - id - - YES @@ -1089,6 +1066,7 @@ six star status + statusViewHolder switchCamera three two @@ -1114,6 +1092,7 @@ UIButton UIButton UILabel + UIView UIButton UIButton UIButton @@ -1142,6 +1121,7 @@ six star status + statusViewHolder switchCamera three two @@ -1221,6 +1201,10 @@ status UILabel + + statusViewHolder + UIView + switchCamera UIButton @@ -1290,6 +1274,7 @@ clavier-01-108px.png clavier-01-160px.png effacer.png + startcall-gray.png startcall-green.png @@ -1299,6 +1284,7 @@ {160, 60} {66, 65} {60, 52} + {60, 52} 933 diff --git a/Classes/StatusSubViewController.h b/Classes/StatusSubViewController.h new file mode 100644 index 000000000..72e4997eb --- /dev/null +++ b/Classes/StatusSubViewController.h @@ -0,0 +1,34 @@ +/* StatusSubViewController.h + * + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +#import +#include "linphonecore.h" + +@interface StatusSubViewController : UIViewController { + UIImageView* image; + UIActivityIndicatorView* spinner; + UILabel* label; +} + +@property (nonatomic, retain) IBOutlet UIImageView* image; +@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* spinner; +@property (nonatomic, retain) IBOutlet UILabel* label; + +-(BOOL) updateWithRegistrationState:(LinphoneRegistrationState)state message:(NSString*) message; + +@end diff --git a/Classes/StatusSubViewController.m b/Classes/StatusSubViewController.m new file mode 100644 index 000000000..e0d1cadcb --- /dev/null +++ b/Classes/StatusSubViewController.m @@ -0,0 +1,99 @@ +/* StatusSubViewController.h + * + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "StatusSubViewController.h" + +@implementation StatusSubViewController + +@synthesize image; +@synthesize spinner; +@synthesize label; + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + // Custom initialization + } + return self; +} + +- (void)didReceiveMemoryWarning +{ + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + +#pragma mark - View lifecycle + +- (void)viewDidLoad +{ + [super viewDidLoad]; +} + +- (void)viewDidUnload +{ + [super viewDidUnload]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return (interfaceOrientation == UIInterfaceOrientationPortrait); +} + +-(BOOL) updateWithRegistrationState:(LinphoneRegistrationState)state message:(NSString*) message { + + switch(state) { + case LinphoneRegistrationCleared: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_orange.png"]]; + [spinner stopAnimating]; + [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)]; + return YES; + case LinphoneRegistrationFailed: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_red.png"]]; + [spinner stopAnimating]; + [label setText:message]; + return NO; + case LinphoneRegistrationNone: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_gray.png"]]; + [spinner stopAnimating]; + [label setText:message]; + return NO; + case LinphoneRegistrationProgress: + image.hidden = YES; + spinner.hidden = NO; + [spinner startAnimating]; + [label setText:message]; + return NO; + case LinphoneRegistrationOk: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_green.png"]]; + [spinner stopAnimating]; + [label setText:message]; + return YES; + } + return NO; +} + +@end diff --git a/Classes/StatusSubViewController.xib b/Classes/StatusSubViewController.xib new file mode 100644 index 000000000..12478957f --- /dev/null +++ b/Classes/StatusSubViewController.xib @@ -0,0 +1,253 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + IBUIImageView + IBUIActivityIndicatorView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 292 + {{0, -1}, {25, 23}} + + + + _NS:567 + NO + IBCocoaTouchFramework + + NSImage + status_orange.png + + + + + -2147483356 + {{0, 1}, {20, 20}} + + + + _NS:1030 + NO + IBCocoaTouchFramework + 2 + + + + 292 + {{28, 0}, {280, 21}} + + + + _NS:328 + NO + YES + 7 + NO + IBCocoaTouchFramework + No SIP account defined + + 3 + MC42NjY2NjY2NjY3AA + + + 1 + 10 + + 1 + 17 + + + Helvetica + 17 + 16 + + + + {255, 23} + + + + _NS:196 + + 3 + MCAwAA + + IBCocoaTouchFramework + + + + + + + image + + + + 8 + + + + label + + + + 9 + + + + spinner + + + + 10 + + + + view + + + + 11 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + status_view + + + 7 + + + status_spin + + + 6 + + + status_label + + + 5 + + + status_image + + + + + StatusSubViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 11 + + + + + StatusSubViewController + UIViewController + + UIImageView + UILabel + UIActivityIndicatorView + + + + image + UIImageView + + + label + UILabel + + + spinner + UIActivityIndicatorView + + + + IBProjectSource + ./Classes/StatusSubViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + + status_orange.png + {25, 23} + + 933 + + diff --git a/Resources/startcall-gray.png b/Resources/startcall-gray.png new file mode 100644 index 0000000000000000000000000000000000000000..360e7baa0f60715e52647ceeefa55b8f8a059816 GIT binary patch literal 2111 zcmV-F2*CG=P)00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy0%A)?L;(MXkIcUS000SaNLh0L01ejw01ejxLMWSf000L#Nkl+R_ukKlI^UxxY!4V8E-jq6Gy>qz%Bwv63J5-^F^lPd|Wx=MHmg}4a- z&?Mc=+pbu|zT4PxEQDxA_?q1w7x=BD)Nx4@#gXnC2mHaECZ>vMK_Z`5F8EK$$Cdxd zhXRK(nsZd6b#+Sc0anPy*}70eZ`k|nW2kG!i1&$e#R+1f2scD%-)<=ILxBug|CZb3 zJ<2D6-N7_chzBq*s-uskS#d^O=}KCZuu2#!KmY{=)qe#DP!Wczf5KWho#m_fp_p+* z4s=YgcM+;^J+&dN-!PBl9Ed5Mp?Bf{dq$C$kPASM&p-+$I%GpyF2oYHqs-qY*po-L zA_agMUu4uohZ#uAiC98ki`GSeJym42+1x}45Khtq^r&!J_?eti{YX>YEK?n(j#kI2 zS*oD9z+!QaB{%j8t|MKW@EGSO1PJGZ-Spq2VRCD%Uf)d(Pf>Hj^VCr>18!=i(G!51 zhTf;KhBt_ZMK616Nf2?#hB3hh@i4i@(f9#dT-p%>?46Bz&W&S2vG{&b%+Yg}ssv#X z%Jn7EE{EvMRlhiZeb=%hNYix;HHl@#-4_Qnq>f%FAZu}Ll;N;&$IA97uy;HDs%w5l zp0vAvP(#+Hx}L*|sMTaIrbz)C*gFFTssodyZ!Zn2hq3@$ks6`gCOu>nDFCoay{01X z@?ZgJC!K;b5y}GZgIvVE$?S8zRx3Rgf7fwDorO;^%%@o=gFfZCfe9m^lJ4Y| z$SsvMkZD}Z=`NhbPyk>ixO4x&GsuW|Y!8uoM|uX);% z_}<yvW6t$Wv1}!K$b9hI zgNrS7{pfqycdHYE{OITow?>ocoPL*f5Lm|aRf!%MG=3>Ji9ENH9f*#y8UI9M=s@`? zvt2gXifD%zvZSB1qBoJXm`C3pHFNb@0#v62PGGP$p6=S^wljz?gKgLDQ4Z3D|3gLx z(lOTYn%E%CFpAy+Sl5_WrAGh?6n9~r9x;R!uiNHt$(fYtSPbWTL<(*}4rUh9eW&($S6|NK-;%ahJWF?>1JCA!hX;CK*dFH!WUCB)i1v zX4DW5x*r{J;9~w+yVTLH74TRIC$y8ClH*2&S`C*5FqhVIIe-bm7w2m(T;D&eXJXf9 z*u-Hw*lY_Mm2Ub-2-La@xu}7VvQw`4WnYdOCs7;Va?G*yeS+OvdWdi1@CG*Ii!X@j z8eBwB%VnLG|E28o@0-=r2XX|Phb734P&bkVk;e$f#MBqp40u7z(;}A5j{-TQ{2+hh z|5`aJx2f%_-`x$!16)aL2pNu%7>%hI8P!=2S<|_$vbR)(U7B;n4dQs0nY~kZ2N3t= z;zK+keeY!GC8fw{=WIOgpDvR~s2_18MpV4Ve5HG1nfpu|x7?yERr2HvBXgyaO0~50000bbVXQnWMOn=I%9HWVRU5x zGB7bQEio`HGB8vzFgi6gIy5;eFfuwYFm0ffTmS$7C3HntbYx+4WjbwdWNBu305UK! pF)cALEiy1vF)%tcH99moD=;!TFfbhbE#LqE002ovPDHLkV1m&0&FKID literal 0 HcmV?d00001 diff --git a/Resources/status_gray.png b/Resources/status_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f871f3eb278503e10417f466b765eb306a1c52 GIT binary patch literal 948 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoZ!2%>hUg^vLQY`6?zK#qG8~eHcB(ehejKx9j zP7LeL$-D$|6p}rHd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_HU8X#UUXIG#NP=YDR z+ueoXe|!I#{XiaPfk$L9(Aw)D%;=;sy8@_Ut*47)h{frtlf6Ac0ws>uKRG`&swA`a|spd8=2<1^;G$UKmj-eDtum#aHo5 zZ#<)(&0U(w*_oFAA^Sn(gUp3%mv<>`o80j*(aHvAE7S5ufiM6J<$&Bo})T^Y0R zKz{H2wN-`@D*lU_DwgWqGSMLJDul!T=>`b4r|Meg$BLnMQab(IS8_5opzbn!soE9 zsh@>m(qjF|$F0JwUvKFMz2;_a;Qdg$@R!Piq%Z3y8K#==_)UL4U3 zJ2b)1y5UZ>O`XW*nGy9`oZ^m!?&8u6fKJS9W6WXOLvkP z+=b@;EYjvKbPeV{x!NoArg*Yh|A$L&?yE6KovLj&t+~Es(aLA*?RGw&pe5_|J-~e@ zubWxA=d)Ui)ixqGS=LR@XnS_a>Auw2&oAdD-(Hj6;q|GZe9gCdg z|NlvdiszCG5u9NA>7+w?X~mY~{)hj(TD6hs?POqTRxNRjC`m~yNwrEYN(E93Mh1pP zx(0^2h87`)##Sb#Rt6^828LD!2EIE?gi$o)=BH$)Rl+qGScVuHSs7YdnOZ_LbUoCW Q0Mx+X>FVdQ&MBb@00)?icK`qY literal 0 HcmV?d00001 diff --git a/Resources/status_green.png b/Resources/status_green.png new file mode 100644 index 0000000000000000000000000000000000000000..1a39a42427823dbb36531709ed9ba198ffddaed8 GIT binary patch literal 1242 zcmV<01SR{4P)P000*V1^@s6{^R5m00001b5ch_0Itp) z=>Px#32;bRa{vGh*8l(w*8xH(n|J^K00(qQO+^RV1QibqBj~v8#{d8XY)M2xR7l6Q zm0N67RTPH5z0XW%&RhxtH56hLm=c3+fzm58nxa7^YP_YGATer8z<41|cu@jAn3!Oq zi4aAM2|l1iKut{K0U{Dhi__^Kw9^VsTPQSu6bg1O=X5S-`!G|O0)^D*dO9a(o&Vcw z?X~|6|5G$}cxQ|~+x|=8hBkD~?rc(swJ9>YfUS3gyn4d#t#H-^<~qvf`J9y{rA7Bl zi<+I6`;G1k(PY=}gCm_szo-tU13|}pq+FxmWd+lKlqR*OC$2;xmUigRmDp!BPotzx z7ap5idU0tkl2!~On;>DuFjSl?_GH2z()$!t0OGm?`&z2vL$`!H6m-tXc8Fa-om+Zv zNe{a8plfbi(!<}GVGJvdkxh`a5+t*6H&A(V55!l6Z`UA!4!tgG@gs1zT@>Mxo@2Vr zeZY<9kk>ZlggsS!Ih{GB8zg2VRBTbgiY+y)__M&w8wlBKR{S;&2~ZpKPPfZU1ehtH zt5}=*=Dw=)zusx1n|7m}o8x*+q23ozbzM~aVQJQiwkmVr8pI#c_X5uY-(7VXtGXW` zHL0;u2!GhM2Bo$D_8dv{xb4Z>{R>G*e^{^20aW+D0_2veTC0hN#8dh< z0Exwm`Nh092JnaV`uZcz`zFh3sWpFAO1)9A7pogWuEi2qlG`lf06?JK^%NFIG@I!2 zx9eZ~596H-sIAuA0b>6cN1|Sl2ugu-!Fomjlu+yQ2@=679Im~Stw>30b3rwY62%Mw z#RWODZ)o?_+j`V5*d9FUDH&JI67wK1kUyC7Byd52dr8M#Q}VLkj$ak)CIa|F&TVOr z9<#F9i~f)v^SA3O3qBtkJBw051h6@jxf~#qO>RbTykI<=8@usLFjg-B&iso9As#KT zmaz_;l~S-L-@6S>yPLFNJtIQn(*XiO$NZdDLDh=$ z04t(61Y$9OQ2ZoqG2?p#rzP5=;st}709vZzL#8kql;R^`6qv3AZ==LPyUbkjhjgW+ zJW0-R$KsL{)((K!6@4wJVn7KiyImeyhN%?m-I^DtbZ`9lRC6;xxSC{Jt+C!p+h-xf z>p&~q@}Lf*)R$6-%EL8ge?!>eQ-Y28mhEh*PxV~0=Vy-l-tjrgKk(@l_?+cG-0P}Z zQ|2ujx^a@s;-WHX+2#wSG@*$BLnS-I)uaIeA!nl!Vke5(K(Cdy*Bx0pGAs&3HvPGJ zolh_S(5F`v&2yFyU(HH= zw%$M2QTb_^UjA^O*-f7rq1Wg-6E(Vy_nSTaqn0^>w9+V1BA`^|+;?vNcMJH8QRCg# z0I_jaf2+6eIR>q> z3wzC;%D+;Bb3l1P*%9(0$~q$~t)p}x5!thn>_i&>0H*oIo`bXH<^TWy07*qoM6N<$ Eg5;A+jsO4v literal 0 HcmV?d00001 diff --git a/Resources/status_offline.png b/Resources/status_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..243c5c069f0d359cb1d984bd6b2a03b53904beaf GIT binary patch literal 1179 zcmV;M1Z4Y(P)Px#32;bRa{vGh*8l(w*8xH(n|J^K00(qQO+^RV1P>G!9N0hb3IG5EElET{R7l6Q zm0fHURTRhn=YDKkTDIM;R%(e&#h^qX0#&2D6%DZ(9!%UA*syGO>6TZG_@FTxZ z69dyOrEOXhs)(jZQ66ecYJ5-=8YK|*!6uYag_+r{rR>h^Jw9|xKWtHXpPTzT z_ssbK{wM40?F}{ zs2Z&`l$Ia@{DKe9_uzXzdKUn`>T z$^$%^gNM8+*5*BLbFo-_qUiap0GgLm81&6@?dD~>GTj3J_5qlN5N|YWsIyvITl4?) z^DXPdLqhQpFk%2iNxs3v(e^~*)DlqV@#7IsDT?Ehs7LOk~bnu7UO>N7v?h-#|z9he+--Mx1SLKX`sl>)i(7w@9LawzjrE0HCw8dk+yBtE;PeB9TY|0D{5F z{%mgMZGh_mY^bkq+$@L?1^{71#gcR+^&tcA3Smw!h~^70y;n4Nr{qi%2@Hc^xzp2a z^V=ekNP)ov^J^)Kn*hJFl&fX|Y0nlXu_2_{E2Yyd0Z3h5-ZwNfwC>JF zMWzwJOLKwZW9f9-2mlBu`4$MjYbm!^R8@R>@#5(E+l34c4oW6r0Vo4#QcC&&^Svn+ zi(Qji?bTZ60$T6!idE+(CdPN&MrWvZb2FcVu?IjAjAT3>cb7C(02m$~-X029pALm; z8bh_!Mk#&Dw(U&Tp82Y|x!GF{aP(+jol;&3L`MKr0mu`mEt!me^tbLkZ)0O)m6gGY zH)}(|mkXY+9NUHCWOI(~o^$N%h1q=GVTLPU>I`r0fe)}=2#+;7$zcKbspWyMn*;+yym*wvbMX0 t2|)nsVJHh>E(>4`!1swnV)|BR`~|8|uDc}G)KLHc002ovPDHLkV1ioW3y1&! literal 0 HcmV?d00001 diff --git a/Resources/status_orange.png b/Resources/status_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e66d34d04c7152d884a82fa5ad5e8cc1be6f57 GIT binary patch literal 1252 zcmVP000*V1^@s6{^R5m00001b5ch_0Itp) z=>Px#32;bRa{vGh*8l(w*8xH(n|J^K00(qQO+^RV1P>Gz4@H`Ql>h()c1c7*R7l6Q zm2GTORT#&A=d``uTDtKzR%jP9#@lwsJBk`VAjYU6ktmWFqXZHY_<%-YA|h^H=G34@ zB1`Zk!4cnx2$*PsMiN7SL=r(!*0pnEW~19$wh654rMK-leppAk0ZxpbFZZ6e=Xam~ z|GDSD|J0hS8B<5zo&ROv3tNKui3xhG7GhIcu^*@#7ZTa~u+KZa@*ZbVd0C#nyvR8* zFnK7}*qe$s#geh6UwV5_{=97CnN-*c%u$++eVX+kCIhySO0T|YCK^PjI{2uw(7(kn z3YH6}*XeM35r!9K_k%rvw)??O;2SXd8>@rom0~_1a)KP0{YI?&hLFh1x0N=^%zgpO zrOS&nCLrBjq~S#x9x{WMQT6~T*^jdOQOSOBLm*tBX`>;BIXXJOcQ~ATlcLJT;055Z)G;qFkaO zyWyPhOxj%W;<@AF8Liji2%EtNv=Xm^UXn8t78&(W#cN${*C3(l;6Y#wa0prWglUCr zfUp&qlTq9S!Y^PzNEOC*g(_Ze>l*80V^v@yLhJ@yBOs)GhiP?R6^&NlPOZd`KnPj5 z#I!B$*SBY3}{j~7aIMF)pfDcJz}qmd+~mbXhZOM#4A<{cfT z>vdxQ#|LA@Gt8Q3S%r-HlyX!6JAf|0iDq-3j}zy&&MX8lYcA9a&G#doE2-8?(9?m= z*;Y$mc4G3_f?W3DnG}GqQ1ffs!e&j>Do9X<=DX~gr9*D}tB_?H0NSB<<`}j@f|v>v z0GO`2Ou?RXj9f_jgapNfQIVe8b_Y*pix||-TsQ_gR5$H z{o6YwWCdrTI0Z}rJ~3;e>m)#BP4tj7CTtUiS73PFx%k`R!-=luqFV)=vw|y79LoY) zkUYnzI{;|=V$-uOfB9QR@jS!um;b2-E`2c69sb zVdLrCd}O!Vaq0BJR99p{I?+{%);@%Afxaj-?Mmy@W~8G*d`aeJG5!MDxX9kPx#32;bRa{vGh*8l(w*8xH(n|J^K00(qQO+^RV1P>G$2wY|f`2YX}L`g(JR7l6Q zm2GU3RTRg6_de~qJ#Dus?~b%(5+DIFyaZvvb^D-+5C|fuiI}KB&@aZoV$_gGG$iVL zOEg47(BQ%cW5gE(C5W_hiU??@PCK2lZe=hA0k)?d^yN8zSYf4XL!zEf_uPBW`Q86L zC-=htWCy^pkIJ%3zT>|KR7})3*MO{caB%@}{vUyUSiaitnK8A>oIP#4IdjScCED5l z({HD&A6wfmv_uch{P3N>1ayeNoeEi}UxsrQ=Pqg_aAg+tUcPq~s1g4?0&l4j*J$l^qrGm7 zQa6UjjW&zP_9e*nCa|ppww1*0OH3Hzti4XM9}No%;d@fx1wa{IGi7)@`y5^~?C`pq zRJkjbx^ULYSc$SsvTtJcd~#m4FIgk0^j(0f0CaQ#@e5bz8&nclCP?lSvfVYga^w8A zQ2g4(50qD0oVh;ITy~C@)K#~qDD0+^r1!qj}|DHmL+>wqjoFQSOvBMsitE+uxGF|x?Vu* z5ET``1mNI&+IsVoEu^ExK-Yl81=$k9w{`$Bak57C16~EogS5Y&S9DQ09|HPwQ&YYs zaJyFMTzg9EP3MmeJ$hh}eHp+gH8&ou zT{&k^iT`;))&k$8Fc!_FD+w^2mXwWJF7TPaZ3=m}P??Q-Iyd|!NM}>t_4s!j3{*+; z-H)95qJCf58w!M zoFV+rDCCXY)Rr1Lc3lCQOIOl8s{9V+HFxP!w@Z14<{OfT5tFo7m%5z25m2-|@l9l37z Date: Wed, 18 Jan 2012 15:50:30 +0100 Subject: [PATCH 42/60] Useless resources cleanup --- Classes/CallHistoryTableViewController.m | 10 ++-- Classes/StatusSubViewController.xib | 5 +- Resources/Speaker-32-off.png | Bin 1798 -> 0 bytes Resources/Speaker-32-on.png | Bin 1782 -> 0 bytes Resources/addcall-green.png | Bin 6261 -> 0 bytes Resources/conf_merge.png | Bin 3135 -> 0 bytes Resources/contact_orange.png | Bin 4771 -> 0 bytes Resources/contact_vide.png | Bin 3524 -> 0 bytes Resources/mic_active.png | Bin 6770 -> 0 bytes Resources/mic_muted.png | Bin 10007 -> 0 bytes Resources/numpad.png | Bin 5314 -> 0 bytes Resources/pausecall.png | Bin 1622 -> 0 bytes Resources/resumecall.png | Bin 3110 -> 0 bytes Resources/status_offline.png | Bin 1179 -> 0 bytes linphone.xcodeproj/project.pbxproj | 58 ----------------------- 15 files changed, 5 insertions(+), 68 deletions(-) delete mode 100644 Resources/Speaker-32-off.png delete mode 100644 Resources/Speaker-32-on.png delete mode 100644 Resources/addcall-green.png delete mode 100644 Resources/conf_merge.png delete mode 100644 Resources/contact_orange.png delete mode 100755 Resources/contact_vide.png delete mode 100644 Resources/mic_active.png delete mode 100644 Resources/mic_muted.png delete mode 100644 Resources/numpad.png delete mode 100644 Resources/pausecall.png delete mode 100644 Resources/resumecall.png delete mode 100644 Resources/status_offline.png diff --git a/Classes/CallHistoryTableViewController.m b/Classes/CallHistoryTableViewController.m index eb1b56446..60d438d9b 100644 --- a/Classes/CallHistoryTableViewController.m +++ b/Classes/CallHistoryTableViewController.m @@ -145,20 +145,16 @@ const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; const char* displayName = linphone_address_get_display_name(partyToDisplay); - // explicit release are needed to avoid mem leaks : NSString are created with retainCount == 1. - // Assigning them to a textLabel.text property (which has 'retain' flag) bumps it to 2. So we set them back to 1. + if (displayName) { - NSString* str1 = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]; + NSString* str1 = [NSString stringWithCString:displayName encoding:[NSString defaultCStringEncoding]]; [cell.textLabel setText:str1]; NSString* str2 = [NSString stringWithFormat:@"%s"/* [%s]"*/,username/*,callLogs->start_date*/]; [cell.detailTextLabel setText:str2]; - [str1 release]; - assert(str1.retainCount == 1); } else { - NSString* str1 = [[NSString alloc] initWithCString:username encoding:[NSString defaultCStringEncoding]]; + NSString* str1 = [NSString stringWithCString:username encoding:[NSString defaultCStringEncoding]]; [cell.textLabel setText:str1]; [cell.detailTextLabel setText:nil]; - [str1 release]; } return cell; diff --git a/Classes/StatusSubViewController.xib b/Classes/StatusSubViewController.xib index 12478957f..d93f8f7f6 100644 --- a/Classes/StatusSubViewController.xib +++ b/Classes/StatusSubViewController.xib @@ -49,7 +49,7 @@ IBCocoaTouchFramework NSImage - status_orange.png + status_gray.png @@ -70,7 +70,6 @@ {{28, 0}, {280, 21}} - _NS:328 NO YES @@ -245,7 +244,7 @@ YES 3 - status_orange.png + status_gray.png {25, 23} 933 diff --git a/Resources/Speaker-32-off.png b/Resources/Speaker-32-off.png deleted file mode 100644 index 3a5b3fd73575527eecd542cbe844da391e6aeb55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1798 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 diff --git a/Resources/conf_merge.png b/Resources/conf_merge.png deleted file mode 100644 index 409609c06eab47c987136f6ed249071b4be49d9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3135 zcmZ`*dpHw}_g}3ynaJysm|Mvute9Jd<`y!Fxf_LzUS?>>bqWou$f~I&^R6tnjV7BW zK*R3G3i?g5KF@6P( zi5pfC3j(2Xh;UdK*(n@Hh(&QFgvu&i$B!{6M27u$u_h@|EG|37$tOAyPCX>MFtO8v z^h`IVsYT+#5Cgy7JOm$o?5}SDy-V@|kz6aUmdf5dzGuea*Cxz0Ua7zNyi4i?aCEP#KXR7N$+xUJ|yA5i7;bTTqaMs7G38HKc?}`MVq` z*R*}hmOHNd͙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 P8UW|co_DOV56SvJ45Rv) diff --git a/Resources/contact_orange.png b/Resources/contact_orange.png deleted file mode 100644 index cbdf86df8f5dae072cb35dcc42274832b9d1d2d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4771 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 diff --git a/Resources/contact_vide.png b/Resources/contact_vide.png deleted file mode 100755 index e929b54bab63f5dfa8d50784add3257d9fd4fb0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3524 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 diff --git a/Resources/mic_muted.png b/Resources/mic_muted.png deleted file mode 100644 index 6110a04fc5304e9fb7f61b474bad85fe234972f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10007 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 F{{W0a!`uJ> diff --git a/Resources/numpad.png b/Resources/numpad.png deleted file mode 100644 index 966b483486404145b65ed9d20477938e7171d5e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5314 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 diff --git a/Resources/pausecall.png b/Resources/pausecall.png deleted file mode 100644 index ffac25a4725feaa852d873fc05e31ab91901a1bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1622 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 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 62637bae8..cc01131ef 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -7,8 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 1AE0A49814AC5C64002C99BD /* mic_active.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49214AC5C64002C99BD /* mic_active.png */; }; - 1AE0A49914AC5C64002C99BD /* mic_active.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49214AC5C64002C99BD /* mic_active.png */; }; 1AE0A49A14AC5C64002C99BD /* stat_sys_signal_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */; }; 1AE0A49B14AC5C64002C99BD /* stat_sys_signal_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */; }; 1AE0A49C14AC5C64002C99BD /* stat_sys_signal_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0A49414AC5C64002C99BD /* stat_sys_signal_1.png */; }; @@ -67,9 +65,6 @@ 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; 22226C12118197C0000CA27B /* startcall-green.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C11118197C0000CA27B /* startcall-green.png */; }; 22226C14118197EC000CA27B /* stopcall-red.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C13118197EC000CA27B /* stopcall-red.png */; }; - 22226C181181986A000CA27B /* contact-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C161181986A000CA27B /* contact-orange.png */; }; - 22226C191181986A000CA27B /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C171181986A000CA27B /* dialer-orange.png */; }; - 22226C1D11819B34000CA27B /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C1C11819B34000CA27B /* history-orange.png */; }; 22276E8313C73D3100210156 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8013C73D3100210156 /* libavcodec.a */; }; 22276E8413C73D3100210156 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8113C73D3100210156 /* libavutil.a */; }; 22276E8513C73D3100210156 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8213C73D3100210156 /* libswscale.a */; }; @@ -82,8 +77,6 @@ 223963171393CFAF001DE689 /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 223963161393CFAF001DE689 /* FastAddressBook.m */; }; 2242D91610D66BF300E9963F /* in_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91410D66BF300E9963F /* in_call.png */; }; 2242D91710D66BF300E9963F /* out_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91510D66BF300E9963F /* out_call.png */; }; - 2242D91A10D66C2100E9963F /* mic_active.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91810D66C2100E9963F /* mic_active.png */; }; - 2242D91B10D66C2100E9963F /* mic_muted.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91910D66C2100E9963F /* mic_muted.png */; }; 2242D9C910D691F900E9963F /* GenericTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2242D9C810D691F900E9963F /* GenericTabViewController.m */; }; 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; 2245671D107699F700F10948 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2245671C107699F700F10948 /* Settings.bundle */; }; @@ -133,17 +126,10 @@ 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */; }; 22D8F127147548E2008C97DB /* in_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91410D66BF300E9963F /* in_call.png */; }; 22D8F128147548E2008C97DB /* out_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91510D66BF300E9963F /* out_call.png */; }; - 22D8F129147548E2008C97DB /* mic_active.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91810D66C2100E9963F /* mic_active.png */; }; - 22D8F12A147548E2008C97DB /* mic_muted.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91910D66C2100E9963F /* mic_muted.png */; }; - 22D8F12B147548E2008C97DB /* Speaker-32-on.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A783111C1BA800B04932 /* Speaker-32-on.png */; }; - 22D8F12C147548E2008C97DB /* Speaker-32-off.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A784111C1BA800B04932 /* Speaker-32-off.png */; }; 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; 22D8F12E147548E2008C97DB /* icone-linphone-57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* icone-linphone-57.png */; }; 22D8F12F147548E2008C97DB /* startcall-green.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C11118197C0000CA27B /* startcall-green.png */; }; 22D8F130147548E2008C97DB /* stopcall-red.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C13118197EC000CA27B /* stopcall-red.png */; }; - 22D8F131147548E2008C97DB /* contact-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C161181986A000CA27B /* contact-orange.png */; }; - 22D8F132147548E2008C97DB /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C171181986A000CA27B /* dialer-orange.png */; }; - 22D8F133147548E2008C97DB /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C1C11819B34000CA27B /* history-orange.png */; }; 22D8F134147548E2008C97DB /* clavier-01-106px.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2E811ABB51000628906 /* clavier-01-106px.png */; }; 22D8F135147548E2008C97DB /* clavier-01-108px.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2E911ABB51000628906 /* clavier-01-108px.png */; }; 22D8F136147548E2008C97DB /* clavier-01-160px.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2ED11ABB65D00628906 /* clavier-01-160px.png */; }; @@ -216,8 +202,6 @@ 22D8F180147548E2008C97DB /* libmssilk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AF147259670037138E /* libmssilk.a */; }; 22E028B713B4CCBD0068A713 /* VideoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E028B513B4CCBD0068A713 /* VideoViewController.m */; }; 22E028B813B4CCBD0068A713 /* VideoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E028B613B4CCBD0068A713 /* VideoViewController.xib */; }; - 22E0A785111C1BA800B04932 /* Speaker-32-on.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A783111C1BA800B04932 /* Speaker-32-on.png */; }; - 22E0A786111C1BA800B04932 /* Speaker-32-off.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A784111C1BA800B04932 /* Speaker-32-off.png */; }; 22E0A822111C44E100B04932 /* MoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* MoreViewController.m */; }; 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; 22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; }; @@ -242,8 +226,6 @@ 3418844E14C6D1CE00EA48C7 /* startcall-gray.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */; }; 3418845314C6F66F00EA48C7 /* status_green.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418844F14C6F66E00EA48C7 /* status_green.png */; }; 3418845414C6F66F00EA48C7 /* status_green.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418844F14C6F66E00EA48C7 /* status_green.png */; }; - 3418845514C6F66F00EA48C7 /* status_offline.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418845014C6F66F00EA48C7 /* status_offline.png */; }; - 3418845614C6F66F00EA48C7 /* status_offline.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418845014C6F66F00EA48C7 /* status_offline.png */; }; 3418845714C6F66F00EA48C7 /* status_orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418845114C6F66F00EA48C7 /* status_orange.png */; }; 3418845814C6F66F00EA48C7 /* status_orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418845114C6F66F00EA48C7 /* status_orange.png */; }; 3418845914C6F66F00EA48C7 /* status_red.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418845214C6F66F00EA48C7 /* status_red.png */; }; @@ -274,7 +256,6 @@ 34CA8536148F669900503C01 /* VideoViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */; }; 34CA8539148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */; }; 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */; }; - 34F2F678147D2E1C00A2D5E3 /* contact_vide.png in Resources */ = {isa = PBXBuildFile; fileRef = 34F2F677147D2E1C00A2D5E3 /* contact_vide.png */; }; 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; @@ -305,7 +286,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1AE0A49214AC5C64002C99BD /* mic_active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = mic_active.png; path = Resources/mic_active.png; sourceTree = ""; }; 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stat_sys_signal_0.png; path = Resources/stat_sys_signal_0.png; sourceTree = ""; }; 1AE0A49414AC5C64002C99BD /* stat_sys_signal_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stat_sys_signal_1.png; path = Resources/stat_sys_signal_1.png; sourceTree = ""; }; 1AE0A49514AC5C64002C99BD /* stat_sys_signal_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stat_sys_signal_2.png; path = Resources/stat_sys_signal_2.png; sourceTree = ""; }; @@ -464,9 +444,6 @@ 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FirstLoginViewController.xib; sourceTree = ""; }; 22226C11118197C0000CA27B /* startcall-green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "startcall-green.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/startcall-green.png"; sourceTree = ""; }; 22226C13118197EC000CA27B /* stopcall-red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "stopcall-red.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/stopcall-red.png"; sourceTree = ""; }; - 22226C161181986A000CA27B /* contact-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contact-orange.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/contact-orange.png"; sourceTree = ""; }; - 22226C171181986A000CA27B /* dialer-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-orange.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/dialer-orange.png"; sourceTree = ""; }; - 22226C1C11819B34000CA27B /* history-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-orange.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/history-orange.png"; sourceTree = ""; }; 22276E8013C73D3100210156 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = ""; }; 22276E8113C73D3100210156 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = ""; }; 22276E8213C73D3100210156 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = ""; }; @@ -482,8 +459,6 @@ 223963161393CFAF001DE689 /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FastAddressBook.m; sourceTree = ""; }; 2242D91410D66BF300E9963F /* in_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = in_call.png; path = Resources/in_call.png; sourceTree = ""; }; 2242D91510D66BF300E9963F /* out_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = out_call.png; path = Resources/out_call.png; sourceTree = ""; }; - 2242D91810D66C2100E9963F /* mic_active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = mic_active.png; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/mic_active.png"; sourceTree = ""; }; - 2242D91910D66C2100E9963F /* mic_muted.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = mic_muted.png; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/mic_muted.png"; sourceTree = ""; }; 2242D9C710D691F900E9963F /* GenericTabViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenericTabViewController.h; sourceTree = ""; }; 2242D9C810D691F900E9963F /* GenericTabViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GenericTabViewController.m; sourceTree = ""; }; 2242E312125235120061DDCE /* oldphone-mono-30s.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "oldphone-mono-30s.caf"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono-30s.caf"; sourceTree = ""; }; @@ -611,8 +586,6 @@ 22E028B413B4CCBD0068A713 /* VideoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoViewController.h; sourceTree = ""; }; 22E028B513B4CCBD0068A713 /* VideoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoViewController.m; sourceTree = ""; }; 22E028B613B4CCBD0068A713 /* VideoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VideoViewController.xib; sourceTree = ""; }; - 22E0A783111C1BA800B04932 /* Speaker-32-on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Speaker-32-on.png"; path = "Resources/Speaker-32-on.png"; sourceTree = ""; }; - 22E0A784111C1BA800B04932 /* Speaker-32-off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Speaker-32-off.png"; path = "Resources/Speaker-32-off.png"; sourceTree = ""; }; 22E0A81B111C44E100B04932 /* MoreViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MoreViewController.xib; sourceTree = ""; }; 22E0A81C111C44E100B04932 /* MoreViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MoreViewController.m; sourceTree = ""; }; 22E0A81D111C44E100B04932 /* MoreViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MoreViewController.h; sourceTree = ""; }; @@ -638,7 +611,6 @@ 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StatusSubViewController.xib; sourceTree = ""; }; 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "startcall-gray.png"; path = "Resources/startcall-gray.png"; sourceTree = ""; }; 3418844F14C6F66E00EA48C7 /* status_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_green.png; path = Resources/status_green.png; sourceTree = ""; }; - 3418845014C6F66F00EA48C7 /* status_offline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_offline.png; path = Resources/status_offline.png; sourceTree = ""; }; 3418845114C6F66F00EA48C7 /* status_orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_orange.png; path = Resources/status_orange.png; sourceTree = ""; }; 3418845214C6F66F00EA48C7 /* status_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_red.png; path = Resources/status_red.png; sourceTree = ""; }; 3418845B14C7077400EA48C7 /* status_gray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_gray.png; path = Resources/status_gray.png; sourceTree = ""; }; @@ -658,7 +630,6 @@ 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "VideoViewController-ipad.xib"; sourceTree = ""; }; 34CA8537148F692A00503C01 /* MainScreenWithVideoPreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainScreenWithVideoPreview.h; sourceTree = ""; }; 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainScreenWithVideoPreview.m; sourceTree = ""; }; - 34F2F677147D2E1C00A2D5E3 /* contact_vide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_vide.png; path = Resources/contact_vide.png; sourceTree = ""; }; 70571E1913FABCB000CDD3C2 /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = Resources/rootca.pem; sourceTree = ""; }; 7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; @@ -1206,12 +1177,10 @@ children = ( 3418845B14C7077400EA48C7 /* status_gray.png */, 3418844F14C6F66E00EA48C7 /* status_green.png */, - 3418845014C6F66F00EA48C7 /* status_offline.png */, 3418845114C6F66F00EA48C7 /* status_orange.png */, 3418845214C6F66F00EA48C7 /* status_red.png */, 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */, 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */, - 1AE0A49214AC5C64002C99BD /* mic_active.png */, 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */, 1AE0A49414AC5C64002C99BD /* stat_sys_signal_1.png */, 1AE0A49514AC5C64002C99BD /* stat_sys_signal_2.png */, @@ -1219,7 +1188,6 @@ 1AE0A49714AC5C64002C99BD /* stat_sys_signal_4.png */, 344ABDE41483E596007420B6 /* unverified.png */, 34957F3E147D3FBF00DD7A09 /* secured.png */, - 34F2F677147D2E1C00A2D5E3 /* contact_vide.png */, 2211DBCA1476BE7300DEE054 /* ajouter.png */, 2211DBCB1476BE7300DEE054 /* clavier.png */, 2211DBCC1476BE7300DEE054 /* contact.png */, @@ -1239,17 +1207,10 @@ 225CB2ED11ABB65D00628906 /* clavier-01-160px.png */, 225CB2E811ABB51000628906 /* clavier-01-106px.png */, 225CB2E911ABB51000628906 /* clavier-01-108px.png */, - 22226C1C11819B34000CA27B /* history-orange.png */, - 22226C161181986A000CA27B /* contact-orange.png */, - 22226C171181986A000CA27B /* dialer-orange.png */, 22226C13118197EC000CA27B /* stopcall-red.png */, 22226C11118197C0000CA27B /* startcall-green.png */, 22058C70116E305000B08DDD /* icone-linphone-57.png */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, - 22E0A783111C1BA800B04932 /* Speaker-32-on.png */, - 22E0A784111C1BA800B04932 /* Speaker-32-off.png */, - 2242D91810D66C2100E9963F /* mic_active.png */, - 2242D91910D66C2100E9963F /* mic_muted.png */, 2242D91410D66BF300E9963F /* in_call.png */, 2242D91510D66BF300E9963F /* out_call.png */, 22F254801073D99800AC9B3F /* ringback.wav */, @@ -1351,17 +1312,10 @@ 227BCDC310D4004600FBFD76 /* CallHistoryTableViewController.xib in Resources */, 2242D91610D66BF300E9963F /* in_call.png in Resources */, 2242D91710D66BF300E9963F /* out_call.png in Resources */, - 2242D91A10D66C2100E9963F /* mic_active.png in Resources */, - 2242D91B10D66C2100E9963F /* mic_muted.png in Resources */, - 22E0A785111C1BA800B04932 /* Speaker-32-on.png in Resources */, - 22E0A786111C1BA800B04932 /* Speaker-32-off.png in Resources */, 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */, 22058C71116E305000B08DDD /* icone-linphone-57.png in Resources */, 22226C12118197C0000CA27B /* startcall-green.png in Resources */, 22226C14118197EC000CA27B /* stopcall-red.png in Resources */, - 22226C181181986A000CA27B /* contact-orange.png in Resources */, - 22226C191181986A000CA27B /* dialer-orange.png in Resources */, - 22226C1D11819B34000CA27B /* history-orange.png in Resources */, 225CB2EA11ABB51000628906 /* clavier-01-106px.png in Resources */, 225CB2EB11ABB51000628906 /* clavier-01-108px.png in Resources */, 225CB2EE11ABB65D00628906 /* clavier-01-160px.png in Resources */, @@ -1388,7 +1342,6 @@ 2211DBE51476BE7300DEE054 /* micro.png in Resources */, 2211DBE71476BE7300DEE054 /* pause_inactif.png in Resources */, 2211DBE91476BE7300DEE054 /* pause.png in Resources */, - 34F2F678147D2E1C00A2D5E3 /* contact_vide.png in Resources */, 34957F3F147D3FBF00DD7A09 /* secured.png in Resources */, 344ABD72147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */, 344ABD7A147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */, @@ -1398,7 +1351,6 @@ 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, - 1AE0A49814AC5C64002C99BD /* mic_active.png in Resources */, 1AE0A49A14AC5C64002C99BD /* stat_sys_signal_0.png in Resources */, 1AE0A49C14AC5C64002C99BD /* stat_sys_signal_1.png in Resources */, 1AE0A49E14AC5C64002C99BD /* stat_sys_signal_2.png in Resources */, @@ -1409,7 +1361,6 @@ 3418844A14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */, 3418844D14C6D1CE00EA48C7 /* startcall-gray.png in Resources */, 3418845314C6F66F00EA48C7 /* status_green.png in Resources */, - 3418845514C6F66F00EA48C7 /* status_offline.png in Resources */, 3418845714C6F66F00EA48C7 /* status_orange.png in Resources */, 3418845914C6F66F00EA48C7 /* status_red.png in Resources */, 3418845C14C7077400EA48C7 /* status_gray.png in Resources */, @@ -1429,17 +1380,10 @@ 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */, 22D8F127147548E2008C97DB /* in_call.png in Resources */, 22D8F128147548E2008C97DB /* out_call.png in Resources */, - 22D8F129147548E2008C97DB /* mic_active.png in Resources */, - 22D8F12A147548E2008C97DB /* mic_muted.png in Resources */, - 22D8F12B147548E2008C97DB /* Speaker-32-on.png in Resources */, - 22D8F12C147548E2008C97DB /* Speaker-32-off.png in Resources */, 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */, 22D8F12E147548E2008C97DB /* icone-linphone-57.png in Resources */, 22D8F12F147548E2008C97DB /* startcall-green.png in Resources */, 22D8F130147548E2008C97DB /* stopcall-red.png in Resources */, - 22D8F131147548E2008C97DB /* contact-orange.png in Resources */, - 22D8F132147548E2008C97DB /* dialer-orange.png in Resources */, - 22D8F133147548E2008C97DB /* history-orange.png in Resources */, 22D8F134147548E2008C97DB /* clavier-01-106px.png in Resources */, 22D8F135147548E2008C97DB /* clavier-01-108px.png in Resources */, 22D8F136147548E2008C97DB /* clavier-01-160px.png in Resources */, @@ -1475,7 +1419,6 @@ 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */, - 1AE0A49914AC5C64002C99BD /* mic_active.png in Resources */, 1AE0A49B14AC5C64002C99BD /* stat_sys_signal_0.png in Resources */, 1AE0A49D14AC5C64002C99BD /* stat_sys_signal_1.png in Resources */, 1AE0A49F14AC5C64002C99BD /* stat_sys_signal_2.png in Resources */, @@ -1486,7 +1429,6 @@ 3418844B14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */, 3418844E14C6D1CE00EA48C7 /* startcall-gray.png in Resources */, 3418845414C6F66F00EA48C7 /* status_green.png in Resources */, - 3418845614C6F66F00EA48C7 /* status_offline.png in Resources */, 3418845814C6F66F00EA48C7 /* status_orange.png in Resources */, 3418845A14C6F66F00EA48C7 /* status_red.png in Resources */, 3418845D14C7077400EA48C7 /* status_gray.png in Resources */, From 4d321f9055c2990e3239cc4650daf4bb3f0a382d Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 19 Jan 2012 14:32:25 +0100 Subject: [PATCH 43/60] Define MS2_MINIMAL_SIZE when building mediastreamer2 This avoids embedding a not used 20kB image array --- submodules/build/builder-iphone-os.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/build/builder-iphone-os.mk b/submodules/build/builder-iphone-os.mk index 07f5ab3a9..38748afd1 100644 --- a/submodules/build/builder-iphone-os.mk +++ b/submodules/build/builder-iphone-os.mk @@ -104,7 +104,7 @@ veryclean: veryclean-linphone .NOTPARALLEL build-linphone: init build-openssl build-srtp build-zrtpcpp build-osip2 build-eXosip2 build-speex build-libgsm build-ffmpeg build-libvpx detect_gpl_mode_switch $(LINPHONE_BUILD_DIR)/Makefile - cd $(LINPHONE_BUILD_DIR) && export PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig export CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make newdate && make && make install + cd $(LINPHONE_BUILD_DIR) && export PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig export CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make newdate && make && make install clean-linphone: clean-osip2 clean-eXosip2 clean-speex clean-libgsm clean-srtp clean-zrtpcpp clean-msilbc clean-libilbc clean-openssl clean-msamr clean-mssilk clean-ffmpeg clean-libvpx clean-msx264 cd $(LINPHONE_BUILD_DIR) && make clean @@ -127,7 +127,7 @@ $(LINPHONE_BUILD_DIR)/Makefile: $(LINPHONE_SRC_DIR)/configure ${linphone_configure_controls}\033[0m" cd $(LINPHONE_BUILD_DIR) && \ PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \ - $(LINPHONE_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \ + CFLAGS="$(CFLAGS) -DMS2_MINIMAL_SIZE" $(LINPHONE_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \ ${linphone_configure_controls} From 323833846ce683752c698e4ebcdbc74287f40df1 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 20 Jan 2012 10:08:51 +0100 Subject: [PATCH 44/60] Settings: do not use settings-changed notifications, simply compare new/old settings --- Classes/FirstLoginViewController.m | 1 + Classes/LinphoneUI/LinphoneManager.h | 4 ++- Classes/LinphoneUI/LinphoneManager.m | 38 +++++++++++++++++++--------- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index ddacf0e09..b91450b65 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -81,6 +81,7 @@ } else { [[NSUserDefaults standardUserDefaults] setObject:username.text forKey:@"username_preference"]; [[NSUserDefaults standardUserDefaults] setObject:passwd.text forKey:@"password_preference"]; + [[LinphoneManager instance] reconfigureLinphoneIfNeeded:nil]; [self.activityIndicator setHidden:false]; }; diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 1c0915469..95aaa8d60 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -52,6 +52,8 @@ typedef struct _CallContext { const char* frontCamId; const char* backCamId; + NSDictionary* currentSettings; + @public CallContext currentCallContextBeforeGoingBackground; } @@ -73,7 +75,7 @@ typedef struct _CallContext { -(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log; -(UIImage*) getImageFromAddressBook:(NSString*) number; - +-(BOOL) reconfigureLinphoneIfNeeded:(NSDictionary *)oldSettings; @property (nonatomic, retain) id callDelegate; @property (nonatomic, retain) id registrationDelegate; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 8dcf1e4c3..2c0d5e31b 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -429,12 +429,24 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } --(void) doLinphoneConfiguration:(NSNotification *)notification { - ms_message("Configuring Linphone"); +-(BOOL) reconfigureLinphoneIfNeeded:(NSDictionary *)settings { if (theLinphoneCore==nil) { ms_warning("cannot configure linphone beacause not initialized yet"); - return; + return NO; } + + [[NSUserDefaults standardUserDefaults] synchronize]; + NSDictionary* newSettings = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; + if (settings != nil) { + /* reconfigure only if newSettings != settings */ + if ([newSettings isEqualToDictionary:settings]) { + ms_message("Same settings: no need to reconfigure linphone"); + return NO; + } + } + NSLog(@"Configuring Linphone (new settings)"); + + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"debugenable_preference"]) { //redirect all traces to the iphone log framework linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler); @@ -449,9 +461,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_core_set_root_ca(theLinphoneCore, lRootCa); NSString* transport = [[NSUserDefaults standardUserDefaults] stringForKey:@"transport_preference"]; - - - + LCSipTransports transportValue; if (transport!=nil) { if (linphone_core_get_sip_transports(theLinphoneCore, &transportValue)) { @@ -622,6 +632,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach isbackgroundModeEnabled=false; } + [currentSettings release]; + currentSettings = newSettings; + [currentSettings retain]; + + return YES; } - (BOOL)isNotIphone3G { @@ -779,10 +794,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach ms_error("Cannot register schedule reachability cb"); }; - [self doLinphoneConfiguration:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(doLinphoneConfiguration:) - name:NSUserDefaultsDidChangeNotification object:nil]; + [self reconfigureLinphoneIfNeeded:nil]; // start scheduler mIterateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 @@ -851,8 +863,10 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //back from standby and background mode is disabled [self startLibLinphone]; } else { - ms_message("becomming active, make sure we are registered"); - linphone_core_refresh_registers(theLinphoneCore);//just to make sure REGISTRATION is up to date + if (![self reconfigureLinphoneIfNeeded:currentSettings]) { + ms_message("becomming active with no config modification, make sure we are registered"); + linphone_core_refresh_registers(theLinphoneCore);//just to make sure REGISTRATION is up to date + } } /*IOS specific*/ From cf7c9add279b7ccb0882ed716e88045c7086036d Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 20 Jan 2012 10:22:59 +0100 Subject: [PATCH 45/60] Force proper unregistering before modifying the settings --- Classes/LinphoneUI/LinphoneManager.m | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 2c0d5e31b..a9f3e05a7 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -457,6 +457,25 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach NSBundle* myBundle = [NSBundle mainBundle]; + /* unregister before modifying any settings */ + { + LinphoneProxyConfig* proxyCfg; + linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); + + if (proxyCfg) { + // this will force unregister WITHOUT destorying the proxyCfg object + linphone_proxy_config_edit(proxyCfg); + + int i=0; + while (linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationNone && + linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationCleared && + i++<40 ) { + linphone_core_iterate(theLinphoneCore); + usleep(100000); + } + } + } + const char* lRootCa = [[myBundle pathForResource:@"rootca"ofType:@"pem"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; linphone_core_set_root_ca(theLinphoneCore, lRootCa); @@ -511,8 +530,8 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //clear auth info list linphone_core_clear_all_auth_info(theLinphoneCore); - //clear existing proxy config - linphone_core_clear_proxy_config(theLinphoneCore); + //clear existing proxy config + linphone_core_clear_proxy_config(theLinphoneCore); if (username && [username length] >0 && domain && [domain length]>0) { const char* identity = [[NSString stringWithFormat:@"sip:%@@%@",username,domain] cStringUsingEncoding:[NSString defaultCStringEncoding]]; const char* password = [accountPassword cStringUsingEncoding:[NSString defaultCStringEncoding]]; From 09b86701ba379cd748d605064ea98563d8e05692 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 20 Jan 2012 10:34:25 +0100 Subject: [PATCH 46/60] Do not show error popups when going into background mode --- Classes/LinphoneUI/LinphoneManager.m | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index a9f3e05a7..dcbb3af1a 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -349,13 +349,17 @@ static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall* call, Lin if (lErrorMessage != nil && linphone_proxy_config_get_error(cfg) != LinphoneReasonNoResponse) { //do not report network connection issue on registration //default behavior if no registration delegates - - UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Registration failure",nil) + UIApplicationState s = [UIApplication sharedApplication].applicationState; + + // do not stack error message when going to backgroud + if (s != UIApplicationStateBackground) { + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Registration failure",nil) message:lErrorMessage delegate:nil cancelButtonTitle:NSLocalizedString(@"Continue",nil) otherButtonTitles:nil ,nil]; - [error show]; + [error show]; + } } } @@ -469,6 +473,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach int i=0; while (linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationNone && linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationCleared && + linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationFailed && i++<40 ) { linphone_core_iterate(theLinphoneCore); usleep(100000); From 9e3daa3f82a17c3b3acddf199dadff8425cecc26 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 20 Jan 2012 14:48:59 +0100 Subject: [PATCH 47/60] Add call quality indicator in ipad video calls --- Classes/VideoViewController-ipad.xib | 96 ++++++++++++++++++++++++++-- 1 file changed, 91 insertions(+), 5 deletions(-) diff --git a/Classes/VideoViewController-ipad.xib b/Classes/VideoViewController-ipad.xib index ab6124536..6aee67bb2 100644 --- a/Classes/VideoViewController-ipad.xib +++ b/Classes/VideoViewController-ipad.xib @@ -38,7 +38,6 @@ {768, 1004} - 4 MAA @@ -130,7 +129,6 @@ {{598, 779}, {170, 225}} - 3 MQA @@ -163,6 +161,16 @@ + + + 292 + {{20, 956}, {28, 28}} + + + _NS:567 + NO + IBIPadFramework + {768, 1004} @@ -196,7 +204,6 @@ {{779, 598}, {225, 170}} - 3 MQA @@ -270,6 +277,16 @@ + + + 292 + {{20, 720}, {28, 28}} + + + _NS:567 + NO + IBIPadFramework + {1004, 768} @@ -307,7 +324,6 @@ {{779, 598}, {225, 170}} - 3 MQA @@ -381,6 +397,16 @@ + + + 292 + {{20, 720}, {28, 28}} + + + _NS:567 + NO + IBIPadFramework + {1004, 768} @@ -552,6 +578,30 @@ 46 + + + mCallQuality + + + + 51 + + + + mCallQualityLandLeft + + + + 52 + + + + mCallQualityLandRight + + + + 53 + @@ -588,6 +638,7 @@ + portrait @@ -601,6 +652,7 @@ + landscape-right @@ -669,6 +721,7 @@ + landscape-left @@ -700,6 +753,21 @@ + + 48 + + + + + 49 + + + + + 50 + + + @@ -726,8 +794,11 @@ UICamSwitch com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIHangUpButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIMuteButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -740,7 +811,7 @@ - 46 + 53 @@ -791,6 +862,9 @@ VideoViewController UIViewController + UIImageView + UIImageView + UIImageView UICamSwitch UICamSwitch UICamSwitch @@ -811,6 +885,18 @@ UIView + + mCallQuality + UIImageView + + + mCallQualityLandLeft + UIImageView + + + mCallQualityLandRight + UIImageView + mCamSwitch UICamSwitch From 25a4562e4449004386e12d602014d045dead7ebb Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 20 Jan 2012 14:49:20 +0100 Subject: [PATCH 48/60] Fix ipad video screen rotation --- Classes/MainScreenWithVideoPreview.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/MainScreenWithVideoPreview.m b/Classes/MainScreenWithVideoPreview.m index 98db47401..a9629a990 100644 --- a/Classes/MainScreenWithVideoPreview.m +++ b/Classes/MainScreenWithVideoPreview.m @@ -146,9 +146,9 @@ // e.g. self.myOutlet = nil; } -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +/*- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return NO; -} +}*/ @end From 45475ed3c58fbfd646bba0a9703413412e4fe5ec Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 20 Jan 2012 15:05:01 +0100 Subject: [PATCH 49/60] Do not re-display video view controller when video call is resumed --- Classes/IncallViewController.m | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index 49cdcf878..6ea9207a0 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -361,6 +361,7 @@ int callCount(LinphoneCore* lc) { UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = NO; if (modalVC != nil) { + mVideoIsPending=FALSE; // clear previous native window ids if (modalVC == mVideoViewController) { mVideoShown=FALSE; @@ -377,9 +378,12 @@ int callCount(LinphoneCore* lc) { } -(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { if (mIncallViewIsReady) { - [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; - mVideoShown=TRUE; - [self presentModalViewController:mVideoViewController animated:true]; + [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; + mVideoShown=TRUE; + if (self.modalViewController != mVideoViewController) + [self presentModalViewController:mVideoViewController animated:true]; + else + ms_message("Do not present again videoViewController"); } else { //postepone presentation mVideoIsPending=TRUE; From f576d184601d816ed78ce235ba801d8377cd04fb Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 20 Jan 2012 17:39:27 +0100 Subject: [PATCH 50/60] Fix ipad crash when receiving a new call while a call already exists --- Classes/PhoneViewController.m | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index b1f1214a8..cb803e988 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -268,7 +268,14 @@ otherButtonTitles:nil]; mIncomingCallActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - [mIncomingCallActionSheet showInView:self.parentViewController.view]; + if ([LinphoneManager runningOnIpad]) { + if (self.modalViewController != nil) + [mIncomingCallActionSheet showInView:[self.modalViewController view]]; + else + [mIncomingCallActionSheet showInView:self.parentViewController.view]; + } else { + [mIncomingCallActionSheet showInView:self.parentViewController.view]; + } [mIncomingCallActionSheet release]; } From 032a4038f18936f2d9ed807116a91a6d03457445 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 23 Jan 2012 09:47:07 +0100 Subject: [PATCH 51/60] Restore missing resource files --- Classes/VideoViewController.m | 5 +- PhoneMainView.xib | 416 ++++++++++++++++++++++++++++- Resources/contact_vide.png | Bin 0 -> 2905 bytes linphone.xcodeproj/project.pbxproj | 12 + 4 files changed, 430 insertions(+), 3 deletions(-) create mode 100755 Resources/contact_vide.png diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m index 8e2200c68..6158c8392 100644 --- a/Classes/VideoViewController.m +++ b/Classes/VideoViewController.m @@ -209,10 +209,11 @@ NSTimer *callQualityRefresher; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return interfaceOrientation == UIInterfaceOrientationPortrait + BOOL result = interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft; + + return result; } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { diff --git a/PhoneMainView.xib b/PhoneMainView.xib index 3953ea8da..666964c1f 100644 --- a/PhoneMainView.xib +++ b/PhoneMainView.xib @@ -47,6 +47,7 @@ {320, 480} + 1 MSAxIDEAA @@ -74,6 +75,7 @@ history-orange.png IBCocoaTouchFramework + @@ -95,6 +97,7 @@ dialer-orange.png IBCocoaTouchFramework + PhoneViewController @@ -109,6 +112,7 @@ IBCocoaTouchFramework + 5 @@ -123,6 +127,7 @@ IBCocoaTouchFramework + 0 @@ -140,12 +145,21 @@ 266 {{0, 431}, {320, 49}} + 3 MCAwAA NO IBCocoaTouchFramework + + YES + + + + + + @@ -359,7 +373,407 @@ 48 - + + + YES + + ABPeoplePickerNavigationController + UINavigationController + + IBProjectSource + ./Classes/ABPeoplePickerNavigationController.h + + + + CallHistoryTableViewController + GenericTabViewController + + clear + UIButton + + + clear + + clear + UIButton + + + + IBProjectSource + ./Classes/CallHistoryTableViewController.h + + + + GenericTabViewController + UITableViewController + + header + UIView + + + header + + header + UIView + + + + IBProjectSource + ./Classes/GenericTabViewController.h + + + + MainScreenWithVideoPreview + UIViewController + + YES + + YES + phoneMainView + window + + + YES + PhoneViewController + UIWindow + + + + YES + + YES + phoneMainView + window + + + YES + + phoneMainView + PhoneViewController + + + window + UIWindow + + + + + IBProjectSource + ./Classes/MainScreenWithVideoPreview.h + + + + MoreViewController + UITableViewController + + YES + + YES + console + credit + creditText + web + weburi + + + YES + UITableViewCell + UITableViewCell + UITextView + UITableViewCell + UILabel + + + + YES + + YES + console + credit + creditText + web + weburi + + + YES + + console + UITableViewCell + + + credit + UITableViewCell + + + creditText + UITextView + + + web + UITableViewCell + + + weburi + UILabel + + + + + IBProjectSource + ./Classes/MoreViewController.h + + + + PhoneViewController + UIViewController + + YES + + YES + address + backToCallView + callLarge + callShort + dialerView + eight + erase + five + four + hash + mMainScreenWithVideoPreview + myTabBarController + nine + one + seven + six + star + status + statusViewHolder + switchCamera + three + two + zero + + + YES + UITextField + UIButton + UIButton + UIButton + UIView + UIButton + UIEraseButton + UIButton + UIButton + UIButton + MainScreenWithVideoPreview + UITabBarController + UIButton + UIButton + UIButton + UIButton + UIButton + UILabel + UIView + UIButton + UIButton + UIButton + UIButton + + + + YES + + YES + address + backToCallView + callLarge + callShort + dialerView + eight + erase + five + four + hash + mMainScreenWithVideoPreview + myTabBarController + nine + one + seven + six + star + status + statusViewHolder + switchCamera + three + two + zero + + + YES + + address + UITextField + + + backToCallView + UIButton + + + callLarge + UIButton + + + callShort + UIButton + + + dialerView + UIView + + + eight + UIButton + + + erase + UIEraseButton + + + five + UIButton + + + four + UIButton + + + hash + UIButton + + + mMainScreenWithVideoPreview + MainScreenWithVideoPreview + + + myTabBarController + UITabBarController + + + nine + UIButton + + + one + UIButton + + + seven + UIButton + + + six + UIButton + + + star + UIButton + + + status + UILabel + + + statusViewHolder + UIView + + + switchCamera + UIButton + + + three + UIButton + + + two + UIButton + + + zero + UIButton + + + + + IBProjectSource + ./Classes/PhoneViewController.h + + + + UIEraseButton + UIButton + + IBProjectSource + ./Classes/UIEraseButton.h + + + + linphoneAppDelegate + NSObject + + YES + + YES + myPeoplePickerController + myPhoneViewController + myTabBarController + window + + + YES + ABPeoplePickerNavigationController + PhoneViewController + UITabBarController + UIWindow + + + + YES + + YES + myPeoplePickerController + myPhoneViewController + myTabBarController + window + + + YES + + myPeoplePickerController + ABPeoplePickerNavigationController + + + myPhoneViewController + PhoneViewController + + + myTabBarController + UITabBarController + + + window + UIWindow + + + + + IBProjectSource + ./Classes/linphoneAppDelegate.h + + + + 0 IBCocoaTouchFramework diff --git a/Resources/contact_vide.png b/Resources/contact_vide.png new file mode 100755 index 0000000000000000000000000000000000000000..dda753a324a693083cce1cfd3dd85699f53f41ea GIT binary patch literal 2905 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 pw|(WL;A)K!raP|O{} Date: Mon, 23 Jan 2012 11:08:59 +0100 Subject: [PATCH 52/60] Fix minor XIB glitches --- Classes/PhoneViewController-ipad.xib | 7 +- PhoneMainView.xib | 416 +-------------------------- 2 files changed, 7 insertions(+), 416 deletions(-) diff --git a/Classes/PhoneViewController-ipad.xib b/Classes/PhoneViewController-ipad.xib index 54406ea07..824edbf14 100644 --- a/Classes/PhoneViewController-ipad.xib +++ b/Classes/PhoneViewController-ipad.xib @@ -229,6 +229,10 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + NSImage + startcall-gray.png + @@ -523,7 +527,6 @@ {{415, 351}, {320, 20}} - _NS:212 3 @@ -900,6 +903,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIEraseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1125,6 +1129,7 @@ {108, 60} {160, 60} {66, 65} + {60, 52} {60, 52} 933 diff --git a/PhoneMainView.xib b/PhoneMainView.xib index 666964c1f..3953ea8da 100644 --- a/PhoneMainView.xib +++ b/PhoneMainView.xib @@ -47,7 +47,6 @@ {320, 480} - 1 MSAxIDEAA @@ -75,7 +74,6 @@ history-orange.png IBCocoaTouchFramework - @@ -97,7 +95,6 @@ dialer-orange.png IBCocoaTouchFramework - PhoneViewController @@ -112,7 +109,6 @@ IBCocoaTouchFramework - 5 @@ -127,7 +123,6 @@ IBCocoaTouchFramework - 0 @@ -145,21 +140,12 @@ 266 {{0, 431}, {320, 49}} - 3 MCAwAA NO IBCocoaTouchFramework - - YES - - - - - - @@ -373,407 +359,7 @@ 48 - - - YES - - ABPeoplePickerNavigationController - UINavigationController - - IBProjectSource - ./Classes/ABPeoplePickerNavigationController.h - - - - CallHistoryTableViewController - GenericTabViewController - - clear - UIButton - - - clear - - clear - UIButton - - - - IBProjectSource - ./Classes/CallHistoryTableViewController.h - - - - GenericTabViewController - UITableViewController - - header - UIView - - - header - - header - UIView - - - - IBProjectSource - ./Classes/GenericTabViewController.h - - - - MainScreenWithVideoPreview - UIViewController - - YES - - YES - phoneMainView - window - - - YES - PhoneViewController - UIWindow - - - - YES - - YES - phoneMainView - window - - - YES - - phoneMainView - PhoneViewController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/MainScreenWithVideoPreview.h - - - - MoreViewController - UITableViewController - - YES - - YES - console - credit - creditText - web - weburi - - - YES - UITableViewCell - UITableViewCell - UITextView - UITableViewCell - UILabel - - - - YES - - YES - console - credit - creditText - web - weburi - - - YES - - console - UITableViewCell - - - credit - UITableViewCell - - - creditText - UITextView - - - web - UITableViewCell - - - weburi - UILabel - - - - - IBProjectSource - ./Classes/MoreViewController.h - - - - PhoneViewController - UIViewController - - YES - - YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero - - - YES - UITextField - UIButton - UIButton - UIButton - UIView - UIButton - UIEraseButton - UIButton - UIButton - UIButton - MainScreenWithVideoPreview - UITabBarController - UIButton - UIButton - UIButton - UIButton - UIButton - UILabel - UIView - UIButton - UIButton - UIButton - UIButton - - - - YES - - YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero - - - YES - - address - UITextField - - - backToCallView - UIButton - - - callLarge - UIButton - - - callShort - UIButton - - - dialerView - UIView - - - eight - UIButton - - - erase - UIEraseButton - - - five - UIButton - - - four - UIButton - - - hash - UIButton - - - mMainScreenWithVideoPreview - MainScreenWithVideoPreview - - - myTabBarController - UITabBarController - - - nine - UIButton - - - one - UIButton - - - seven - UIButton - - - six - UIButton - - - star - UIButton - - - status - UILabel - - - statusViewHolder - UIView - - - switchCamera - UIButton - - - three - UIButton - - - two - UIButton - - - zero - UIButton - - - - - IBProjectSource - ./Classes/PhoneViewController.h - - - - UIEraseButton - UIButton - - IBProjectSource - ./Classes/UIEraseButton.h - - - - linphoneAppDelegate - NSObject - - YES - - YES - myPeoplePickerController - myPhoneViewController - myTabBarController - window - - - YES - ABPeoplePickerNavigationController - PhoneViewController - UITabBarController - UIWindow - - - - YES - - YES - myPeoplePickerController - myPhoneViewController - myTabBarController - window - - - YES - - myPeoplePickerController - ABPeoplePickerNavigationController - - - myPhoneViewController - PhoneViewController - - - myTabBarController - UITabBarController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/linphoneAppDelegate.h - - - - + 0 IBCocoaTouchFramework From 73e0f6408dc6a8057c538c40f612263915a8dee9 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 23 Jan 2012 11:09:17 +0100 Subject: [PATCH 53/60] Version 3.5.0/1.1.1 --- linphone-Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linphone-Info.plist b/linphone-Info.plist index d830ec52e..402e133fd 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -19,11 +19,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 3.4.11 + 3.5.0 CFBundleSignature ???? CFBundleVersion - 1.1.0.50 + 1.1.1 NSMainNibFile PhoneMainView NSMainNibFile~ipad From b4c57081c28f3c6433003622606597a56c5ce6a3 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 23 Jan 2012 16:27:45 +0100 Subject: [PATCH 54/60] Update linphone --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index e647665bc..026077112 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit e647665bc3013e5b42f3b88c669000714e6fd948 +Subproject commit 02607711286be03ac9e074dde0ac02ba03025266 From 099b5a7342eefcc43845a4604dfd6269168dff51 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 23 Jan 2012 21:26:22 +0100 Subject: [PATCH 55/60] fix adhoc configuration --- linphone copy-Info.plist | 44 ----------------------------- linphone.xcodeproj/project.pbxproj | 4 +-- nogpl-thirdparties/.DS_Store | Bin 6148 -> 6148 bytes 3 files changed, 1 insertion(+), 47 deletions(-) delete mode 100644 linphone copy-Info.plist diff --git a/linphone copy-Info.plist b/linphone copy-Info.plist deleted file mode 100644 index dccfa7f39..000000000 --- a/linphone copy-Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - Linphone - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - icone-linphone-57.png - CFBundleIdentifier - org.linphone.phone - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 3.4.9 - CFBundleSignature - ???? - CFBundleVersion - 1.0.7.3 - NSMainNibFile - PhoneMainView - UIApplicationExitsOnSuspend - - UIBackgroundModes - - voip - audio - - UIRequiredDeviceCapabilities - - wifi - microphone - - UIRequiresPersistentWiFi - - - diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 107407db0..8802dcaf8 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -585,7 +585,6 @@ 22D817AB147A9F33001CFB9C /* UIAddVideoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIAddVideoButton.h; sourceTree = ""; }; 22D817AC147A9F33001CFB9C /* UIAddVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIAddVideoButton.m; sourceTree = ""; }; 22D8F187147548E2008C97DB /* linphone-no-gpl-thirdparties.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "linphone-no-gpl-thirdparties.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 22D8F189147548E3008C97DB /* linphone copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "linphone copy-Info.plist"; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/linphone copy-Info.plist"; sourceTree = ""; }; 22E028B413B4CCBD0068A713 /* VideoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoViewController.h; sourceTree = ""; }; 22E028B513B4CCBD0068A713 /* VideoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoViewController.m; sourceTree = ""; }; 22E028B613B4CCBD0068A713 /* VideoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VideoViewController.xib; sourceTree = ""; }; @@ -1164,7 +1163,6 @@ 22D1B68012A3E0BE001AE361 /* libresolv.dylib */, 22E5B0AD133B5EA20044EA25 /* libssl.a */, 22E5B0AE133B5EA20044EA25 /* libcrypto.a */, - 22D8F189147548E3008C97DB /* linphone copy-Info.plist */, ); name = CustomTemplate; sourceTree = ""; @@ -1610,7 +1608,7 @@ armv6, ); CODE_SIGN_ENTITLEMENTS = untitled.plist; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_DYNAMIC_NO_PIC = NO; diff --git a/nogpl-thirdparties/.DS_Store b/nogpl-thirdparties/.DS_Store index 9ec58e6187bd8d28bf6ee98ca302ad128ddac2d9..6e81d9c8446303de41841c7b42019d2be3deea1e 100644 GIT binary patch delta 25 hcmZoMXfc?uhe>JM#C Date: Tue, 24 Jan 2012 16:08:08 +0100 Subject: [PATCH 56/60] Limit iphone to qvga --- linphonerc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linphonerc b/linphonerc index c494f1303..f0dff0146 100644 --- a/linphonerc +++ b/linphonerc @@ -44,5 +44,5 @@ display=1 capture=1 show_local=0 enabled=1 -size=ios-medium +size=qvga From 6f31fbfbf05629b562994dfb5f20194efec7e442 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 24 Jan 2012 17:22:21 +0100 Subject: [PATCH 57/60] Add mandatory 72x72 icon for iPad version --- Resources/icone-linphone-72.png | Bin 0 -> 15015 bytes linphone-Info.plist | 7 +++++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 Resources/icone-linphone-72.png diff --git a/Resources/icone-linphone-72.png b/Resources/icone-linphone-72.png new file mode 100644 index 0000000000000000000000000000000000000000..294356847171762404387193fc97ccc05f8824ff GIT binary patch literal 15015 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 Z_<5KikjjL;pjVXuMOihON-2x5{{iuQm8$>% literal 0 HcmV?d00001 diff --git a/linphone-Info.plist b/linphone-Info.plist index 402e133fd..f3398ab35 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -8,8 +8,11 @@ Linphone CFBundleExecutable ${EXECUTABLE_NAME} - CFBundleIconFile - icone-linphone-57.png + CFBundleIconFiles + + icone-linphone-57.png + icone-linphone-72.png + CFBundleIdentifier org.linphone.phone CFBundleInfoDictionaryVersion From 016c4e046c3ba70791282b5993fa8749f78ded02 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 24 Jan 2012 17:36:51 +0100 Subject: [PATCH 58/60] Fix previous commit... --- linphone-Info.plist | 2 ++ linphone.xcodeproj/project.pbxproj | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/linphone-Info.plist b/linphone-Info.plist index f3398ab35..8adbad5d6 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -8,6 +8,8 @@ Linphone CFBundleExecutable ${EXECUTABLE_NAME} + CFBundleIconFile + CFBundleIconFiles icone-linphone-57.png diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 8802dcaf8..d5a94982e 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -250,6 +250,7 @@ 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, ); }; }; 34957F3F147D3FBF00DD7A09 /* secured.png in Resources */ = {isa = PBXBuildFile; fileRef = 34957F3E147D3FBF00DD7A09 /* secured.png */; }; + 34A6ECEB14CF13CB00460C04 /* icone-linphone-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */; }; 34C7646914CD51CD008E9607 /* contact_vide.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646814CD51CD008E9607 /* contact_vide.png */; }; 34C7646C14CD5585008E9607 /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646A14CD5585008E9607 /* dialer-orange.png */; }; 34C7646D14CD5585008E9607 /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646B14CD5585008E9607 /* history-orange.png */; }; @@ -628,6 +629,7 @@ 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; }; 34957F3E147D3FBF00DD7A09 /* secured.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = secured.png; path = Resources/secured.png; sourceTree = ""; }; + 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "icone-linphone-72.png"; path = "Resources/icone-linphone-72.png"; sourceTree = ""; }; 34C7646814CD51CD008E9607 /* contact_vide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_vide.png; path = Resources/contact_vide.png; sourceTree = ""; }; 34C7646A14CD5585008E9607 /* dialer-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-orange.png"; path = "submodules/linphone/pixmaps/dialer-orange.png"; sourceTree = ""; }; 34C7646B14CD5585008E9607 /* history-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-orange.png"; path = "submodules/linphone/pixmaps/history-orange.png"; sourceTree = ""; }; @@ -1179,6 +1181,7 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */, 34C7646A14CD5585008E9607 /* dialer-orange.png */, 34C7646B14CD5585008E9607 /* history-orange.png */, 34C7646814CD51CD008E9607 /* contact_vide.png */, @@ -1374,6 +1377,7 @@ 34C7646914CD51CD008E9607 /* contact_vide.png in Resources */, 34C7646C14CD5585008E9607 /* dialer-orange.png in Resources */, 34C7646D14CD5585008E9607 /* history-orange.png in Resources */, + 34A6ECEB14CF13CB00460C04 /* icone-linphone-72.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From d037211739c8456b991cb3c1b7e95de1ee344364 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Wed, 1 Feb 2012 09:29:50 +0100 Subject: [PATCH 59/60] Fix 'call quality' icon overlapping contact name Mantis #131 --- Classes/ConferenceCallDetailCell.xib | 29 +++++++++++++++++++++++----- Classes/ConferenceCallDetailView.m | 8 ++------ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/Classes/ConferenceCallDetailCell.xib b/Classes/ConferenceCallDetailCell.xib index 9feae9f9c..1a406056a 100644 --- a/Classes/ConferenceCallDetailCell.xib +++ b/Classes/ConferenceCallDetailCell.xib @@ -43,7 +43,7 @@ 292 - {{0, -0.5}, {80, 80}} + {80, 80} @@ -54,11 +54,11 @@ - 292 - {{79, -0.5}, {241, 80}} + 274 + {{80, 0}, {212, 80}} - + _NS:328 NO YES @@ -84,6 +84,18 @@ 16 + + + 292 + {{292, 26}, {28, 28}} + + + + _NS:567 + 3 + NO + IBCocoaTouchFramework + {320, 79} @@ -148,6 +160,7 @@ + @@ -156,6 +169,11 @@ + + 8 + + + 6 @@ -171,12 +189,13 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 7 + 8 diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index 462fbc2ec..ed6ebafea 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -147,8 +147,7 @@ NSTimer *callQualityRefresher; [view removeFromSuperview]; } } - UIImageView* callquality = [UIImageView new]; - [callquality setFrame:CGRectMake(0, 0, 28, 28)]; + UIImageView* callquality = (UIImageView*) [cell viewWithTag:3]; if (linphone_call_get_average_quality(call) >= 4) { [callquality setImage: [IncallViewController stat_sys_signal_4]]; } @@ -164,10 +163,7 @@ NSTimer *callQualityRefresher; else { [callquality setImage: [IncallViewController stat_sys_signal_0]]; } - [cell.accessoryView addSubview:callquality]; - - tableView.rowHeight = 80;//cell.bounds.size.height; - [callquality release]; + tableView.rowHeight = 80; return cell; } From 9511a40cb08a1cab880e3cbe85d2e8ec6f2778f6 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Wed, 1 Feb 2012 09:34:26 +0100 Subject: [PATCH 60/60] Add details text for LinphoneCallOutgoingRinging and LinphoneCallPausedByRemote states Mantis: #130 --- Classes/IncallViewController.m | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index 6ea9207a0..b0bdf7cf7 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -532,9 +532,16 @@ int callCount(LinphoneCore* lc) { case LinphoneCallPaused: [ms appendFormat:@"%@", NSLocalizedString(@"Paused (tap to resume)", nil), nil]; break; + case LinphoneCallOutgoingInit: case LinphoneCallOutgoingProgress: [ms appendFormat:@"%@...", NSLocalizedString(@"In progress", nil), nil]; break; + case LinphoneCallOutgoingRinging: + [ms appendFormat:@"%@...", NSLocalizedString(@"Ringing...", nil), nil]; + break; + case LinphoneCallPausedByRemote: + [ms appendFormat:@"%@...", NSLocalizedString(@"Paused by remote", nil), nil]; + break; default: break; }