#16633: Use Checkbox for two state account preferences in account creation activity
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java
index 9a788e1..b35ca40 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java
@@ -44,6 +44,7 @@
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.EditTextPreference;
+import android.preference.CheckBoxPreference;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -52,6 +53,7 @@
import com.savoirfairelinux.sflphone.R;
import com.savoirfairelinux.sflphone.service.SipService;
import com.savoirfairelinux.sflphone.service.ISipService;
+import com.savoirfairelinux.sflphone.utils.AccountDetail;
import com.savoirfairelinux.sflphone.utils.AccountDetailsHandler;
import com.savoirfairelinux.sflphone.utils.AccountDetailBasic;
import com.savoirfairelinux.sflphone.utils.AccountDetailAdvanced;
@@ -76,13 +78,22 @@
Preference.OnPreferenceChangeListener changeNewAccountPreferenceListener = new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
-
- ((EditTextPreference)preference).setText(((CharSequence) newValue).toString());
- preference.setSummary(getString(R.string.account_current_value_label) + (CharSequence)newValue);
return true;
}
};
+ Preference.OnPreferenceChangeListener changeNewAccountTwoStateListener = new Preference.OnPreferenceChangeListener() {
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ if(((CheckBoxPreference)preference).isChecked()) {
+ preference.setSummary(getString(R.string.account_current_value_label) + "enabled");
+ }
+ else {
+ preference.setSummary(getString(R.string.account_current_value_label) + "disabled");
+ }
+ return true;
+ }
+ };
+
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder binder) {
@@ -150,45 +161,27 @@
return true;
}
+ private void addPreferenceListener(AccountDetail details) {
+ for(AccountDetail.PreferenceEntry p : details.getDetailValues()) {
+ Preference pref = mPreferenceManager.findPreference(p.mKey);
+ if(pref != null) {
+ Log.i(TAG, "FOUND " + p.mKey);
+ if(!p.isTwoState) {
+ pref.setOnPreferenceChangeListener(changeNewAccountPreferenceListener);
+ }
+ }
+ }
+ }
+
@Override
protected void onStart() {
super.onStart();
- // AlertDialog dialog = createAlertDialog();
- // dialog.show();
-
- for(String s : basicDetails.getDetailKeys()) {
- EditTextPreference pref = (EditTextPreference) mPreferenceManager.findPreference(s);
- if(pref != null) {
- Log.i(TAG, "FOUND " + s);
- pref.setOnPreferenceChangeListener(changeNewAccountPreferenceListener);
- }
- }
-
- for(String s : advancedDetails.getDetailKeys()) {
- EditTextPreference pref = (EditTextPreference) mPreferenceManager.findPreference(s);
- if(pref != null) {
- Log.i(TAG, "FOUND " + s);
- pref.setOnPreferenceChangeListener(changeNewAccountPreferenceListener);
- }
- }
-
- for(String s : srtpDetails.getDetailKeys()) {
- EditTextPreference pref = (EditTextPreference) mPreferenceManager.findPreference(s);
- if(pref != null) {
- Log.i(TAG, "FOUND " + s);
- pref.setOnPreferenceChangeListener(changeNewAccountPreferenceListener);
- }
- }
-
- for(String s : tlsDetails.getDetailKeys()) {
- EditTextPreference pref = (EditTextPreference) mPreferenceManager.findPreference(s);
- if(pref != null) {
- Log.i(TAG, "FOUND " + s);
- pref.setOnPreferenceChangeListener(changeNewAccountPreferenceListener);
- }
- }
-
+ addPreferenceListener(basicDetails);
+ addPreferenceListener(advancedDetails);
+ addPreferenceListener(srtpDetails);
+ addPreferenceListener(tlsDetails);
+
if(!mBound) {
Log.i(TAG, "onStart: Binding service...");
Intent intent = new Intent(this, SipService.class);
diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetail.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetail.java
index 8934a90..0243e29 100644
--- a/src/com/savoirfairelinux/sflphone/utils/AccountDetail.java
+++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetail.java
@@ -35,11 +35,20 @@
{
public String mKey;
public int mLabelId;
+ public boolean isTwoState;
public PreferenceEntry(String key, int labelId)
{
mKey = key;
mLabelId = labelId;
+ isTwoState = false;
+ }
+
+ public PreferenceEntry(String key, int labelId, boolean twoState)
+ {
+ mKey = key;
+ mLabelId = labelId;
+ isTwoState = twoState;
}
}
diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetailAdvanced.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetailAdvanced.java
index b8cee46..f6098da 100644
--- a/src/com/savoirfairelinux/sflphone/utils/AccountDetailAdvanced.java
+++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetailAdvanced.java
@@ -80,17 +80,17 @@
privateMap.put(CONFIG_RINGTONE_PATH,
new PreferenceEntry(CONFIG_RINGTONE_PATH, R.string.account_ringtone_path_label));
privateMap.put(CONFIG_RINGTONE_ENABLED,
- new PreferenceEntry(CONFIG_RINGTONE_ENABLED, R.string.account_ringtone_enabled_label));
+ new PreferenceEntry(CONFIG_RINGTONE_ENABLED, R.string.account_ringtone_enabled_label, true));
privateMap.put(CONFIG_KEEP_ALIVE_ENABLED,
- new PreferenceEntry(CONFIG_KEEP_ALIVE_ENABLED, R.string.account_keep_alive_label));
+ new PreferenceEntry(CONFIG_KEEP_ALIVE_ENABLED, R.string.account_keep_alive_label, true));
privateMap.put(CONFIG_ACCOUNT_AUTOANSWER,
- new PreferenceEntry(CONFIG_ACCOUNT_AUTOANSWER, R.string.account_account_interface_label));
+ new PreferenceEntry(CONFIG_ACCOUNT_AUTOANSWER, R.string.account_account_interface_label, true));
privateMap.put(CONFIG_LOCAL_INTERFACE,
new PreferenceEntry(CONFIG_LOCAL_INTERFACE, R.string.account_local_interface_label));
privateMap.put(CONFIG_INTERFACE,
new PreferenceEntry(CONFIG_INTERFACE, R.string.account_account_interface_label));
privateMap.put(CONFIG_PUBLISHED_SAMEAS_LOCAL,
- new PreferenceEntry(CONFIG_PUBLISHED_SAMEAS_LOCAL, R.string.account_published_same_as_local_label));
+ new PreferenceEntry(CONFIG_PUBLISHED_SAMEAS_LOCAL, R.string.account_published_same_as_local_label, true));
privateMap.put(CONFIG_LOCAL_PORT,
new PreferenceEntry(CONFIG_LOCAL_PORT, R.string.account_local_port_label));
privateMap.put(CONFIG_PUBLISHED_PORT,
diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetailBasic.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetailBasic.java
index 161fff1..b6629bb 100644
--- a/src/com/savoirfairelinux/sflphone/utils/AccountDetailBasic.java
+++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetailBasic.java
@@ -52,7 +52,7 @@
privateMap.put(CONFIG_ACCOUNT_ALIAS,
new PreferenceEntry(CONFIG_ACCOUNT_ALIAS, R.string.account_alias_label));
privateMap.put(CONFIG_ACCOUNT_ENABLE,
- new PreferenceEntry(CONFIG_ACCOUNT_ENABLE, R.string.account_enabled_label));
+ new PreferenceEntry(CONFIG_ACCOUNT_ENABLE, R.string.account_enabled_label, true));
privateMap.put(CONFIG_ACCOUNT_HOSTNAME,
new PreferenceEntry(CONFIG_ACCOUNT_HOSTNAME, R.string.account_hostname_label));
privateMap.put(CONFIG_ACCOUNT_USERNAME,
diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetailSrtp.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetailSrtp.java
index b3446f7..4afc0e2 100644
--- a/src/com/savoirfairelinux/sflphone/utils/AccountDetailSrtp.java
+++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetailSrtp.java
@@ -46,21 +46,21 @@
privateMap = new HashMap<String, AccountDetail.PreferenceEntry>();
privateMap.put(CONFIG_SRTP_ENABLE,
- new PreferenceEntry(CONFIG_SRTP_ENABLE, R.string.account_srtp_enabled_label));
+ new PreferenceEntry(CONFIG_SRTP_ENABLE, R.string.account_srtp_enabled_label, true));
privateMap.put(CONFIG_SRTP_KEY_EXCHANGE,
- new PreferenceEntry(CONFIG_SRTP_KEY_EXCHANGE, R.string.account_srtp_exchange_label));
+ new PreferenceEntry(CONFIG_SRTP_KEY_EXCHANGE, R.string.account_srtp_exchange_label, true));
privateMap.put(CONFIG_SRTP_ENCRYPTION_ALGO,
- new PreferenceEntry(CONFIG_SRTP_ENCRYPTION_ALGO, R.string.account_encryption_algo_label));
+ new PreferenceEntry(CONFIG_SRTP_ENCRYPTION_ALGO, R.string.account_encryption_algo_label, true));
privateMap.put(CONFIG_SRTP_RTP_FALLBACK,
- new PreferenceEntry(CONFIG_SRTP_RTP_FALLBACK, R.string.account_srtp_fallback_label));
+ new PreferenceEntry(CONFIG_SRTP_RTP_FALLBACK, R.string.account_srtp_fallback_label, true));
privateMap.put(CONFIG_ZRTP_HELLO_HASH,
- new PreferenceEntry(CONFIG_ZRTP_HELLO_HASH, R.string.account_hello_hash_enable_label));
+ new PreferenceEntry(CONFIG_ZRTP_HELLO_HASH, R.string.account_hello_hash_enable_label, true));
privateMap.put(CONFIG_ZRTP_DISPLAY_SAS,
- new PreferenceEntry(CONFIG_ZRTP_DISPLAY_SAS, R.string.account_display_sas_label));
+ new PreferenceEntry(CONFIG_ZRTP_DISPLAY_SAS, R.string.account_display_sas_label, true));
privateMap.put(CONFIG_ZRTP_NOT_SUPP_WARNING,
- new PreferenceEntry(CONFIG_ZRTP_NOT_SUPP_WARNING, R.string.account_not_supported_warning_label));
+ new PreferenceEntry(CONFIG_ZRTP_NOT_SUPP_WARNING, R.string.account_not_supported_warning_label, true));
privateMap.put(CONFIG_ZRTP_DISPLAY_SAS_ONCE,
- new PreferenceEntry(CONFIG_ZRTP_DISPLAY_SAS_ONCE, R.string.account_display_sas_once_label));
+ new PreferenceEntry(CONFIG_ZRTP_DISPLAY_SAS_ONCE, R.string.account_display_sas_once_label, true));
}
public Set<String> getDetailKeys()
diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetailTls.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetailTls.java
index 4fce769..f2bb95d 100644
--- a/src/com/savoirfairelinux/sflphone/utils/AccountDetailTls.java
+++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetailTls.java
@@ -54,7 +54,7 @@
privateMap.put(CONFIG_TLS_LISTENER_PORT,
new PreferenceEntry(CONFIG_TLS_LISTENER_PORT, R.string.account_listener_port_label));
privateMap.put(CONFIG_TLS_ENABLE,
- new PreferenceEntry(CONFIG_TLS_ENABLE, R.string.account_tls_enabled_label));
+ new PreferenceEntry(CONFIG_TLS_ENABLE, R.string.account_tls_enabled_label, true));
privateMap.put(CONFIG_TLS_CA_LIST_FILE,
new PreferenceEntry(CONFIG_TLS_CA_LIST_FILE, R.string.account_tls_certificate_list_label));
privateMap.put(CONFIG_TLS_CERTIFICATE_FILE,
@@ -70,11 +70,11 @@
privateMap.put(CONFIG_TLS_SERVER_NAME,
new PreferenceEntry(CONFIG_TLS_SERVER_NAME, R.string.account_tls_server_name_label));
privateMap.put(CONFIG_TLS_VERIFY_SERVER,
- new PreferenceEntry(CONFIG_TLS_VERIFY_SERVER, R.string.account_tls_verify_label));
+ new PreferenceEntry(CONFIG_TLS_VERIFY_SERVER, R.string.account_tls_verify_label, true));
privateMap.put(CONFIG_TLS_VERIFY_CLIENT,
- new PreferenceEntry(CONFIG_TLS_VERIFY_CLIENT, R.string.account_tls_verify_client_label));
+ new PreferenceEntry(CONFIG_TLS_VERIFY_CLIENT, R.string.account_tls_verify_client_label, true));
privateMap.put(CONFIG_TLS_REQUIRE_CLIENT_CERTIFICATE,
- new PreferenceEntry(CONFIG_TLS_REQUIRE_CLIENT_CERTIFICATE, R.string.account_tls_require_client_certificat_label));
+ new PreferenceEntry(CONFIG_TLS_REQUIRE_CLIENT_CERTIFICATE, R.string.account_tls_require_client_certificat_label, true));
privateMap.put(CONFIG_TLS_NEGOTIATION_TIMEOUT_SEC,
new PreferenceEntry(CONFIG_TLS_NEGOTIATION_TIMEOUT_SEC, R.string.account_tls_negotiation_timeout_sec));
privateMap.put(CONFIG_TLS_NEGOTIATION_TIMEOUT_MSEC,