Improved account settings interface

This commit is contained in:
Sylvain Berfini 2012-05-31 13:47:08 +02:00
parent 480d6fc376
commit f231c65bdd
4 changed files with 30 additions and 43 deletions

View file

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:visibility="visible">
</LinearLayout>

View file

@ -44,7 +44,6 @@
<string name="first_launch_suceeded_once_key">first_launch_suceeded_once_key</string> <string name="first_launch_suceeded_once_key">first_launch_suceeded_once_key</string>
<string name="pref_wifi_only_key">pref_wifi_only_key</string> <string name="pref_wifi_only_key">pref_wifi_only_key</string>
<string name="pref_advanced_key">pref_advanced_key</string>
<string name="pref_video_use_front_camera_key">pref_video_use_front_camera_key</string> <string name="pref_video_use_front_camera_key">pref_video_use_front_camera_key</string>
<string name="pref_video_codec_h263_key">pref_video_codec_h263_key</string> <string name="pref_video_codec_h263_key">pref_video_codec_h263_key</string>

View file

@ -258,4 +258,7 @@
<string name="wizard_need_activation">You need to activate your account with the link that was send to your email.</string> <string name="wizard_need_activation">You need to activate your account with the link that was send to your email.</string>
<string name="wizard_confirmation">Confirmation</string> <string name="wizard_confirmation">Confirmation</string>
<string name="wizard_verify_account">Check</string> <string name="wizard_verify_account">Check</string>
<string name="pref_help_proxy">Redirect registrar packets to this server</string>
<string name="pref_help_outbound_proxy">Redirect all traffic to proxy server</string>
</resources> </resources>

View file

@ -42,17 +42,24 @@ public class LinphonePreferencesSIPAccountActivity extends PreferenceActivity {
addExtraAccountPreferencesFields(screen, n); addExtraAccountPreferencesFields(screen, n);
} }
OnPreferenceChangeListener preferenceChangedListener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary(newValue.toString());
return true;
}
};
private void addExtraAccountPreferencesFields(PreferenceScreen parent, final int n) { private void addExtraAccountPreferencesFields(PreferenceScreen parent, final int n) {
final SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); final SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
PreferenceCategory category = new PreferenceCategory(this);
category.setTitle(getString(R.string.pref_sipaccount));
EditTextPreference username = new EditTextPreference(this); EditTextPreference username = new EditTextPreference(this);
username.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); username.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
username.setTitle(getString(R.string.pref_username)); username.setTitle(getString(R.string.pref_username));
username.setPersistent(true); username.setPersistent(true);
username.setDialogMessage("Example: toto if your account is toto@sip.linphone.org");
username.setKey(getString(R.string.pref_username_key) + getAccountNumber(n)); username.setKey(getString(R.string.pref_username_key) + getAccountNumber(n));
username.setOnPreferenceChangeListener(preferenceChangedListener);
EditTextPreference password = new EditTextPreference(this); EditTextPreference password = new EditTextPreference(this);
password.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); password.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
@ -64,36 +71,29 @@ public class LinphonePreferencesSIPAccountActivity extends PreferenceActivity {
domain.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); domain.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
domain.setTitle(getString(R.string.pref_domain)); domain.setTitle(getString(R.string.pref_domain));
domain.setPersistent(true); domain.setPersistent(true);
domain.setDialogMessage("Example: sip.linphone.org if your account is toto@sip.linphone.org");
domain.setKey(getString(R.string.pref_domain_key) + getAccountNumber(n)); domain.setKey(getString(R.string.pref_domain_key) + getAccountNumber(n));
domain.setOnPreferenceChangeListener(preferenceChangedListener);
CheckBoxPreference advanced = new CheckBoxPreference(this); EditTextPreference proxy = new EditTextPreference(this);
advanced.setTitle(getString(R.string.pref_advanced));
advanced.setTitle(getString(R.string.pref_advanced_key));
advanced.setDefaultValue(false);
domain.setPersistent(true);
final EditTextPreference proxy = new EditTextPreference(this);
proxy.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); proxy.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
proxy.setTitle(getString(R.string.pref_proxy)); proxy.setTitle(getString(R.string.pref_proxy));
proxy.setPersistent(true); proxy.setPersistent(true);
proxy.setKey(getString(R.string.pref_proxy_key) + getAccountNumber(n)); proxy.setKey(getString(R.string.pref_proxy_key) + getAccountNumber(n));
proxy.setLayoutResource(R.layout.hidden); proxy.setOnPreferenceChangeListener(preferenceChangedListener);
final CheckBoxPreference outboundProxy = new CheckBoxPreference(this); CheckBoxPreference outboundProxy = new CheckBoxPreference(this);
outboundProxy.setTitle(getString(R.string.pref_enable_outbound_proxy)); outboundProxy.setTitle(getString(R.string.pref_enable_outbound_proxy));
outboundProxy.setPersistent(true); outboundProxy.setPersistent(true);
outboundProxy.setKey(getString(R.string.pref_enable_outbound_proxy_key) + getAccountNumber(n)); outboundProxy.setKey(getString(R.string.pref_enable_outbound_proxy_key) + getAccountNumber(n));
outboundProxy.setLayoutResource(R.layout.hidden);
final CheckBoxPreference disable = new CheckBoxPreference(this); final CheckBoxPreference disable = new CheckBoxPreference(this);
disable.setTitle(getString(R.string.pref_disable_account)); disable.setTitle(getString(R.string.pref_disable_account));
disable.setPersistent(true); disable.setPersistent(true);
disable.setKey(getString(R.string.pref_disable_account_key) + getAccountNumber(n)); disable.setKey(getString(R.string.pref_disable_account_key) + getAccountNumber(n));
disable.setLayoutResource(R.layout.hidden);
final Preference delete = new Preference(this); final Preference delete = new Preference(this);
delete.setTitle(R.string.pref_delete_account); delete.setTitle(R.string.pref_delete_account);
delete.setLayoutResource(R.layout.hidden);
delete.setOnPreferenceClickListener(new OnPreferenceClickListener() { delete.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
int nbAccounts = prefs.getInt(getString(R.string.pref_extra_accounts), 1); int nbAccounts = prefs.getInt(getString(R.string.pref_extra_accounts), 1);
@ -128,8 +128,7 @@ public class LinphonePreferencesSIPAccountActivity extends PreferenceActivity {
} }
}); });
final CheckBoxPreference mainAccount = new CheckBoxPreference(this); CheckBoxPreference mainAccount = new CheckBoxPreference(this);
mainAccount.setLayoutResource(R.layout.hidden);
mainAccount.setTitle(R.string.pref_default_account_title); mainAccount.setTitle(R.string.pref_default_account_title);
mainAccount.setOnPreferenceClickListener(new OnPreferenceClickListener() mainAccount.setOnPreferenceClickListener(new OnPreferenceClickListener()
{ {
@ -151,36 +150,26 @@ public class LinphonePreferencesSIPAccountActivity extends PreferenceActivity {
delete.setEnabled(prefs.getInt(getString(R.string.pref_default_account), 0) != n); delete.setEnabled(prefs.getInt(getString(R.string.pref_default_account), 0) != n);
disable.setEnabled(prefs.getInt(getString(R.string.pref_default_account), 0) != n); disable.setEnabled(prefs.getInt(getString(R.string.pref_default_account), 0) != n);
advanced.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { PreferenceCategory category = new PreferenceCategory(this);
public boolean onPreferenceChange(Preference p, Object value) { category.setTitle(getString(R.string.pref_sipaccount));
boolean activated = (Boolean) value;
if (activated) {
proxy.setLayoutResource(R.layout.visible);
outboundProxy.setLayoutResource(R.layout.visible);
disable.setLayoutResource(R.layout.visible);
delete.setLayoutResource(R.layout.visible);
mainAccount.setLayoutResource(R.layout.visible);
} else {
proxy.setLayoutResource(R.layout.hidden);
outboundProxy.setLayoutResource(R.layout.hidden);
disable.setLayoutResource(R.layout.hidden);
delete.setLayoutResource(R.layout.hidden);
mainAccount.setLayoutResource(R.layout.hidden);
}
return true;
}
});
parent.addPreference(category); parent.addPreference(category);
category.addPreference(username); category.addPreference(username);
category.addPreference(password); category.addPreference(password);
category.addPreference(domain); category.addPreference(domain);
category.addPreference(advanced);
category = new PreferenceCategory(this);
category.setTitle(getString(R.string.pref_advanced));
parent.addPreference(category);
category.addPreference(proxy); category.addPreference(proxy);
category.addPreference(outboundProxy); category.addPreference(outboundProxy);
category.addPreference(disable); category.addPreference(disable);
category.addPreference(mainAccount); category.addPreference(mainAccount);
category.addPreference(delete); category.addPreference(delete);
username.setSummary(username.getText());
domain.setSummary(domain.getText());
proxy.setSummary("".equals(proxy.getText()) || (proxy.getText() == null) ? getString(R.string.pref_help_proxy) : proxy.getText());
outboundProxy.setSummary(getString(R.string.pref_help_outbound_proxy));
} }
private String getAccountNumber(int n) { private String getAccountNumber(int n) {