diff --git a/app/src/main/java/org/linphone/settings/LinphonePreferences.java b/app/src/main/java/org/linphone/settings/LinphonePreferences.java
index a60f87b92..ee16ab397 100644
--- a/app/src/main/java/org/linphone/settings/LinphonePreferences.java
+++ b/app/src/main/java/org/linphone/settings/LinphonePreferences.java
@@ -900,6 +900,53 @@ public class LinphonePreferences {
}
}
+ public String getTunnelHost2() {
+ TunnelConfig config = getTunnelConfig();
+ if (config != null) {
+ return config.getHost2();
+ } else {
+ return null;
+ }
+ }
+
+ public void setTunnelHost2(String host) {
+ TunnelConfig config = getTunnelConfig();
+ if (config != null) {
+ config.setHost2(host);
+ LinphoneManager.getInstance().initTunnelFromConf();
+ }
+ }
+
+ public int getTunnelPort2() {
+ TunnelConfig config = getTunnelConfig();
+ if (config != null) {
+ return config.getPort2();
+ } else {
+ return -1;
+ }
+ }
+
+ public void setTunnelPort2(int port) {
+ TunnelConfig config = getTunnelConfig();
+ if (config != null) {
+ config.setPort2(port);
+ LinphoneManager.getInstance().initTunnelFromConf();
+ }
+ }
+
+ public void enableTunnelDualMode(boolean enable) {
+ LinphoneManager.getInstance().initTunnelFromConf();
+ getLc().getTunnel().enableDualMode(enable);
+ }
+
+ public boolean isTunnelDualModeEnabled() {
+ Tunnel tunnel = getLc().getTunnel();
+ if (tunnel != null) {
+ return tunnel.dualModeEnabled();
+ }
+ return false;
+ }
+
public String getTunnelMode() {
return getConfig().getString("app", "tunnel", null);
}
diff --git a/app/src/main/java/org/linphone/settings/TunnelSettingsFragment.java b/app/src/main/java/org/linphone/settings/TunnelSettingsFragment.java
index 48efd473b..8d5150d61 100644
--- a/app/src/main/java/org/linphone/settings/TunnelSettingsFragment.java
+++ b/app/src/main/java/org/linphone/settings/TunnelSettingsFragment.java
@@ -29,13 +29,15 @@ import org.linphone.R;
import org.linphone.core.tools.Log;
import org.linphone.settings.widget.ListSetting;
import org.linphone.settings.widget.SettingListenerBase;
+import org.linphone.settings.widget.SwitchSetting;
import org.linphone.settings.widget.TextSetting;
public class TunnelSettingsFragment extends SettingsFragment {
private View mRootView;
private LinphonePreferences mPrefs;
- private TextSetting mHost, mPort;
+ private TextSetting mHost, mPort, mHost2, mPort2;
+ private SwitchSetting mDualMode;
private ListSetting mMode;
@Nullable
@@ -64,7 +66,14 @@ public class TunnelSettingsFragment extends SettingsFragment {
mPort = mRootView.findViewById(R.id.pref_tunnel_port);
mPort.setInputType(InputType.TYPE_CLASS_NUMBER);
+ mHost2 = mRootView.findViewById(R.id.pref_tunnel_host_2);
+
+ mPort2 = mRootView.findViewById(R.id.pref_tunnel_port_2);
+ mPort2.setInputType(InputType.TYPE_CLASS_NUMBER);
+
mMode = mRootView.findViewById(R.id.pref_tunnel_mode);
+
+ mDualMode = mRootView.findViewById(R.id.pref_tunnel_dual_mode);
}
private void setListeners() {
@@ -88,6 +97,26 @@ public class TunnelSettingsFragment extends SettingsFragment {
}
});
+ mHost2.setListener(
+ new SettingListenerBase() {
+ @Override
+ public void onTextValueChanged(String newValue) {
+ mPrefs.setTunnelHost2(newValue);
+ }
+ });
+
+ mPort2.setListener(
+ new SettingListenerBase() {
+ @Override
+ public void onTextValueChanged(String newValue) {
+ try {
+ mPrefs.setTunnelPort2(Integer.valueOf(newValue));
+ } catch (NumberFormatException nfe) {
+ Log.e(nfe);
+ }
+ }
+ });
+
mMode.setListener(
new SettingListenerBase() {
@Override
@@ -95,6 +124,14 @@ public class TunnelSettingsFragment extends SettingsFragment {
mPrefs.setTunnelMode(newValue);
}
});
+
+ mDualMode.setListener(
+ new SettingListenerBase() {
+ @Override
+ public void onBoolValueChanged(boolean newValue) {
+ mPrefs.enableTunnelDualMode(newValue);
+ }
+ });
}
private void updateValues() {
@@ -102,8 +139,14 @@ public class TunnelSettingsFragment extends SettingsFragment {
mPort.setValue(mPrefs.getTunnelPort());
+ mHost2.setValue(mPrefs.getTunnelHost2());
+
+ mPort2.setValue(mPrefs.getTunnelPort2());
+
mMode.setValue(mPrefs.getTunnelMode());
+ mDualMode.setChecked(mPrefs.isTunnelDualModeEnabled());
+
setListeners();
}
}
diff --git a/app/src/main/res/layout/settings_tunnel.xml b/app/src/main/res/layout/settings_tunnel.xml
index 434081d83..a7314bf95 100644
--- a/app/src/main/res/layout/settings_tunnel.xml
+++ b/app/src/main/res/layout/settings_tunnel.xml
@@ -25,6 +25,27 @@
linphone:hint="@string/pref_tunnel_port"
linphone:title="@string/pref_tunnel_port" />
+
+
+
+
+
+
Tunnel
Hostname
Port
+ Enable dual mode
+ Hostname (2nd server for dual mode)
+ Port (2nd server for dual mode)
Mode