diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m
index bc89802a2..dacc7a6d2 100644
--- a/Classes/InCallViewController.m
+++ b/Classes/InCallViewController.m
@@ -478,7 +478,9 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
}];
[sheet addDestructiveButtonWithTitle:NSLocalizedString(@"Decline", nil) block:^() {
[LinphoneLogger logc:LinphoneLoggerLog format:"User declined video proposal"];
- linphone_core_accept_call_update([LinphoneManager getLc], call, NULL);
+ LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call));
+ linphone_core_accept_call_update([LinphoneManager getLc], call, paramsCopy);
+ linphone_call_params_destroy(paramsCopy);
[timer invalidate];
}];
[sheet showInView:[PhoneMainView instance].view];
diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m
index ef4889035..c8ed0a549 100644
--- a/Classes/LinphoneUI/UIVideoButton.m
+++ b/Classes/LinphoneUI/UIVideoButton.m
@@ -110,6 +110,11 @@
if (currentCall) {
LinphoneCallState state = linphone_call_get_state(currentCall);
switch (state) {
+ case LinphoneCallUpdating:
+ {
+ [self setEnabled:FALSE];
+ break;
+ }
case LinphoneCallStreamsRunning:
{
[waitView stopAnimating];
diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
index 5c5955e37..035c11cd3 100644
--- a/Classes/SettingsViewController.m
+++ b/Classes/SettingsViewController.m
@@ -40,6 +40,13 @@
@end
#endif
+@interface SettingsViewController (private)
+
++ (IASKSpecifier*)filterSpecifier:(IASKSpecifier *)specifier;
+
+@end
+
+
#pragma mark - IASKSwitchEx Class
@interface IASKSwitchEx : DCRoundSwitch {
@@ -189,6 +196,25 @@
[targetViewController release];
}
+- (IASKSettingsReader*)settingsReader {
+ IASKSettingsReader *r = [super settingsReader];
+ NSMutableArray *dataSource = [NSMutableArray arrayWithArray:[r dataSource]];
+ for (int i = 0; i < [dataSource count]; ++i) {
+ NSMutableArray *specifiers = [NSMutableArray arrayWithArray:[dataSource objectAtIndex:i]];
+ for (int j = 0; j < [specifiers count]; ++j) {
+ id sp = [specifiers objectAtIndex:j];
+ if ([sp isKindOfClass:[IASKSpecifier class]]) {
+ sp = [SettingsViewController filterSpecifier:sp];
+ }
+ [specifiers replaceObjectAtIndex:j withObject:sp];
+ }
+
+ [dataSource replaceObjectAtIndex:i withObject:specifiers];
+ }
+ [r setDataSource:dataSource];
+ return r;
+}
+
- (void)viewDidLoad {
[super viewDidLoad];
@@ -416,7 +442,7 @@ static UICompositeViewDescription *compositeDescription = nil;
- (void)viewDidLoad {
[super viewDidLoad];
-
+
settingsStore = [[LinphoneCoreSettingsStore alloc] init];
settingsController.showDoneButton = FALSE;
@@ -509,6 +535,33 @@ static UICompositeViewDescription *compositeDescription = nil;
#pragma mark -
++ (IASKSpecifier*)filterSpecifier:(IASKSpecifier *)specifier {
+#ifndef HAVE_SSL
+ if ([[specifier key] isEqualToString:@"transport_preference"]) {
+ NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:[specifier specifierDict]];
+ NSMutableArray *titles = [NSMutableArray arrayWithArray:[dict objectForKey:@"Titles"]];
+ [titles removeObject:@"TLS"];
+ [dict setObject:titles forKey:@"Titles"];
+ NSMutableArray *values = [NSMutableArray arrayWithArray:[dict objectForKey:@"Values"]];
+ [values removeObject:@"tls"];
+ [dict setObject:values forKey:@"Values"];
+ return [[[IASKSpecifier alloc] initWithSpecifier:dict] autorelease];
+ } else if ([[specifier key] isEqualToString:@"media_encryption_preference"]) {
+ NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:[specifier specifierDict]];
+ NSMutableArray *titles = [NSMutableArray arrayWithArray:[dict objectForKey:@"Titles"]];
+ [titles removeObject:@"ZRTP"];
+ [titles removeObject:@"SRTP"];
+ [dict setObject:titles forKey:@"Titles"];
+ NSMutableArray *values = [NSMutableArray arrayWithArray:[dict objectForKey:@"Values"]];
+ [values removeObject:@"ZRTP"];
+ [values removeObject:@"SRTP"];
+ [dict setObject:values forKey:@"Values"];
+ return [[[IASKSpecifier alloc] initWithSpecifier:dict] autorelease];
+ }
+#endif //HAVE_SSL
+ return specifier;
+}
+
- (NSSet*)findHiddenKeys {
if(![LinphoneManager isLcReady]) {
[LinphoneLogger log:LinphoneLoggerWarning format:@"Can't filter settings: Linphone core not read"];
diff --git a/Settings/InAppSettings.bundle/Root.plist b/Settings/InAppSettings.bundle/Root.plist
index 1b5da02b0..04b9fdc52 100644
--- a/Settings/InAppSettings.bundle/Root.plist
+++ b/Settings/InAppSettings.bundle/Root.plist
@@ -137,6 +137,8 @@
PSChildPaneSpecifier
+ Key
+ call_menu
File
Call
Title
@@ -145,6 +147,8 @@
PSChildPaneSpecifier
+ Key
+ network_menu
File
Network
Title
diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
index 4f3273d6d..8b3ae41d3 100755
--- a/linphone.xcodeproj/project.pbxproj
+++ b/linphone.xcodeproj/project.pbxproj
@@ -5194,6 +5194,7 @@
VIDEO_ENABLED,
HAVE_X264,
HAVE_SILK,
+ HAVE_SSL,
DEBUG,
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
@@ -5269,6 +5270,7 @@
VIDEO_ENABLED,
HAVE_X264,
HAVE_SILK,
+ HAVE_SSL,
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
HEADER_SEARCH_PATHS = (
@@ -5537,6 +5539,7 @@
VIDEO_ENABLED,
HAVE_X264,
HAVE_SILK,
+ HAVE_SSL,
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
HEADER_SEARCH_PATHS = (
@@ -5611,6 +5614,7 @@
VIDEO_ENABLED,
HAVE_X264,
HAVE_SILK,
+ HAVE_SSL,
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
HEADER_SEARCH_PATHS = (