* #34699: working multi credential setting
diff --git a/src/org/sflphone/fragments/NestedSettingsFragment.java b/src/org/sflphone/fragments/NestedSettingsFragment.java
index c418e41..2678fc4 100644
--- a/src/org/sflphone/fragments/NestedSettingsFragment.java
+++ b/src/org/sflphone/fragments/NestedSettingsFragment.java
@@ -1,25 +1,15 @@
 package org.sflphone.fragments;
 
-import java.net.NetworkInterface;
-import java.net.SocketException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-
 import org.sflphone.R;
-import org.sflphone.account.AccountCredentials;
-import org.sflphone.account.AccountDetail;
-import org.sflphone.account.AccountDetailAdvanced;
+import org.sflphone.account.CredentialsManager;
 import org.sflphone.model.Account;
 
 import android.app.Activity;
 import android.os.Bundle;
-import android.preference.CheckBoxPreference;
-import android.preference.ListPreference;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
 import android.preference.PreferenceFragment;
-import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -27,9 +17,11 @@
 
     private static final String TAG = AdvancedAccountFragment.class.getSimpleName();
 
-    private boolean isDifferent = false;
 
     private Callbacks mCallbacks = sDummyCallbacks;
+
+    CredentialsManager mCredsManager;
+
     private static Callbacks sDummyCallbacks = new Callbacks() {
 
         @Override
@@ -51,8 +43,6 @@
         if (!(activity instanceof Callbacks)) {
             throw new IllegalStateException("Activity must implement fragment's callbacks.");
         }
-
-        Log.e(TAG, "Attaching Adavnced");
         mCallbacks = (Callbacks) activity;
     }
 
@@ -66,122 +56,36 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        setHasOptionsMenu(true);
+
         // Load the preferences from an XML resource
         switch (getArguments().getInt("MODE")) {
         case 0:
-
             addPreferencesFromResource(R.xml.account_credentials);
-            addAllCredentials();
+            mCredsManager = new CredentialsManager();
+            mCredsManager.onCreate(getActivity(), getPreferenceScreen(), mCallbacks.getAccount());
+            mCredsManager.reloadCredentials();
+            mCredsManager.setAddCredentialListener();
             break;
         case 1:
+            
             break;
         case 2:
             break;
         }
 
-        // setPreferenceDetails(mCallbacks.getAccount().getAdvancedDetails());
-        // addPreferenceListener(mCallbacks.getAccount().getAdvancedDetails(), changeAdvancedPreferenceListener);
-
     }
 
-    private void addAllCredentials() {
-
-        ArrayList<AccountCredentials> credentials = mCallbacks.getAccount().getCredentials();
-        for (AccountCredentials cred : credentials) {
-            Preference toAdd = new Preference(getActivity());
-            toAdd.setTitle(cred.getDetailString(AccountCredentials.CONFIG_ACCOUNT_USERNAME));
-            toAdd.setSummary(cred.getDetailString(AccountCredentials.CONFIG_ACCOUNT_PASSWORD));
-            getPreferenceScreen().addPreference(toAdd);
-        }
-
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        super.onCreateOptionsMenu(menu, inflater);
     }
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View view = super.onCreateView(inflater, container, savedInstanceState);
         view.setBackgroundColor(getResources().getColor(android.R.color.white));
-
         return view;
     }
 
-    private void setPreferenceDetails(AccountDetail details) {
-        for (AccountDetail.PreferenceEntry p : details.getDetailValues()) {
-            Log.i(TAG, "setPreferenceDetails: pref " + p.mKey + " value " + p.mValue);
-            Preference pref = findPreference(p.mKey);
-            if (pref != null) {
-                if (p.mKey == AccountDetailAdvanced.CONFIG_LOCAL_INTERFACE) {
-                    ArrayList<CharSequence> entries = new ArrayList<CharSequence>();
-                    try {
-
-                        for (Enumeration<NetworkInterface> list = NetworkInterface.getNetworkInterfaces(); list.hasMoreElements();) {
-                            NetworkInterface i = list.nextElement();
-                            Log.e("network_interfaces", "display name " + i.getDisplayName());
-                            if (i.isUp())
-                                entries.add(i.getDisplayName());
-                        }
-                    } catch (SocketException e) {
-                        Log.e(TAG, e.toString());
-                    }
-                    CharSequence[] display = new CharSequence[entries.size()];
-                    entries.toArray(display);
-                    ((ListPreference) pref).setEntries(display);
-                    ((ListPreference) pref).setEntryValues(display);
-                    pref.setSummary(p.mValue);
-                    continue;
-                }
-                if (!p.isTwoState) {
-
-                    pref.setSummary(p.mValue);
-
-                }
-            } else {
-                Log.w(TAG, "pref not found");
-            }
-        }
-    }
-
-    private void addPreferenceListener(AccountDetail details, OnPreferenceChangeListener listener) {
-        for (AccountDetail.PreferenceEntry p : details.getDetailValues()) {
-            Log.i(TAG, "addPreferenceListener: pref " + p.mKey + p.mValue);
-            Preference pref = findPreference(p.mKey);
-            if (pref != null) {
-
-                pref.setOnPreferenceChangeListener(listener);
-
-            } else {
-                Log.w(TAG, "addPreferenceListener: pref not found");
-            }
-        }
-    }
-
-    Preference.OnPreferenceChangeListener changeAdvancedPreferenceListener = new Preference.OnPreferenceChangeListener() {
-        @Override
-        public boolean onPreferenceChange(Preference preference, Object newValue) {
-            setDifferent(true);
-            if (preference instanceof CheckBoxPreference) {
-                mCallbacks.getAccount().getAdvancedDetails().setDetailString(preference.getKey(), ((Boolean) newValue).toString());
-                if (preference.getKey().contentEquals("STUN.enable")) {
-                    findPreference("STUN.server").setEnabled((Boolean) newValue);
-                } else if (preference.getKey().contentEquals("Account.publishedSameAsLocal")) {
-                    findPreference("Account.publishedPort").setEnabled((Boolean) newValue);
-                    findPreference("Account.publishedAddress").setEnabled((Boolean) newValue);
-                }
-
-            } else {
-                preference.setSummary((CharSequence) newValue);
-                Log.i(TAG, "Changing preference value:" + newValue);
-                mCallbacks.getAccount().getAdvancedDetails().setDetailString(preference.getKey(), ((CharSequence) newValue).toString());
-            }
-            return true;
-        }
-    };
-
-    public boolean isDifferent() {
-        return isDifferent;
-    }
-
-    public void setDifferent(boolean isDifferent) {
-        this.isDifferent = isDifferent;
-    }
-
 }
\ No newline at end of file