#17037 Update create/delete account with new mechanism
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
index 52c6430..a56f098 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
@@ -75,10 +75,11 @@
     static final int ACCOUNT_EDIT_REQUEST = 2;
     private ISipService service;
 
-    ArrayList<AccountDetail.PreferenceEntry> basicDetailKeys;
-    ArrayList<AccountDetail.PreferenceEntry> advancedDetailKeys;
-    ArrayList<AccountDetail.PreferenceEntry> srtpDetailKeys;
-    ArrayList<AccountDetail.PreferenceEntry> tlsDetailKeys;
+    ArrayList<AccountDetail.PreferenceEntry> basicDetailKeys = null;
+    ArrayList<AccountDetail.PreferenceEntry> advancedDetailKeys = null;
+    ArrayList<AccountDetail.PreferenceEntry> srtpDetailKeys = null;
+    ArrayList<AccountDetail.PreferenceEntry> tlsDetailKeys = null;
+    HashMap<String, Preference> accountPreferenceHashMap = null;
     PreferenceScreen mRoot = null;
 
     Activity context = getActivity();
@@ -91,6 +92,8 @@
         advancedDetailKeys = AccountDetailAdvanced.getPreferenceEntries();
         srtpDetailKeys = AccountDetailSrtp.getPreferenceEntries();
         tlsDetailKeys = AccountDetailTls.getPreferenceEntries();
+
+        accountPreferenceHashMap = new HashMap<String, Preference>();
     } 
 
     @Override
@@ -148,6 +151,15 @@
                     map.putAll(tlsDetails.getDetailsHashMap());
 
                     setAccountDetails(accountID, map);
+                } else if(resultCode == AccountPreferenceActivity.ACCOUNT_DELETED) {
+                    Bundle bundle = data.getExtras();
+                    String accountID = bundle.getString("AccountID");
+
+                    Log.i(TAG, "Remove account " + accountID);
+                    deleteSelectedAccount(accountID);
+                    Preference accountScreen = accountPreferenceHashMap.get(accountID); 
+                    mRoot.removePreference(accountScreen);
+                    accountPreferenceHashMap.remove(accountID);
                 }
                 break;
             default:
@@ -159,29 +171,17 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             String message = intent.getStringExtra("message");
-            Log.d("receiver", "Got message: " + message);
-            /*
             ArrayList<String> newList = (ArrayList<String>) getAccountList();
-            Set<String> currentList = (Set<String>) mAccountList.keySet();
-            currentList.remove(DEFAULT_ACCOUNT_ID);
+            Set<String> currentList = (Set<String>) accountPreferenceHashMap.keySet();
             if(newList.size() > currentList.size()) {
                 for(String s : newList) {
                     if(!currentList.contains(s)) {
-                        Log.i("receiver", "ADDING ACCOUNT!!!!!! " + s);
-                        mRoot.addPreference(createAccountPreferenceScreen(s));
+                        Preference accountScreen = createAccountPreferenceScreen(s);
+                        mRoot.addPreference(accountScreen);
+                        accountPreferenceHashMap.put(s, accountScreen);
                     }
                 }
             }
-            else if(newList.size() < currentList.size()) {
-                for(String s : currentList) {
-                    if(!newList.contains(s)) {
-                        Log.i("receiver", "REMOVING ACCOUNT!!!!!! " + s);
-                        mRoot.removePreference(mAccountList.get(s).mScreen);
-                        mAccountList.remove(s);
-                    }
-                }
-            } 
-            */
         }
     };
 
@@ -313,8 +313,9 @@
 
         ArrayList<String> accountList = getAccountList();
         for(String s : accountList) {
-            // mRoot.addPreference(getAccountPreferenceScreen(s));
-            mRoot.addPreference(createAccountPreferenceScreen(s));
+            Preference accountScreen = createAccountPreferenceScreen(s);
+            mRoot.addPreference(accountScreen);
+            accountPreferenceHashMap.put(s, accountScreen); 
         }
          
         return mRoot;
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
index b53adf5..81908ac 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
@@ -46,10 +46,10 @@
 import android.preference.EditTextPreference;
 import android.preference.CheckBoxPreference;
 import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
 
 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;
@@ -65,6 +65,7 @@
     private static final String TAG = "AccoutPreferenceActivity";
     public static final int ACCOUNT_MODIFIED = Activity.RESULT_FIRST_USER + 0;
     public static final int ACCOUNT_NOT_MODIFIED = Activity.RESULT_FIRST_USER + 1;
+    public static final int ACCOUNT_DELETED = Activity.RESULT_FIRST_USER + 2;
 
     private AccountDetailBasic basicDetails = null;
     private AccountDetailAdvanced advancedDetails = null;
@@ -72,9 +73,11 @@
     private AccountDetailTls tlsDetails = null;
     private PreferenceManager mPreferenceManager;
     private HashMap<String, String> mPreferenceMap;
+    private MenuItem deleteAccountAction = null;
     private String mAccountID;
            
-    Preference.OnPreferenceChangeListener changeBasicPreferenceListener = new Preference.OnPreferenceChangeListener() {
+    Preference.OnPreferenceChangeListener changeBasicPreferenceListener = 
+                                            new Preference.OnPreferenceChangeListener() {
         public boolean onPreferenceChange(Preference preference, Object newValue) {
             preference.setSummary(getString(R.string.account_current_value_label)+(CharSequence)newValue);
             
@@ -87,7 +90,8 @@
         }
     };
 
-    Preference.OnPreferenceChangeListener changeNewAccountTwoStateListener = new Preference.OnPreferenceChangeListener() {
+    Preference.OnPreferenceChangeListener changeNewAccountTwoStateListener = 
+                                            new Preference.OnPreferenceChangeListener() {
         public boolean onPreferenceChange(Preference preference, Object newValue) {
             return true;
         }
@@ -153,6 +157,13 @@
     }
 
     @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        deleteAccountAction = menu.add("Delete Account");
+        deleteAccountAction.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+        return true;
+    }
+
+    @Override
     protected void onStart() {
         super.onStart();
     }
@@ -183,6 +194,19 @@
         finish(); 
     }
 
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        Bundle bundle = new Bundle();
+        bundle.putString("AccountID", mAccountID);
+
+        Intent resultIntent = new Intent();
+        resultIntent.putExtras(bundle);
+
+        setResult(ACCOUNT_DELETED, resultIntent);
+        finish();
+        return true;
+    }
+
     private void updateAccountDetails(HashMap<String, String> accountDetails, AccountDetail det) {
         for(AccountDetail.PreferenceEntry p : det.getDetailValues()) {
             Preference pref = mPreferenceManager.findPreference(p.mKey);