Use custom filter when filter isn't saved
- includes misc UI fix on tablet. width isn't set
correctly.
TESTED (needs the change above):
- keep contacts visibility after GB to ICS migration
- keep filter option between People and Phone UI
- keep filter option after People/Phone reboot (killing the process)
REMAINING ISSUES:
- Custom filter affects "All contacts" filter.
For example, if the user choose "All contacts" after showing
"Other contacts" using custom filter (in Google directory),
"Other contacts" will be shown (while it sholdn't).
"All contacts" should show contacts inside default_directory,
or at least it shouldn't be affected by previous custom filter
choice.
- Phone filter still shows "Other contacts" (with phones)
unxpectedly, which should be fixed.
Bug: 5153692
Change-Id: I5c8a9a51caaec967af66fd7840e45efe9802f283
diff --git a/res/values-sw580dp-w720dp/styles.xml b/res/values-sw580dp-w720dp/styles.xml
index e386bda..f3a3759 100644
--- a/res/values-sw580dp-w720dp/styles.xml
+++ b/res/values-sw580dp-w720dp/styles.xml
@@ -43,7 +43,6 @@
<item name="list_item_header_underline_height">1dip</item>
<item name="list_item_contacts_count_text_color">@color/contact_count_text_color</item>
<item name="list_item_contacts_count_text_size">12sp</item>
- <item name="contact_filter_popup_width">320dip</item>
<item name="contact_browser_list_padding_left">0dip</item>
<item name="contact_browser_list_padding_right">0dip</item>
<item name="contact_browser_background">@android:color/transparent</item>
diff --git a/res/values-sw580dp/styles.xml b/res/values-sw580dp/styles.xml
index 9244faa..5a28bf6 100644
--- a/res/values-sw580dp/styles.xml
+++ b/res/values-sw580dp/styles.xml
@@ -43,7 +43,6 @@
<item name="list_item_header_underline_height">1dip</item>
<item name="list_item_contacts_count_text_color">@color/contact_count_text_color</item>
<item name="list_item_contacts_count_text_size">12sp</item>
- <item name="contact_filter_popup_width">320dip</item>
<item name="contact_browser_list_padding_left">0dip</item>
<item name="contact_browser_list_padding_right">0dip</item>
<item name="contact_browser_background">@android:color/transparent</item>
@@ -75,7 +74,6 @@
<item name="list_item_header_underline_height">1dip</item>
<item name="list_item_contacts_count_text_color">@color/contact_count_text_color</item>
<item name="list_item_contacts_count_text_size">12sp</item>
- <item name="contact_filter_popup_width">320dip</item>
<item name="contact_browser_list_padding_left">16dip</item>
<item name="contact_browser_list_padding_right">0dip</item>
<item name="contact_browser_background">@android:color/transparent</item>
@@ -94,7 +92,7 @@
</style>
<style name="CustomContactListFilterView" parent="ContactListFilterTheme">
- <item name="android:layout_width">400dip</item>
+ <item name="android:layout_width">match_parent</item>
<item name="android:layout_height">400dip</item>
</style>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index cd5d137..d79d373 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -67,7 +67,6 @@
</declare-styleable>
<declare-styleable name="ContactBrowser">
- <attr name="contact_filter_popup_width" format="dimension"/>
<attr name="contact_browser_list_padding_left" format="dimension"/>
<attr name="contact_browser_list_padding_right" format="dimension"/>
<attr name="contact_browser_background" format="reference"/>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index ae74a56..dc675b3 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -44,7 +44,6 @@
<item name="list_item_header_height">24dip</item>
<item name="list_item_header_underline_height">1dip</item>
<item name="list_item_header_underline_color">@color/people_app_theme_color</item>
- <item name="contact_filter_popup_width">320dip</item>
<item name="contact_browser_list_padding_left">16dip</item>
<item name="contact_browser_list_padding_right">0dip</item>
<item name="contact_browser_background">@android:color/black</item>
@@ -154,7 +153,6 @@
<item name="list_item_header_underline_color">@color/people_app_theme_color</item>
<item name="list_item_contacts_count_text_color">@color/contact_count_text_color</item>
<item name="list_item_header_text_indent">8dip</item>
- <item name="contact_filter_popup_width">320dip</item>
<item name="contact_browser_list_padding_left">16dip</item>
<item name="contact_browser_list_padding_right">0dip</item>
<item name="contact_browser_background">@android:color/transparent</item>
@@ -198,7 +196,6 @@
<item name="list_item_header_text_color">?color/section_header_text_color</item>
<item name="list_item_header_text_size">14sp</item>
<item name="list_item_header_text_indent">8dip</item>
- <item name="contact_filter_popup_width">320dip</item>
<item name="contact_browser_list_padding_left">16dip</item>
<item name="contact_browser_list_padding_right">0dip</item>
<item name="contact_browser_background">@android:color/transparent</item>
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index d0acc6b..6200a69 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -348,7 +348,7 @@
Log.w(TAG, "Search Fragment isn't available when ContactListFilter is changed");
return;
}
- mSearchFragment .setFilter(mContactListFilterController.getFilter());
+ mSearchFragment.setFilter(mContactListFilterController.getFilter());
invalidateOptionsMenu();
}
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 2380345..2d5fed1 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -660,11 +660,7 @@
}
private void restoreFilter() {
- mFilter = ContactListFilter.restoreFromPreferences(mPrefs);
- if (mFilter == null) {
- mFilter = ContactListFilter.createFilterWithType(
- ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
- }
+ mFilter = ContactListFilter.restoreDefaultPreferences(mPrefs);
}
private String getPersistentSelectionKey() {
diff --git a/src/com/android/contacts/list/ContactListFilter.java b/src/com/android/contacts/list/ContactListFilter.java
index cfcde2a..724098c 100644
--- a/src/com/android/contacts/list/ContactListFilter.java
+++ b/src/com/android/contacts/list/ContactListFilter.java
@@ -20,6 +20,7 @@
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
+import android.provider.ContactsContract.Contacts;
import android.text.TextUtils;
/**
@@ -202,6 +203,21 @@
.apply();
}
+ /**
+ * Try to obtain ContactListFilter object saved in SharedPreference.
+ * If there's no info there, return custom filter instead, assuming the user wants contacts
+ * which ContactsProvider remembers as "visible contacts".
+ * (See also {@link Contacts#IN_VISIBLE_GROUP})
+ */
+ public static ContactListFilter restoreDefaultPreferences(SharedPreferences prefs) {
+ ContactListFilter filter = restoreFromPreferences(prefs);
+ if (filter == null) {
+ // Show contacts in IN_VISIBLE_GROUP instead.
+ filter = ContactListFilter.createFilterWithType(ContactListFilter.FILTER_TYPE_CUSTOM);
+ }
+ return filter;
+ }
+
public static ContactListFilter restoreFromPreferences(SharedPreferences prefs) {
int filterType = prefs.getInt(KEY_FILTER_TYPE, FILTER_TYPE_DEFAULT);
if (filterType == FILTER_TYPE_DEFAULT) {
diff --git a/src/com/android/contacts/list/ContactListFilterController.java b/src/com/android/contacts/list/ContactListFilterController.java
index 28b62ca..87228a2 100644
--- a/src/com/android/contacts/list/ContactListFilterController.java
+++ b/src/com/android/contacts/list/ContactListFilterController.java
@@ -45,7 +45,7 @@
public void onStart() {
if (mFilter == null) {
- mFilter = ContactListFilter.restoreFromPreferences(getSharedPreferences());
+ mFilter = ContactListFilter.restoreDefaultPreferences(getSharedPreferences());
mIsInitialized = true;
}
}