Fix title when account screen is opened from group.
The activity title would remain as the group title if an account was selected
from the nav drawer while viewing a group.
Test
Manual:
* view a group
* switch to an account
* verify that title is correct
Bug 32223767
Change-Id: I2bbb8887db26d26174daf2ae089f29a87c38ccc1
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index caaa326..497295d 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -420,8 +420,7 @@
mToggle.runWhenIdle(new Runnable() {
@Override
public void run() {
- onGroupMenuItemClicked(groupListItem.getGroupId(),
- groupListItem.getTitle());
+ onGroupMenuItemClicked(groupListItem);
updateMenuSelection(menuItem);
}
});
@@ -492,7 +491,7 @@
return isGroupView() || isAssistantView();
}
- protected abstract void onGroupMenuItemClicked(long groupId, String title);
+ protected abstract void onGroupMenuItemClicked(GroupListItem group);
protected void onCreateGroupMenuItemClicked() {
// Select the account to create the group
@@ -587,6 +586,7 @@
}
protected void onFilterMenuItemClicked(Intent intent) {
+ resetFilter();
AccountFilterUtil.handleAccountFilterResult(mContactListFilterController,
AppCompatActivity.RESULT_OK, intent);
}
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index cefbe1f..81e6af0 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -22,7 +22,6 @@
import android.app.FragmentTransaction;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
-import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -30,7 +29,6 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
-import android.provider.ContactsContract;
import android.provider.ContactsContract.ProviderStatus;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
@@ -67,6 +65,7 @@
import com.android.contacts.common.util.Constants;
import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.common.widget.FloatingActionButtonController;
+import com.android.contacts.group.GroupListItem;
import com.android.contacts.group.GroupMembersFragment;
import com.android.contacts.group.GroupMetaData;
import com.android.contacts.group.GroupUtil;
@@ -745,12 +744,18 @@
}
@Override
- protected void onGroupMenuItemClicked(long groupId, String title) {
+ protected void onGroupMenuItemClicked(GroupListItem group) {
if (isGroupView() && mMembersFragment != null
- && mMembersFragment.isCurrentGroup(groupId)) {
+ && mMembersFragment.isCurrentGroup(group.getGroupId())) {
return;
}
- mGroupUri = ContentUris.withAppendedId(ContactsContract.Groups.CONTENT_URI, groupId);
+ mGroupUri = group.getUri();
+ // Set the filter. This isn't used by the GroupMembersFragment but makes sure that the
+ // filter will change when switching to a different view from the GroupMembersFragment.
+ mContactListFilterController.setContactListFilter(
+ ContactListFilter.createGroupMembersFilter(group.getAccountName(),
+ group.getAccountType(), group.getDataSet()), /* persistent */ false,
+ /* notifyListeners */ false);
switchToOrUpdateGroupView(GroupUtil.ACTION_SWITCH_GROUP);
}
diff --git a/src/com/android/contacts/common/list/ContactListFilterController.java b/src/com/android/contacts/common/list/ContactListFilterController.java
index 4d3d6ad..36e740f 100644
--- a/src/com/android/contacts/common/list/ContactListFilterController.java
+++ b/src/com/android/contacts/common/list/ContactListFilterController.java
@@ -71,6 +71,9 @@
*/
public abstract void setContactListFilter(ContactListFilter filter, boolean persistent);
+ public abstract void setContactListFilter(ContactListFilter filter, boolean persistent,
+ boolean notifyListeners);
+
public abstract void selectCustomFilter();
/**
@@ -139,7 +142,8 @@
setContactListFilter(filter, persistent, /* notifyListeners */ true);
}
- private void setContactListFilter(ContactListFilter filter, boolean persistent,
+ @Override
+ public void setContactListFilter(ContactListFilter filter, boolean persistent,
boolean notifyListeners) {
if (!filter.equals(mFilter)) {
mFilter = filter;
diff --git a/src/com/android/contacts/group/GroupListItem.java b/src/com/android/contacts/group/GroupListItem.java
index f2359b6..2906821 100644
--- a/src/com/android/contacts/group/GroupListItem.java
+++ b/src/com/android/contacts/group/GroupListItem.java
@@ -15,6 +15,10 @@
*/
package com.android.contacts.group;
+import android.content.ContentUris;
+import android.net.Uri;
+import android.provider.ContactsContract;
+
/**
* Meta-data for a contact group. We load all groups associated with the contact's
* constituent accounts.
@@ -83,4 +87,8 @@
public String getSystemId() {
return mSystemId;
}
+
+ public Uri getUri() {
+ return ContentUris.withAppendedId(ContactsContract.Groups.CONTENT_URI, mGroupId);
+ }
}
\ No newline at end of file