Make filter header clickable

Bug: 5160689
Change-Id: If2f9435bf0090f8bfc138a45fe2c9c04eec08091
diff --git a/res/layout/contacts_list_content.xml b/res/layout/contacts_list_content.xml
index 8e1289f..dfa99f6 100644
--- a/res/layout/contacts_list_content.xml
+++ b/res/layout/contacts_list_content.xml
@@ -38,6 +38,7 @@
         android:paddingTop="@dimen/contact_browser_list_top_margin"
         android:layout_marginLeft="@dimen/contact_browser_list_header_left_margin"
         android:layout_marginRight="@dimen/contact_browser_list_header_right_margin"
+        android:background="?android:attr/selectableItemBackground"
         android:visibility="gone">
         <TextView
             android:id="@+id/account_filter_header"
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index 7d96973..bddd472 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -94,8 +94,6 @@
 
     private static final int TAB_INDEX_COUNT = 3;
 
-    private static final int SUBACTIVITY_ACCOUNT_FILTER = 0;
-
     /** Name of the dialtacts shared preferences */
     static final String PREFS_DIALTACTS = "dialtacts";
     static final boolean PREF_FAVORITES_AS_CONTACTS_DEFAULT = false;
@@ -276,7 +274,7 @@
             final Intent intent =
                     new Intent(DialtactsActivity.this, AccountFilterActivity.class);
             ContactListFilter filter = mContactListFilterController.getFilter();
-            startActivityForResult(intent, SUBACTIVITY_ACCOUNT_FILTER);
+            startActivityForResult(intent, AccountFilterActivity.DEFAULT_REQUEST_CODE);
             return true;
         }
     };
@@ -899,7 +897,7 @@
             return;
         }
         switch (requestCode) {
-            case SUBACTIVITY_ACCOUNT_FILTER: {
+            case AccountFilterActivity.DEFAULT_REQUEST_CODE: {
                 ContactListFilter filter = (ContactListFilter) data.getParcelableExtra(
                         AccountFilterActivity.KEY_EXTRA_CONTACT_LIST_FILTER);
                 if (filter == null) {
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index ebf1dbd..31e5064 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -108,7 +108,6 @@
 
     private static final int SUBACTIVITY_NEW_GROUP = 2;
     private static final int SUBACTIVITY_EDIT_GROUP = 3;
-    private static final int SUBACTIVITY_ACCOUNT_FILTER = 4;
 
     private static final String KEY_SEARCH_MODE = "searchMode";
 
@@ -1356,7 +1355,7 @@
             }
             case R.id.menu_contacts_filter: {
                 final Intent intent = new Intent(this, AccountFilterActivity.class);
-                startActivityForResult(intent, SUBACTIVITY_ACCOUNT_FILTER);
+                startActivityForResult(intent, AccountFilterActivity.DEFAULT_REQUEST_CODE);
                 return true;
             }
             case R.id.menu_search: {
@@ -1433,7 +1432,7 @@
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         switch (requestCode) {
-            case SUBACTIVITY_ACCOUNT_FILTER: {
+            case AccountFilterActivity.DEFAULT_REQUEST_CODE: {
                 if (resultCode == Activity.RESULT_OK) {
                     ContactListFilter filter = (ContactListFilter) data.getParcelableExtra(
                             AccountFilterActivity.KEY_EXTRA_CONTACT_LIST_FILTER);
diff --git a/src/com/android/contacts/list/AccountFilterActivity.java b/src/com/android/contacts/list/AccountFilterActivity.java
index 8e0f9b8..f383ec2 100644
--- a/src/com/android/contacts/list/AccountFilterActivity.java
+++ b/src/com/android/contacts/list/AccountFilterActivity.java
@@ -62,6 +62,15 @@
 
     private static final int SUBACTIVITY_CUSTOMIZE_FILTER = 0;
 
+    /**
+     * Request code for this Activity, which will be used with
+     * {@link Activity#startActivityForResult(Intent, int)}.
+     *
+     * This is useful when we want to share one request code among multiple Activities and
+     * Fragments.
+     */
+    public static final int DEFAULT_REQUEST_CODE = 10001;
+
     public static final String KEY_EXTRA_CONTACT_LIST_FILTER = "contactListFilter";
 
     private static final int FILTER_LOADER_ID = 0;
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 0129013..608d3ad 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -18,6 +18,7 @@
 import com.android.contacts.R;
 import com.android.contacts.editor.ContactEditorFragment;
 
+import android.app.Activity;
 import android.content.CursorLoader;
 import android.content.Intent;
 import android.database.Cursor;
@@ -25,6 +26,7 @@
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.Button;
@@ -51,6 +53,19 @@
 
     private View mPaddingView;
 
+    private class FilterHeaderClickListener implements OnClickListener {
+        @Override
+        public void onClick(View view) {
+            final Activity activity = getActivity();
+            if (activity != null) {
+                final Intent intent = new Intent(activity, AccountFilterActivity.class);
+                activity.startActivityForResult(
+                        intent, AccountFilterActivity.DEFAULT_REQUEST_CODE);
+            }
+        }
+    }
+    private OnClickListener mFilterHeaderClickListener = new FilterHeaderClickListener();
+
     public DefaultContactBrowseListFragment() {
         setPhotoLoaderEnabled(true);
         setSectionHeaderDisplayEnabled(true);
@@ -87,6 +102,7 @@
         mAccountFilterHeaderView = (TextView) getView().findViewById(R.id.account_filter_header);
         mAccountFilterHeaderContainer =
                 getView().findViewById(R.id.account_filter_header_container);
+        mAccountFilterHeaderContainer.setOnClickListener(mFilterHeaderClickListener);
         mCounterHeaderView = (TextView) getView().findViewById(R.id.contacts_count);
 
         // Create an empty user profile header and hide it for now (it will be visible if the
diff --git a/src/com/android/contacts/list/PhoneNumberPickerFragment.java b/src/com/android/contacts/list/PhoneNumberPickerFragment.java
index 4819ded..8eced78 100644
--- a/src/com/android/contacts/list/PhoneNumberPickerFragment.java
+++ b/src/com/android/contacts/list/PhoneNumberPickerFragment.java
@@ -29,8 +29,8 @@
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
-import android.widget.Adapter;
 import android.widget.TextView;
 
 /**
@@ -56,6 +56,21 @@
 
     private static final String KEY_FILTER = "filter";
 
+    // A complete copy from DefaultContactBrowserListFragment
+    // TODO: should be able to share logic around filter header.
+    private class FilterHeaderClickListener implements OnClickListener {
+        @Override
+        public void onClick(View view) {
+            final Activity activity = getActivity();
+            if (activity != null) {
+                final Intent intent = new Intent(activity, AccountFilterActivity.class);
+                activity.startActivityForResult(
+                        intent, AccountFilterActivity.DEFAULT_REQUEST_CODE);
+            }
+        }
+    }
+    private OnClickListener mFilterHeaderClickListener = new FilterHeaderClickListener();
+
     public PhoneNumberPickerFragment() {
         setQuickContactEnabled(false);
         setPhotoLoaderEnabled(true);
@@ -82,6 +97,7 @@
         mAccountFilterHeaderView = (TextView) getView().findViewById(R.id.account_filter_header);
         mAccountFilterHeaderContainer =
                 getView().findViewById(R.id.account_filter_header_container);
+        mAccountFilterHeaderContainer.setOnClickListener(mFilterHeaderClickListener);
         updateFilterHeaderView();
     }