Don't show removed default account in settings

Test: manually verify that default account is cleared when account
is removed.

Bug 30742139

Change-Id: I0f7130d8ed73762ff7cd176636e0949064b16be6
diff --git a/src/com/android/contacts/preference/DefaultAccountPreference.java b/src/com/android/contacts/preference/DefaultAccountPreference.java
index efff5a0..d43b8d5 100644
--- a/src/com/android/contacts/preference/DefaultAccountPreference.java
+++ b/src/com/android/contacts/preference/DefaultAccountPreference.java
@@ -23,7 +23,6 @@
 import android.util.AttributeSet;
 import android.view.View;
 
-import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.model.account.AccountInfo;
 import com.android.contacts.model.account.AccountWithDataSet;
 import com.android.contacts.util.AccountsListAdapter;
@@ -33,7 +32,6 @@
 public class DefaultAccountPreference extends DialogPreference {
     private ContactsPreferences mPreferences;
     private AccountsListAdapter mListAdapter;
-    private AccountTypeManager mAccountTypeManager;
     private List<AccountInfo> mAccounts;
     private int mChosenIndex = -1;
 
@@ -51,6 +49,7 @@
         mAccounts = accounts;
         if (mListAdapter != null) {
             mListAdapter.setAccounts(accounts, null);
+            notifyChanged();
         }
     }
 
@@ -66,7 +65,6 @@
         if (mAccounts != null) {
             mListAdapter.setAccounts(mAccounts, null);
         }
-        mAccountTypeManager = AccountTypeManager.getInstance(getContext());
     }
 
     @Override
@@ -77,11 +75,11 @@
     @Override
     public CharSequence getSummary() {
         final AccountWithDataSet defaultAccount = mPreferences.getDefaultAccount();
-        if (defaultAccount == null ||
-                !mAccountTypeManager.exists(defaultAccount)) {
+        if (defaultAccount == null || mAccounts == null ||
+                !AccountInfo.contains(mAccounts, defaultAccount)) {
             return null;
         } else {
-            return mAccountTypeManager.getAccountInfoForAccount(defaultAccount).getNameLabel();
+            return AccountInfo.getAccount(mAccounts, defaultAccount).getNameLabel();
         }
     }
 
diff --git a/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java b/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
index e9c3a01..3f68d05 100644
--- a/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
+++ b/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
@@ -294,14 +294,9 @@
     @Override
     public void onAccountsLoaded(List<AccountInfo> accounts) {
         // Hide accounts preferences if no writable accounts exist
-        if (accounts.isEmpty()) {
-            getPreferenceScreen().removePreference(findPreference(KEY_DEFAULT_ACCOUNT));
-            getPreferenceScreen().removePreference(findPreference(KEY_CUSTOM_CONTACTS_FILTER));
-        } else {
-            final DefaultAccountPreference preference =
-                    (DefaultAccountPreference) findPreference(KEY_DEFAULT_ACCOUNT);
-            preference.setAccounts(accounts);
-        }
+        final DefaultAccountPreference preference =
+                (DefaultAccountPreference) findPreference(KEY_DEFAULT_ACCOUNT);
+        preference.setAccounts(accounts);
     }
 
     @Override