Making UI.LIST_CONTACTS_WITH_PHONES_ACTION work with loaders/fragments.

Change-Id: If0929f2a06487ac60ca9632c6cb7d1ae3a59e5a3
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index 9e3f067..7ee3908 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -489,7 +489,7 @@
 
                 fragment.setContactsWithPhonesOnlyRestrictionEnabled(
                         mIntentResolver.isContactsWithPhonesOnlyRestrictionEnabled());
-                fragment.setVisibleContactsRestrictionEnabled(
+                fragment.setVisibleContactsRestrictionEnabled(!mSearchResultsMode &&
                         mIntentResolver.isVisibleContactsRestrictionEnabled());
 
                 fragment.setOnContactListActionListener(new OnContactBrowserActionListener() {
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index 3ded6de..80187ad 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -110,7 +110,6 @@
     private SearchEditText mSearchEditText;
     private ContactListEmptyView mEmptyView;
     private ProviderStatusLoader mProviderStatusLoader;
-    private SharedPreferences mSharedPrefs;
     private ContactsPreferences mContactsPrefs;
 
     private int mProviderStatus = ProviderStatus.STATUS_NORMAL;
@@ -292,13 +291,11 @@
 
     @Override
     public void onStart() {
-        if (mSharedPrefs == null) {
-            Context activity = getActivity();
-            mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(activity);
-            mContactsPrefs = new ContactsPreferences(activity);
+        if (mContactsPrefs == null) {
+            mContactsPrefs = new ContactsPreferences(getActivity());
         }
 
-        loadPreferences(mSharedPrefs, mContactsPrefs);
+        loadPreferences(mContactsPrefs);
         configureAdapter();
         mAdapter.configureLoader(mLoader);
 
@@ -314,7 +311,7 @@
         configurePhotoLoader();
     }
 
-    protected void loadPreferences(SharedPreferences prefs, ContactsPreferences contactsPrefs) {
+    protected void loadPreferences(ContactsPreferences contactsPrefs) {
         setContactNameDisplayOrder(contactsPrefs.getDisplayOrder());
         setSortOrder(contactsPrefs.getSortOrder());
     }
diff --git a/src/com/android/contacts/list/ContactsIntentResolver.java b/src/com/android/contacts/list/ContactsIntentResolver.java
index 3f8b524..a43b525 100644
--- a/src/com/android/contacts/list/ContactsIntentResolver.java
+++ b/src/com/android/contacts/list/ContactsIntentResolver.java
@@ -19,15 +19,19 @@
 import com.android.contacts.ContactsSearchManager;
 import com.android.contacts.JoinContactActivity;
 import com.android.contacts.R;
+import com.android.contacts.ui.ContactsPreferences;
+import com.android.contacts.ui.ContactsPreferencesActivity.Prefs;
 
 import android.app.Activity;
 import android.app.SearchManager;
 import android.content.ContentUris;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.content.UriMatcher;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
+import android.preference.PreferenceManager;
 import android.provider.ContactsContract;
 import android.provider.Contacts.ContactMethods;
 import android.provider.Contacts.People;
@@ -476,6 +480,15 @@
     }
 
     public boolean isContactsWithPhonesOnlyRestrictionEnabled() {
-        return mMode != MODE_CUSTOM;
+        if (mMode == MODE_CUSTOM) {
+            return mDisplayOnlyPhones;
+        }
+
+        if (mMode == MODE_DEFAULT) {
+            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
+            return prefs.getBoolean(Prefs.DISPLAY_ONLY_PHONES, Prefs.DISPLAY_ONLY_PHONES_DEFAULT);
+        }
+
+        return false;
     }
 }
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 12de913..9ea68b7 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -16,10 +16,7 @@
 package com.android.contacts.list;
 
 import com.android.contacts.R;
-import com.android.contacts.ui.ContactsPreferences;
-import com.android.contacts.ui.ContactsPreferencesActivity.Prefs;
 
-import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -34,8 +31,7 @@
 
     private boolean mEditMode;
     private boolean mCreateContactEnabled;
-    private boolean mContactsWithPhoneNumbersOnly;
-    private boolean mContactsWithPhonesOnlyRestrictionEnabled = true;
+    private boolean mContactsWithPhonesOnlyRestrictionEnabled;
     private boolean mVisibleContactsRestrictionEnabled = true;
 
     // TODO: Remove this horrible hack once the framework can lookup fragments via findFragmentById
@@ -50,33 +46,20 @@
 
     @Override
     protected void prepareEmptyView() {
-        if (mContactsWithPhoneNumbersOnly) {
+        if (mContactsWithPhonesOnlyRestrictionEnabled) {
             setEmptyText(R.string.noContactsWithPhoneNumbers);
         } else {
             super.prepareEmptyView();
         }
     }
 
-    @Override
-    protected void loadPreferences(SharedPreferences prefs, ContactsPreferences contactsPrefs) {
-        super.loadPreferences(prefs, contactsPrefs);
-
-        setContactsWithPhoneNumbersOnly(prefs.getBoolean(Prefs.DISPLAY_ONLY_PHONES,
-                Prefs.DISPLAY_ONLY_PHONES_DEFAULT));
-    }
-
-    public void setContactsWithPhoneNumbersOnly(boolean flag) {
-        mContactsWithPhoneNumbersOnly = flag;
-        configureAdapter();
-    }
-
     public void setContactsWithPhonesOnlyRestrictionEnabled(boolean flag) {
-        this.mContactsWithPhonesOnlyRestrictionEnabled = flag;
+        mContactsWithPhonesOnlyRestrictionEnabled = flag;
         configureAdapter();
     }
 
     public void setVisibleContactsRestrictionEnabled(boolean flag) {
-        this.mVisibleContactsRestrictionEnabled = flag;
+        mVisibleContactsRestrictionEnabled = flag;
         configureAdapter();
     }
 
@@ -115,10 +98,8 @@
 
         DefaultContactListAdapter adapter = (DefaultContactListAdapter)getAdapter();
         if (adapter != null) {
-            adapter.setContactsWithPhoneNumbersOnly(mContactsWithPhoneNumbersOnly
-                    && mContactsWithPhonesOnlyRestrictionEnabled);
-            adapter.setVisibleContactsOnly(!isSearchResultsMode()
-                    && mVisibleContactsRestrictionEnabled);
+            adapter.setContactsWithPhoneNumbersOnly(mContactsWithPhonesOnlyRestrictionEnabled);
+            adapter.setVisibleContactsOnly(mVisibleContactsRestrictionEnabled);
         }
     }