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