Fix for nat policy settings
This commit is contained in:
parent
f2c7048a0b
commit
30aab3cad8
6 changed files with 54 additions and 50 deletions
|
@ -97,6 +97,7 @@
|
|||
<string name="pref_codecs_key">pref_codecs_key</string>
|
||||
<string name="pref_stun_server_key">pref_stun_server_key</string>
|
||||
<string name="pref_ice_enable_key">pref_ice_enable_key</string>
|
||||
<string name="pref_turn_enable_key">pref_turn_enable_key</string>
|
||||
<string name="pref_video_codec_vp8_key">pref_video_codec_vp8_key</string>
|
||||
<string name="pref_media_encryption_key">pref_media_encryption_key</string>
|
||||
<string name="pref_media_encryption_key_none">none</string>
|
||||
|
|
|
@ -287,6 +287,7 @@
|
|||
<string name="pref_wifi_only">Use WiFi only</string>
|
||||
<string name="pref_stun_server">Stun server</string>
|
||||
<string name="pref_ice_enable">Enable ICE</string>
|
||||
<string name="pref_turn_enable">Enable TURN</string>
|
||||
<string name="pref_upnp_enable">Enable UPNP</string>
|
||||
<string name="pref_transport_use_random_ports">Use random ports</string>
|
||||
<string name="pref_sip_port_title">SIP port to use</string>
|
||||
|
|
|
@ -259,6 +259,11 @@
|
|||
android:key="@string/pref_ice_enable_key"
|
||||
android:persistent="false"/>
|
||||
|
||||
<CheckBoxPreference
|
||||
android:title="@string/pref_turn_enable"
|
||||
android:key="@string/pref_turn_enable_key"
|
||||
android:persistent="false"/>
|
||||
|
||||
<CheckBoxPreference
|
||||
android:title="@string/pref_upnp_enable"
|
||||
android:key="@string/pref_upnp_enable_key"
|
||||
|
|
|
@ -425,10 +425,6 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
|||
isAnimationDisabled = !LinphonePreferences.instance().areAnimationsEnabled();
|
||||
}
|
||||
|
||||
public boolean isAnimationDisabled() {
|
||||
return isAnimationDisabled;
|
||||
}
|
||||
|
||||
private void changeFragment(Fragment newFragment, FragmentsAvailable newFragmentType, boolean withoutAnimation) {
|
||||
|
||||
FragmentManager fm = getFragmentManager();
|
||||
|
|
|
@ -910,46 +910,44 @@ public class LinphonePreferences {
|
|||
return getConfig().getBool("app", "wifi_only", false);
|
||||
}
|
||||
|
||||
public String getStunServer() {
|
||||
LinphoneNatPolicy nat = getLc().getNatPolicy();
|
||||
if (nat == null) return null;
|
||||
return nat.getStunServer();
|
||||
}
|
||||
|
||||
public void setStunServer(String stun) {
|
||||
private LinphoneNatPolicy getOrCreateNatPolicy() {
|
||||
LinphoneNatPolicy nat = getLc().getNatPolicy();
|
||||
if (nat == null) {
|
||||
nat = getLc().createNatPolicy();
|
||||
}
|
||||
nat.setStunServer(stun);
|
||||
return nat;
|
||||
}
|
||||
|
||||
public void setIceEnabled(boolean enabled) {
|
||||
LinphoneNatPolicy nat = getLc().createNatPolicy();
|
||||
public String getStunServer() {
|
||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||
return nat.getStunServer();
|
||||
}
|
||||
|
||||
if (enabled) {
|
||||
nat.enableIce(true);
|
||||
} else {
|
||||
String stun = getStunServer();
|
||||
if (stun != null && stun.length() > 0) {
|
||||
nat.enableStun(true);
|
||||
}
|
||||
public void setStunServer(String stun) {
|
||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||
nat.setStunServer(stun);
|
||||
if (stun != null && !stun.isEmpty()) {
|
||||
nat.enableStun(true);
|
||||
}
|
||||
getLc().setNatPolicy(nat);
|
||||
}
|
||||
|
||||
public void setUpnpEnabled(boolean enabled) {
|
||||
LinphoneNatPolicy nat = getLc().getNatPolicy();
|
||||
public void setIceEnabled(boolean enabled) {
|
||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||
nat.enableIce(enabled);
|
||||
getLc().setNatPolicy(nat);
|
||||
}
|
||||
|
||||
if (enabled) {
|
||||
nat.enableUpnp(true);
|
||||
}
|
||||
else {
|
||||
String stun = getStunServer();
|
||||
if (stun != null && stun.length() > 0) {
|
||||
nat.enableStun(true);
|
||||
}
|
||||
}
|
||||
public void setTurnEnabled(boolean enabled) {
|
||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||
nat.enableTurn(enabled);
|
||||
getLc().setNatPolicy(nat);
|
||||
}
|
||||
|
||||
public void setUpnpEnabled(boolean enabled) {
|
||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||
nat.enableUpnp(enabled);
|
||||
getLc().setNatPolicy(nat);
|
||||
}
|
||||
|
||||
public void useRandomPort(boolean enabled) {
|
||||
|
@ -990,17 +988,20 @@ public class LinphonePreferences {
|
|||
}
|
||||
|
||||
public boolean isUpnpEnabled() {
|
||||
LinphoneNatPolicy nat = getLc().getNatPolicy();
|
||||
if (nat == null) return false;
|
||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||
return nat.upnpEnabled();
|
||||
}
|
||||
|
||||
public boolean isIceEnabled() {
|
||||
LinphoneNatPolicy nat = getLc().getNatPolicy();
|
||||
if (nat == null) return false;
|
||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||
return nat.iceEnabled();
|
||||
}
|
||||
|
||||
public boolean isTurnEnabled() {
|
||||
LinphoneNatPolicy nat = getOrCreateNatPolicy();
|
||||
return nat.turnEnabled();
|
||||
}
|
||||
|
||||
public MediaEncryption getMediaEncryption() {
|
||||
return getLc().getMediaEncryption();
|
||||
}
|
||||
|
|
|
@ -949,16 +949,10 @@ public class SettingsFragment extends PreferencesListFragment {
|
|||
|
||||
// Disable UPnP if ICE si enabled, or disable ICE if UPnP is enabled
|
||||
CheckBoxPreference ice = (CheckBoxPreference) findPreference(getString(R.string.pref_ice_enable_key));
|
||||
CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key));
|
||||
CheckBoxPreference upnp = (CheckBoxPreference) findPreference(getString(R.string.pref_upnp_enable_key));
|
||||
ice.setChecked(mPrefs.isIceEnabled());
|
||||
if (mPrefs.isIceEnabled()) {
|
||||
upnp.setEnabled(false);
|
||||
} else {
|
||||
upnp.setChecked(mPrefs.isUpnpEnabled());
|
||||
if (mPrefs.isUpnpEnabled()) {
|
||||
ice.setEnabled(false);
|
||||
}
|
||||
}
|
||||
turn.setChecked(mPrefs.isTurnEnabled());
|
||||
|
||||
CheckBoxPreference randomPort = (CheckBoxPreference) findPreference(getString(R.string.pref_transport_use_random_ports_key));
|
||||
randomPort.setChecked(mPrefs.isUsingRandomPort());
|
||||
|
@ -1000,20 +994,26 @@ public class SettingsFragment extends PreferencesListFragment {
|
|||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
CheckBoxPreference upnp = (CheckBoxPreference) findPreference(getString(R.string.pref_upnp_enable_key));
|
||||
boolean value = (Boolean) newValue;
|
||||
upnp.setChecked(false);
|
||||
upnp.setEnabled(!value);
|
||||
mPrefs.setIceEnabled((Boolean) newValue);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
findPreference(getString(R.string.pref_turn_enable_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
CheckBoxPreference upnp = (CheckBoxPreference) findPreference(getString(R.string.pref_upnp_enable_key));
|
||||
boolean value = (Boolean) newValue;
|
||||
mPrefs.setTurnEnabled((Boolean) newValue);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
findPreference(getString(R.string.pref_upnp_enable_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
CheckBoxPreference ice = (CheckBoxPreference) findPreference(getString(R.string.pref_ice_enable_key));
|
||||
boolean value = (Boolean) newValue;
|
||||
ice.setChecked(false);
|
||||
ice.setEnabled(!value);
|
||||
mPrefs.setUpnpEnabled(value);
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue