diff --git a/res/values-FR/strings.xml b/res/values-FR/strings.xml
index 0b667ba6c..b18769406 100644
--- a/res/values-FR/strings.xml
+++ b/res/values-FR/strings.xml
@@ -75,6 +75,7 @@
Inconnu
Réseau
+ Transport
Utiliser les ports standards
Au moins un est requis
diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml
index ec17b909f..58347657e 100644
--- a/res/values/non_localizable_strings.xml
+++ b/res/values/non_localizable_strings.xml
@@ -28,7 +28,14 @@
pref_audio_ringtone
pref_ipv6_key
+
+ menu_about_key
+ pref_sipaccounts_key
+ setup_key
+ pref_video_key
+ pref_linphone_friend_key
+ pref_transport_key
pref_transport_udp_key
pref_transport_tcp_key
pref_transport_tls_key
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c291a910b..6a17c7152 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -91,13 +91,13 @@
Unknown
Network
+ Transport
UDP
TCP
TLS
Use standard ports
At least one item is required
-
Registration successful
Error
Start
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 4891afbe2..0888a331d 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -2,13 +2,16 @@
+ android:title="@string/menu_about"
+ android:key="@string/menu_about_key"/>
+ android:title="@string/pref_sipaccounts"
+ android:key="@string/pref_sipaccounts_key"/>
+ android:title="@string/setup_title"
+ android:key="@string/setup_key"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:title="@string/pref_audio">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:title="@string/pref_video_initiate_call_with_video_title"
+ android:summary="@string/pref_video_initiate_call_with_video"
+ android:dependency="@string/pref_video_enable_key"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:key="@string/pref_wifi_only_key"
+ android:title="@string/pref_wifi_only"/>
+
+
+
+
+ android:key="@string/pref_transport_use_standard_ports_key"
+ android:title="@string/pref_transport_use_standard_ports"/>
+
+
+
+
+
+
+
+
-
+ android:key="@string/pref_push_notification_key"
+ android:title="@string/pref_push_notification"
+ android:defaultValue="false"/>
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:key="@string/pref_ipv6_key"
+ android:title="@string/pref_ipv6_title"
+ android:defaultValue="false" />
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+ android:key="@string/pref_audio_hacks_use_routing_api_key"
+ android:title="@string/pref_audio_hacks_use_routing_api_title" />
-
-
-
-
+
+
+
+
+
+
+ android:title="@string/pref_linphone_friend_title"
+ android:key="@string/pref_linphone_friend_key">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java
index f2811c0a7..86c2559d3 100644
--- a/src/org/linphone/LinphoneManager.java
+++ b/src/org/linphone/LinphoneManager.java
@@ -771,28 +771,35 @@ public final class LinphoneManager implements LinphoneCoreListener {
Log.e("Bad port number ["+lPreviousPort+"] using random instead");
lPreviousPort=(0xDFFF & (int)Math.random())+1024;
}
- if (!getPrefBoolean(R.string.pref_transport_tcp_key, false)) {
- ports.tcp = 0;
- } else if (useStandardPort) {
- ports.tcp = 5060;
- } else if (ports.tcp==0){
- ports.tcp=lPreviousPort;
- }
-
- if (!getPrefBoolean(R.string.pref_transport_udp_key, false)) {
+
+ String transport = getPrefString(R.string.pref_transport_key, getString(R.string.pref_transport_udp_key));
+ if (transport.equals(getString(R.string.pref_transport_tcp_key)))
+ {
ports.udp = 0;
- } else if (useStandardPort) {
- ports.udp = 5060;
- } else if (ports.udp==0) {
- ports.udp = lPreviousPort;
- }
-
- if (!getPrefBoolean(R.string.pref_transport_tls_key, false)) {
ports.tls = 0;
- } else if (useStandardPort) {
- ports.tls = 5061;
- } else if (ports.tls==0) {
- ports.tls=lPreviousPort;
+ if (useStandardPort) {
+ ports.tcp = 5060;
+ } else if (ports.tcp==0){
+ ports.tcp=lPreviousPort;
+ }
+ } else if (transport.equals(getString(R.string.pref_transport_udp_key)))
+ {
+ ports.tcp = 0;
+ ports.tls = 0;
+ if (useStandardPort) {
+ ports.udp = 5060;
+ } else if (ports.udp==0) {
+ ports.udp = lPreviousPort;
+ }
+ } else if (transport.equals(getString(R.string.pref_transport_tls_key)))
+ {
+ ports.udp = 0;
+ ports.tcp = 0;
+ if (useStandardPort) {
+ ports.tls = 5061;
+ } else if (ports.tls==0) {
+ ports.tls=lPreviousPort;
+ }
}
mLc.setSignalingTransportPorts(ports);
diff --git a/src/org/linphone/PreferencesFragment.java b/src/org/linphone/PreferencesFragment.java
index 321e59667..16f130c83 100644
--- a/src/org/linphone/PreferencesFragment.java
+++ b/src/org/linphone/PreferencesFragment.java
@@ -25,10 +25,10 @@ import static org.linphone.R.string.pref_codec_speex16_key;
import static org.linphone.R.string.pref_echo_cancellation_key;
import static org.linphone.R.string.pref_echo_canceller_calibration_key;
import static org.linphone.R.string.pref_media_encryption_key;
+import static org.linphone.R.string.pref_transport_key;
import static org.linphone.R.string.pref_video_enable_key;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import org.linphone.LinphoneManager.EcCalibrationListener;
@@ -55,11 +55,8 @@ import android.os.Handler;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceCategory;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
public class PreferencesFragment extends PreferencesListFragment implements EcCalibrationListener {
private Handler mHandler = new Handler();
@@ -70,11 +67,6 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
private int nbAccounts = 1;
private PreferenceCategory accounts;
- private static final int ABOUT_SETTINGS_ID = 0;
- private static final int ACCOUNTS_SETTINGS_ID = 1;
- private static final int WIZARD_SETTINGS_ID = 2;
- private static final int CAMERA_SETTINGS_ID = 6;
- private static final int FRIENDS_SETTINGS_ID = 7;
private static final int WIZARD_INTENT = 1;
public PreferencesFragment() {
@@ -88,13 +80,13 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
if (getResources().getBoolean(R.bool.hide_accounts)) {
// Hide category
- PreferenceCategory accounts = (PreferenceCategory) getPreferenceScreen().getPreference(ACCOUNTS_SETTINGS_ID);
+ PreferenceCategory accounts = (PreferenceCategory) findPreference(getString(R.string.pref_sipaccounts_key));
accounts.removeAll();
accounts.setLayoutResource(R.layout.hidden);
}
if (getResources().getBoolean(R.bool.hide_wizard) || getResources().getBoolean(R.bool.replace_wizard_with_old_interface)) {
- Preference wizard = (Preference) getPreferenceScreen().getPreference(WIZARD_SETTINGS_ID);
+ Preference wizard = findPreference(getString(R.string.setup_key));
if (getResources().getBoolean(R.bool.replace_wizard_with_old_interface)) {
createAddAccountButton();
} else {
@@ -109,12 +101,12 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
}
if (!getResources().getBoolean(R.bool.enable_linphone_friends)) {
- PreferenceCategory friends = (PreferenceCategory) getPreferenceScreen().getPreference(FRIENDS_SETTINGS_ID);
+ PreferenceCategory friends = (PreferenceCategory) findPreference(getString(R.string.pref_linphone_friend_key));
friends.removeAll();
friends.setLayoutResource(R.layout.hidden);
}
-
- addTransportChecboxesListener();
+
+ initializeTransportPreferences();
ecCalibratePref = findPreference(pref_echo_canceller_calibration_key);
ecCalibratePref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@@ -179,8 +171,7 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
}
if (getResources().getBoolean(R.bool.hide_camera_settings)) {
- PreferenceScreen screen = getPreferenceScreen();
- PreferenceCategory videoSettings = (PreferenceCategory) screen.getPreference(CAMERA_SETTINGS_ID);
+ PreferenceCategory videoSettings = (PreferenceCategory) findPreference(getString(R.string.pref_video_key));
videoSettings.removeAll();
videoSettings.setLayoutResource(R.layout.hidden);
@@ -189,7 +180,7 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
}
if (getResources().getBoolean(R.bool.display_about_in_settings)) {
- getPreferenceScreen().getPreference(ABOUT_SETTINGS_ID).setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ findPreference(getString(R.string.menu_about_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if (LinphoneActivity.isInstanciated()) {
@@ -200,12 +191,12 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
}
});
} else {
- getPreferenceScreen().getPreference(ABOUT_SETTINGS_ID).setLayoutResource(R.layout.hidden);
+ findPreference(getString(R.string.menu_about_key)).setLayoutResource(R.layout.hidden);
}
}
private void createAddAccountButton() {
- Preference addAccount = (Preference) getPreferenceScreen().getPreference(WIZARD_SETTINGS_ID);
+ Preference addAccount = findPreference(getString(R.string.setup_key));
addAccount.setTitle(getString(R.string.pref_add_account));
addAccount.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
@@ -227,58 +218,6 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
prefs().edit().putBoolean(LinphoneActivity.PREF_FIRST_LAUNCH, false).commit();
}
- private void addTransportChecboxesListener() {
-
- final List checkboxes = Arrays.asList(
- findCheckbox(R.string.pref_transport_udp_key)
- ,findCheckbox(R.string.pref_transport_tcp_key)
- ,findCheckbox(R.string.pref_transport_tls_key)
- );
-
-
- OnPreferenceChangeListener changedListener = new OnPreferenceChangeListener() {
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- if ((Boolean) newValue) {
- for (CheckBoxPreference p : checkboxes) {
- if (p == preference) continue;
- p.setChecked(false);
- }
- return true;
- } else {
- for (CheckBoxPreference p : checkboxes) {
- if (p == preference) continue;
- if (p.isChecked()) return true;
- }
- return false;
- }
- }
- };
-
- OnPreferenceClickListener clickListener = new OnPreferenceClickListener() {
- public boolean onPreferenceClick(Preference preference) {
- // Forbid no protocol selection
-
- if (((CheckBoxPreference) preference).isChecked()) {
- // Trying to unckeck
- for (CheckBoxPreference p : checkboxes) {
- if (p == preference) continue;
- if (p.isChecked()) return false;
- }
- /*Toast.makeText(LinphonePreferencesActivity.this,
- getString(R.string.at_least_a_protocol),
- Toast.LENGTH_SHORT).show();*/
- return true;
- }
- return false;
- }
- };
-
- for (CheckBoxPreference c : checkboxes) {
- c.setOnPreferenceChangeListener(changedListener);
- c.setOnPreferenceClickListener(clickListener);
- }
- }
-
private synchronized void startEcCalibration() {
try {
LinphoneManager.getInstance().startEcCalibration(this);
@@ -335,10 +274,6 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
return getPreferenceManager().getSharedPreferences();
}
- private CheckBoxPreference findCheckbox(int key) {
- return (CheckBoxPreference) findPreference(getString(key));
- }
-
private void detectAudioCodec(int id, String mime, int rate, int channels, boolean hide) {
boolean enable = LinphoneService.isReady() && LinphoneManager.getLc().findPayloadType(mime, rate, channels)!=null;
Preference cb = findPreference(id);
@@ -353,7 +288,7 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
}
private void createDynamicAccountsPreferences() {
- accounts = (PreferenceCategory) getPreferenceScreen().getPreference(ACCOUNTS_SETTINGS_ID);
+ accounts = (PreferenceCategory) findPreference(getString(R.string.pref_sipaccounts_key));
accounts.removeAll();
// Get already configured extra accounts
@@ -429,7 +364,7 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
}
private void addWizardPreferenceButton() {
- Preference wizard = (Preference) getPreferenceScreen().getPreference(WIZARD_SETTINGS_ID);
+ Preference wizard = findPreference(getString(R.string.setup_key));
wizard.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(mContext, SetupActivity.class);
@@ -477,6 +412,27 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa
//mencPref.setValueIndex(mencPref.findIndexOfValue(getString(R.string.media_encryption_none)));
}
}
+
+ private void initializeTransportPreferences() {
+ List mencEntries=new ArrayList();
+ List mencEntryValues=new ArrayList();
+ mencEntries.add(getString(R.string.pref_transport_udp));
+ mencEntryValues.add(getString(R.string.pref_transport_udp_key));
+ mencEntries.add(getString(R.string.pref_transport_tcp));
+ mencEntryValues.add(getString(R.string.pref_transport_tcp_key));
+
+ mencEntries.add(getString(R.string.pref_transport_tls));
+ mencEntryValues.add(getString(R.string.pref_transport_tls_key));
+
+ ListPreference transport = (ListPreference) findPreference(pref_transport_key);
+
+ CharSequence[] contents=new CharSequence[mencEntries.size()];
+ mencEntries.toArray(contents);
+ transport.setEntries(contents);
+ contents=new CharSequence[mencEntryValues.size()];
+ mencEntryValues.toArray(contents);
+ transport.setEntryValues(contents);
+ }
private Preference findPreference(int key) {
return getPreferenceManager().findPreference(getString(key));
diff --git a/src/org/linphone/setup/SetupActivity.java b/src/org/linphone/setup/SetupActivity.java
index 231a91ac2..8f2088d6a 100644
--- a/src/org/linphone/setup/SetupActivity.java
+++ b/src/org/linphone/setup/SetupActivity.java
@@ -219,9 +219,7 @@ public class SetupActivity extends FragmentActivity implements OnClickListener {
writePreference(R.string.pref_ice_enable_key, true);
writePreference(R.string.pref_push_notification_key, true);
- writePreference(R.string.pref_transport_tls_key, true);
- writePreference(R.string.pref_transport_tcp_key, false);
- writePreference(R.string.pref_transport_udp_key, false);
+ writePreference(R.string.pref_transport_key, getString(R.string.pref_transport_tls_key));
}
} else {
writePreference(getString(R.string.pref_username_key) + newAccountId, username);