Merge "Replacing back arrow with "X" in multi select mode"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 72c6481..ed94546 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -16,8 +16,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.contacts"
- android:versionCode="10503"
- android:versionName="1.5.3">
+ android:versionCode="10504"
+ android:versionName="1.5.4">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="23" />
<original-package android:name="com.android.contacts" />
diff --git a/res/drawable-v21/drawer_item_background.xml b/res/drawable-v21/drawer_item_background.xml
new file mode 100644
index 0000000..cfc7761
--- /dev/null
+++ b/res/drawable-v21/drawer_item_background.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ Copyright (C) 2016 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="@color/nav_item_selected_background">
+ <item>
+ <selector>
+ <item android:drawable="@color/nav_item_selected_background" android:state_checked="true"/>
+ <item android:drawable="@android:color/transparent"/>
+ </selector>
+ </item>
+</ripple>
\ No newline at end of file
diff --git a/res/drawable/drawer_item_background.xml b/res/drawable/drawer_item_background.xml
new file mode 100644
index 0000000..3ffe041
--- /dev/null
+++ b/res/drawable/drawer_item_background.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ Copyright (C) 2016 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_checked="true" android:drawable="@color/nav_item_selected_background"/>
+ <item android:drawable="@android:color/transparent" />
+</selector>
\ No newline at end of file
diff --git a/res/layout/contacts_drawer_activity.xml b/res/layout/contacts_drawer_activity.xml
index 008d4f5..ad68e84 100644
--- a/res/layout/contacts_drawer_activity.xml
+++ b/res/layout/contacts_drawer_activity.xml
@@ -57,6 +57,7 @@
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
+ app:itemBackground="@drawable/drawer_item_background"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"/>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 6a91140..8fa0e0d 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -21,6 +21,8 @@
<color name="action_bar_background">#0288d1</color>
+ <color name="nav_item_selected_background">#0f000000</color>
+
<color name="background_social_updates">#ffeeeeee</color>
<color name="action_bar_button_text_color">#FFFFFF</color>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4ba767d..12471ef 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -288,13 +288,6 @@
<!-- The text displayed when the contacts list is empty while displaying all contacts [CHAR LIMIT=NONE] -->
<string name="noContacts">No contacts</string>
- <!-- Label list header title with the number of members in the label. [CHAR LIMIT=30] -->
- <plurals name="group_members_count">
- <item quantity="zero">No contacts</item>
- <item quantity="one">1 contact</item>
- <item quantity="other"><xliff:g id="count">%d</xliff:g> contacts</item>
- </plurals>
-
<!-- The text displayed when the labels list is empty while displaying all labels [CHAR LIMIT=30] -->
<string name="noGroups">No labels.</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 36b04f9..246438d 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -173,7 +173,7 @@
</style>
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
- <item name="spinBars">true</item>
+ <item name="spinBars">false</item>
<item name="color">@android:color/white</item>
<item name="android:color">@android:color/white</item>
</style>
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 888db49..466aa91 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -25,6 +25,7 @@
import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.design.widget.NavigationView;
+import android.support.v4.content.ContextCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
@@ -36,10 +37,12 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
+import android.view.View;
import android.view.ViewGroup;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.compat.BlockedNumberContractCompat;
+import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.compat.TelecomManagerUtil;
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.ContactListFilterController;
@@ -49,6 +52,7 @@
import com.android.contacts.common.util.ViewUtil;
import com.android.contacts.editor.ContactEditorFragment;
import com.android.contacts.group.GroupListItem;
+import com.android.contacts.group.GroupMetadata;
import com.android.contacts.group.GroupUtil;
import com.android.contacts.group.GroupsFragment;
import com.android.contacts.group.GroupsFragment.GroupsListener;
@@ -59,7 +63,11 @@
import com.android.contactsbind.Assistants;
import com.android.contactsbind.HelpUtils;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
/**
* A common superclass for Contacts activities with a navigation drawer.
@@ -74,13 +82,63 @@
protected static final String GROUPS_TAG = "groups";
protected static final String FILTERS_TAG = "filters";
+ private class ContactsActionBarDrawerToggle extends ActionBarDrawerToggle {
+
+ private Runnable mRunnable;
+
+ public ContactsActionBarDrawerToggle(AppCompatActivity activity, DrawerLayout drawerLayout,
+ Toolbar toolbar, int openDrawerContentDescRes, int closeDrawerContentDescRes) {
+ super(activity, drawerLayout, toolbar, openDrawerContentDescRes,
+ closeDrawerContentDescRes);
+ }
+
+ @Override
+ public void onDrawerOpened(View drawerView) {
+ super.onDrawerOpened(drawerView);
+ invalidateOptionsMenu();
+ }
+
+ @Override
+ public void onDrawerClosed(View view) {
+ super.onDrawerClosed(view);
+ invalidateOptionsMenu();
+ }
+
+ @Override
+ public void onDrawerStateChanged(int newState) {
+ super.onDrawerStateChanged(newState);
+ // Set transparent status bar when drawer starts to move.
+ if (CompatUtils.isLollipopCompatible() && newState != DrawerLayout.STATE_IDLE
+ && getWindow().getStatusBarColor() == ContextCompat.getColor
+ (ContactsDrawerActivity.this, R.color.primary_color_dark)) {
+ getWindow().setStatusBarColor(Color.TRANSPARENT);
+ }
+ if (mRunnable != null && newState == DrawerLayout.STATE_IDLE) {
+ mRunnable.run();
+ mRunnable = null;
+ }
+ }
+
+ public void runWhenIdle(Runnable runnable) {
+ mRunnable = runnable;
+ }
+ }
+
protected ContactListFilterController mContactListFilterController;
protected DrawerLayout mDrawer;
+ protected ContactsActionBarDrawerToggle mToggle;
protected Toolbar mToolbar;
protected NavigationView mNavigationView;
protected GroupsFragment mGroupsFragment;
protected AccountFiltersFragment mAccountFiltersFragment;
+ // Checkable menu item lookup maps. Every map declared here should be added to
+ // clearCheckedMenus() so that they can be cleared.
+ // TODO find a better way to handle selected menu item state, when swicthing to fragments.
+ protected Map<Long, MenuItem> mGroupMenuMap = new HashMap<>();
+ protected Map<ContactListFilter, MenuItem> mFilterMenuMap = new HashMap<>();
+ protected Map<Integer, MenuItem> mIdMenuMap = new HashMap<>();
+
@Override
protected void onCreate(Bundle savedState) {
super.onCreate(savedState);
@@ -99,16 +157,20 @@
// Set up hamburger button.
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDrawer, mToolbar,
+ mToggle = new ContactsActionBarDrawerToggle(this, mDrawer, mToolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
- mDrawer.setDrawerListener(toggle);
- toggle.syncState();
+ mDrawer.setDrawerListener(mToggle);
+ mToggle.syncState();
// Set up hamburger menu items.
mNavigationView = (NavigationView) findViewById(R.id.nav_view);
mNavigationView.setNavigationItemSelectedListener(this);
final Menu menu = mNavigationView.getMenu();
+
+ final MenuItem allContacts = menu.findItem(R.id.nav_all_contacts);
+ mIdMenuMap.put(R.id.nav_all_contacts, allContacts);
+
final boolean showBlockedNumbers = PhoneCapabilityTester.isPhone(this)
&& ContactsUtils.FLAG_N_FEATURE
&& BlockedNumberContractCompat.canCurrentUserBlockNumbers(this);
@@ -119,6 +181,9 @@
if (Assistants.getDuplicatesActivityIntent(this) == null) {
menu.removeItem(R.id.nav_find_duplicates);
+ } else {
+ final MenuItem findDup = menu.findItem(R.id.nav_find_duplicates);
+ mIdMenuMap.put(R.id.nav_find_duplicates, findDup);
}
if (!HelpUtils.isHelpAndFeedbackAvailable()) {
@@ -126,6 +191,19 @@
}
loadGroupsAndFilters();
+
+ if (isDuplicatesActivity()) {
+ clearCheckedMenus();
+ mIdMenuMap.get(R.id.nav_find_duplicates).setCheckable(true);
+ mIdMenuMap.get(R.id.nav_find_duplicates).setChecked(true);
+ }
+ }
+
+ /**
+ * Returns true if child class is DuplicatesActivity
+ */
+ protected boolean isDuplicatesActivity() {
+ return false;
}
// Set up fragment manager to load groups and filters.
@@ -174,6 +252,7 @@
final MenuItem groupsMenuItem = menu.findItem(R.id.nav_groups);
final SubMenu subMenu = groupsMenuItem.getSubMenu();
subMenu.removeGroup(R.id.nav_groups_items);
+ mGroupMenuMap = new HashMap<>();
if (groupListItems != null) {
// Add each group
@@ -184,11 +263,18 @@
final String title = groupListItem.getTitle();
final MenuItem menuItem =
subMenu.add(R.id.nav_groups_items, Menu.NONE, Menu.NONE, title);
+ mGroupMenuMap.put(groupListItem.getGroupId(), menuItem);
menuItem.setIcon(R.drawable.ic_menu_label);
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- onGroupMenuItemClicked(groupListItem.getGroupId());
+ mToggle.runWhenIdle(new Runnable() {
+ @Override
+ public void run() {
+ onGroupMenuItemClicked(groupListItem.getGroupId());
+ }
+ });
+ mDrawer.closeDrawer(GravityCompat.START);
return true;
}
});
@@ -207,20 +293,48 @@
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- onCreateGroupMenuItemClicked();
+ mToggle.runWhenIdle(new Runnable() {
+ @Override
+ public void run() {
+ onCreateGroupMenuItemClicked();
+ }
+ });
+ mDrawer.closeDrawer(GravityCompat.START);
return true;
}
});
+
+ if (getGroupMetadata() != null) {
+ updateGroupMenu(getGroupMetadata());
+ }
+ }
+
+ protected void updateGroupMenu(GroupMetadata groupMetadata) {
+ clearCheckedMenus();
+ if (groupMetadata != null && mGroupMenuMap != null
+ && mGroupMenuMap.get(groupMetadata.groupId) != null) {
+ mGroupMenuMap.get(groupMetadata.groupId).setCheckable(true);
+ mGroupMenuMap.get(groupMetadata.groupId).setChecked(true);
+ }
+ }
+
+ /**
+ * Returns group metadata if the child class is {@link GroupMembersActivity}, and null
+ * otherwise.
+ */
+ protected GroupMetadata getGroupMetadata() {
+ return null;
}
protected void onGroupMenuItemClicked(long groupId) {
- final Intent intent = GroupUtil.createViewGroupIntent(this, groupId);
- startActivity(intent);
+ startActivity(GroupUtil.createViewGroupIntent(this, groupId));
+ if (shouldFinish()) {
+ finish();
+ }
}
protected void onCreateGroupMenuItemClicked() {
startActivity(GroupUtil.createAddGroupIntent(this));
- mDrawer.closeDrawer(GravityCompat.START);
}
@Override
@@ -229,6 +343,7 @@
final MenuItem filtersMenuItem = menu.findItem(R.id.nav_filters);
final SubMenu subMenu = filtersMenuItem.getSubMenu();
subMenu.removeGroup(R.id.nav_filters_items);
+ mFilterMenuMap = new HashMap<>();
if (accountFilterItems == null || accountFilterItems.size() < 2) {
return;
@@ -239,17 +354,24 @@
final String accountName = filter.accountName;
final MenuItem menuItem = subMenu.add(R.id.nav_filters_items, Menu.NONE, Menu.NONE,
accountName);
+ mFilterMenuMap.put(filter, menuItem);
final Intent intent = new Intent();
intent.putExtra(AccountFilterUtil.EXTRA_CONTACT_LIST_FILTER, filter);
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
+ mToggle.runWhenIdle(new Runnable() {
+ @Override
+ public void run() {
+ AccountFilterUtil.handleAccountFilterResult(
+ mContactListFilterController, AppCompatActivity.RESULT_OK,
+ intent);
+ if (shouldFinish()) {
+ finish();
+ }
+ }
+ });
mDrawer.closeDrawer(GravityCompat.START);
- AccountFilterUtil.handleAccountFilterResult(mContactListFilterController,
- AppCompatActivity.RESULT_OK, intent);
- if (shouldFinish()) {
- finish();
- }
return true;
}
});
@@ -257,34 +379,66 @@
// Get rid of the default memu item overlay and show original account icons.
menuItem.getIcon().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_ATOP);
}
+
+ if (getContactListFilter() != null) {
+ updateFilterMenu(getContactListFilter());
+ }
+ }
+
+ protected void updateFilterMenu(ContactListFilter filter) {
+ clearCheckedMenus();
+ if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
+ if (mIdMenuMap != null && mIdMenuMap.get(R.id.nav_all_contacts) != null) {
+ mIdMenuMap.get(R.id.nav_all_contacts).setCheckable(true);
+ mIdMenuMap.get(R.id.nav_all_contacts).setChecked(true);
+ }
+ } else {
+ if (mFilterMenuMap != null && mFilterMenuMap.get(filter) != null) {
+ mFilterMenuMap.get(filter).setCheckable(true);
+ mFilterMenuMap.get(filter).setChecked(true);
+ }
+ }
}
/**
- * @return true if the child activity should finish after launching another activity.
+ * Returns the current filter if the child class is {@link PeopleActivity}, and null otherwise.
+ */
+ protected ContactListFilter getContactListFilter() {
+ return null;
+ }
+
+ /**
+ * Returns true if the child activity should finish after launching another activity.
*/
protected abstract boolean shouldFinish();
@Override
- public boolean onNavigationItemSelected(MenuItem item) {
+ public boolean onNavigationItemSelected(final MenuItem item) {
final int id = item.getItemId();
- if (id == R.id.nav_settings) {
- startActivity(createPreferenceIntent());
- } else if (id == R.id.nav_help) {
- HelpUtils.launchHelpAndFeedbackForMainScreen(this);
- } else if (id == R.id.nav_all_contacts) {
- switchToAllContacts();
- } else if (id == R.id.nav_blocked_numbers) {
- final Intent intent = TelecomManagerUtil.createManageBlockedNumbersIntent(
- (TelecomManager) getSystemService(Context.TELECOM_SERVICE));
- ImplicitIntentsUtil.startActivityInApp(this, intent);
- } else if (id == R.id.nav_find_duplicates) {
- launchFindDuplicates();
- } else if (item.getIntent() != null) {
- ImplicitIntentsUtil.startActivityInApp(this, item.getIntent());
- } else {
- Log.w(TAG, "Unhandled navigation view item selection");
- }
+ mToggle.runWhenIdle(new Runnable() {
+ @Override
+ public void run() {
+ if (id == R.id.nav_settings) {
+ startActivity(createPreferenceIntent());
+ } else if (id == R.id.nav_help) {
+ HelpUtils.launchHelpAndFeedbackForMainScreen(ContactsDrawerActivity.this);
+ } else if (id == R.id.nav_all_contacts) {
+ switchToAllContacts();
+ } else if (id == R.id.nav_blocked_numbers) {
+ final Intent intent = TelecomManagerUtil.createManageBlockedNumbersIntent(
+ (TelecomManager) getSystemService(Context.TELECOM_SERVICE));
+ startActivity(intent);
+ } else if (id == R.id.nav_find_duplicates) {
+ launchFindDuplicates();
+ } else if (item.getIntent() != null) {
+ ImplicitIntentsUtil.startActivityInApp(ContactsDrawerActivity.this,
+ item.getIntent());
+ } else {
+ Log.w(TAG, "Unhandled navigation view item selection");
+ }
+ }
+ });
mDrawer.closeDrawer(GravityCompat.START);
return true;
@@ -307,6 +461,9 @@
intent.putExtra(AccountFilterUtil.EXTRA_CONTACT_LIST_FILTER, filter);
AccountFilterUtil.handleAccountFilterResult(
mContactListFilterController, AppCompatActivity.RESULT_OK, intent);
+ if (shouldFinish()) {
+ finish();
+ }
}
protected void launchFindDuplicates() {
@@ -318,4 +475,18 @@
return ContactListFilter.createFilterWithType(ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
}
+ private void clearCheckedMenus() {
+ clearCheckedMenu(mFilterMenuMap);
+ clearCheckedMenu(mGroupMenuMap);
+ clearCheckedMenu(mIdMenuMap);
+ }
+
+ private void clearCheckedMenu(Map<?, MenuItem> map) {
+ final Iterator it = map.entrySet().iterator();
+ while (it.hasNext()) {
+ Entry pair = (Entry)it.next();
+ map.get(pair.getKey()).setCheckable(false);
+ map.get(pair.getKey()).setChecked(false);
+ }
+ }
}
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 047be6a..3723d52 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -81,7 +81,6 @@
private boolean mSelectionMode;
private boolean mSearchMode;
- private boolean mTransparentStatuBar;
private String mQueryString;
private EditText mSearchView;
@@ -315,11 +314,6 @@
return mSelectionMode;
}
- /** Whether to make the status bar transparent. */
- public void setTransparentStatuBar(boolean flag) {
- mTransparentStatuBar = flag;
- }
-
public void setSearchMode(boolean flag) {
if (mSearchMode != flag) {
mSearchMode = flag;
@@ -523,12 +517,10 @@
final int cabStatusBarColor = mActivity.getResources().getColor(
R.color.contextual_selection_bar_status_bar_color);
mActivity.getWindow().setStatusBarColor(cabStatusBarColor);
- } else if (!mTransparentStatuBar) {
+ } else {
final int normalStatusBarColor = ContextCompat.getColor(
mActivity, R.color.primary_color_dark);
mActivity.getWindow().setStatusBarColor(normalStatusBarColor);
- } else {
- mActivity.getWindow().setStatusBarColor(Color.TRANSPARENT);
}
}
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 71ab0e7..22d9f7a 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -148,7 +148,6 @@
R.string.enter_contact_name);
mActionBarAdapter.setShowHomeIcon(true);
mActionBarAdapter.setShowHomeAsUp(true);
- mActionBarAdapter.setTransparentStatuBar(false);
mActionBarAdapter.initialize(savedState, mRequest);
// Postal address pickers (and legacy pickers) don't support search, so just show
diff --git a/src/com/android/contacts/activities/GroupMembersActivity.java b/src/com/android/contacts/activities/GroupMembersActivity.java
index 6ba354b..1511849 100644
--- a/src/com/android/contacts/activities/GroupMembersActivity.java
+++ b/src/com/android/contacts/activities/GroupMembersActivity.java
@@ -359,9 +359,7 @@
protected void onGroupMenuItemClicked(long groupId) {
if (mGroupMetadata.groupId != groupId) {
super.onGroupMenuItemClicked(groupId);
- finish();
}
- mDrawer.closeDrawer(GravityCompat.START);
}
@Override
@@ -370,12 +368,6 @@
}
@Override
- protected void switchToAllContacts() {
- super.switchToAllContacts();
- finish();
- }
-
- @Override
protected void launchFindDuplicates() {
super.launchFindDuplicates();
finish();
@@ -520,6 +512,7 @@
} else if (mActionBarAdapter.isSearchMode()) {
mActionBarAdapter.setSearchMode(false);
} else {
+ switchToAllContacts();
super.onBackPressed();
}
}
@@ -675,6 +668,9 @@
@Override
public void onGroupMetadataLoaded(GroupMetadata groupMetadata) {
mGroupMetadata = groupMetadata;
+
+ updateGroupMenu(mGroupMetadata);
+
if (!mIsInsertAction) {
setActionBarTitle(mGroupMetadata.groupName);
}
@@ -694,6 +690,11 @@
}
@Override
+ protected GroupMetadata getGroupMetadata() {
+ return mGroupMetadata;
+ }
+
+ @Override
public void onGroupMemberListItemClicked(int position, Uri contactLookupUri) {
final int count = mMembersFragment.getAdapter().getCount();
Logger.logListEvent(ListEvent.ActionType.CLICK, ListEvent.ListType.GROUP, count,
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 5e882f8..4d827bd 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -852,13 +852,6 @@
}
@Override
- protected void onGroupMenuItemClicked(long groupId) {
- switchToAllContacts();
- super.onGroupMenuItemClicked(groupId);
- mDrawer.closeDrawer(GravityCompat.START);
- }
-
- @Override
public void onProviderStatusChange() {
reloadGroupsAndFiltersIfNeeded();
updateViewConfiguration(false);
@@ -1392,6 +1385,9 @@
final int listType = filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS
? ListEvent.ListType.ALL_CONTACTS : ListEvent.ListType.ACCOUNT;
mAllFragment.setListType(listType);
+
+ updateFilterMenu(filter);
+
if (getSupportActionBar() != null) {
final String actionBarTitle = TextUtils.isEmpty(filter.accountName) ?
getString(R.string.contactsList) : filter.accountName;
@@ -1413,4 +1409,9 @@
protected boolean shouldFinish() {
return false;
}
+
+ @Override
+ protected ContactListFilter getContactListFilter() {
+ return mContactListFilterController.getFilter();
+ }
}
diff --git a/src/com/android/contacts/group/GroupMembersFragment.java b/src/com/android/contacts/group/GroupMembersFragment.java
index 45a3834..98d66b4 100644
--- a/src/com/android/contacts/group/GroupMembersFragment.java
+++ b/src/com/android/contacts/group/GroupMembersFragment.java
@@ -285,8 +285,8 @@
final TextView accountFilterHeader = (TextView) accountFilterContainer.findViewById(
R.id.account_filter_header);
- accountFilterHeader.setText(getResources().getQuantityString(
- R.plurals.group_members_count, memberCount, memberCount));
+ accountFilterHeader.setText(mGroupMetadata.accountName);
+ accountFilterHeader.setAllCaps(false);
} else {
accountFilterContainer.setVisibility(View.GONE);
}
diff --git a/src/com/android/contacts/list/GroupMemberPickerFragment.java b/src/com/android/contacts/list/GroupMemberPickerFragment.java
index 362ff80..f4dde36 100644
--- a/src/com/android/contacts/list/GroupMemberPickerFragment.java
+++ b/src/com/android/contacts/list/GroupMemberPickerFragment.java
@@ -28,6 +28,7 @@
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.TextView;
import com.android.contacts.activities.ContactSelectionActivity;
import com.android.contacts.common.R;
@@ -185,6 +186,7 @@
setPhotoLoaderEnabled(true);
setSectionHeaderDisplayEnabled(true);
setHasOptionsMenu(true);
+ setDisplayDirectoryHeader(false);
}
@Override
@@ -227,6 +229,15 @@
// Wait until contacts are loaded before showing the scrollbar
setVisibleScrollbarEnabled(true);
+ // Bind account filter header.
+ final View accountFilterContainer = getView().findViewById(
+ R.id.account_filter_header_container);
+ accountFilterContainer.setVisibility(View.VISIBLE);
+ final TextView accountFilterHeader = (TextView) accountFilterContainer.findViewById(
+ R.id.account_filter_header);
+ accountFilterHeader.setText(mAccountName);
+ accountFilterHeader.setAllCaps(false);
+
super.onLoadFinished(loader, new FilterCursorWrapper(data));
}
}