#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);