Hide advanced settings unless user wants them

This commit is contained in:
Sylvain Berfini 2012-05-30 17:05:27 +02:00
parent 8082598bdf
commit 480d6fc376
3 changed files with 42 additions and 4 deletions

4
res/layout/visible.xml Normal file
View file

@ -0,0 +1,4 @@
<?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,8 @@
<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>
<string name="pref_video_codec_mpeg4_key">pref_video_codec_mpeg4_key</string> <string name="pref_video_codec_mpeg4_key">pref_video_codec_mpeg4_key</string>

View file

@ -23,6 +23,7 @@ import android.os.Bundle;
import android.preference.CheckBoxPreference; import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference; import android.preference.EditTextPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener; import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory; import android.preference.PreferenceCategory;
@ -65,24 +66,34 @@ public class LinphonePreferencesSIPAccountActivity extends PreferenceActivity {
domain.setPersistent(true); domain.setPersistent(true);
domain.setKey(getString(R.string.pref_domain_key) + getAccountNumber(n)); domain.setKey(getString(R.string.pref_domain_key) + getAccountNumber(n));
EditTextPreference proxy = new EditTextPreference(this); CheckBoxPreference advanced = new CheckBoxPreference(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);
CheckBoxPreference outboundProxy = new CheckBoxPreference(this); final 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);
@ -117,7 +128,8 @@ public class LinphonePreferencesSIPAccountActivity extends PreferenceActivity {
} }
}); });
CheckBoxPreference mainAccount = new CheckBoxPreference(this); final 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()
{ {
@ -139,10 +151,31 @@ 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() {
public boolean onPreferenceChange(Preference p, Object value) {
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.addPreference(proxy); category.addPreference(proxy);
category.addPreference(outboundProxy); category.addPreference(outboundProxy);
category.addPreference(disable); category.addPreference(disable);