Set action bar title in fragment rather than PeopleActivity
Bug: 31920908
Bug: 30944495
Test: manual - follow steps to repro in the bug and navigate b/w
fragments (tested all acounts incl. Device).
Change-Id: I085628bd98685f9d1f07cf3c526d36b4127f5376
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 3488c53..2674d5c 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -845,16 +845,7 @@
mShouldSwitchToAllContacts = true;
}
- // Set title and check menu in navigation drawer.
- final String actionBarTitle;
- if (filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS) {
- actionBarTitle = getString(R.string.account_phone);
- } else if (!TextUtils.isEmpty(filter.accountName)) {
- actionBarTitle = getActionBarTitleForAccount(filter);
- } else {
- actionBarTitle = getString(R.string.contactsList);
- }
- setTitle(actionBarTitle);
+ // Check menu in navigation drawer.
updateFilterMenu(filter);
if (CompatUtils.isNCompatible()) {
@@ -863,15 +854,4 @@
}
invalidateOptionsMenu();
}
-
- private String getActionBarTitleForAccount(ContactListFilter filter) {
- final AccountDisplayInfoFactory factory = AccountDisplayInfoFactory
- .forAllAccounts(this);
- final AccountDisplayInfo account = factory.getAccountDisplayInfoFor(filter);
- if (account.hasGoogleAccountType()) {
- return getString(R.string.title_from_google);
- }
- return account.withFormattedName(this, R.string.title_from_other_accounts)
- .getNameLabel().toString();
- }
}
diff --git a/src/com/android/contacts/common/util/AccountFilterUtil.java b/src/com/android/contacts/common/util/AccountFilterUtil.java
index 655ebaf..b89e8b9 100644
--- a/src/com/android/contacts/common/util/AccountFilterUtil.java
+++ b/src/com/android/contacts/common/util/AccountFilterUtil.java
@@ -26,6 +26,7 @@
import android.graphics.drawable.Drawable;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Intents;
+import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
@@ -35,6 +36,8 @@
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.ContactListFilterController;
import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountDisplayInfo;
+import com.android.contacts.common.model.account.AccountDisplayInfoFactory;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.preference.ContactsPreferences;
@@ -209,4 +212,27 @@
public static boolean isDeviceContactsFilter(ContactListFilter filter) {
return filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS;
}
+
+ /**
+ * Returns action bar title for filter and returns default title "Contacts" if filter is empty.
+ */
+ public static String getActionBarTitleForFilter(Context context, ContactListFilter filter) {
+ if (filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS) {
+ return context.getString(R.string.account_phone);
+ } else if (!TextUtils.isEmpty(filter.accountName)) {
+ return getActionBarTitleForAccount(context, filter);
+ }
+ return context.getString(R.string.contactsList);
+ }
+
+ private static String getActionBarTitleForAccount(Context context, ContactListFilter filter) {
+ final AccountDisplayInfoFactory factory =
+ AccountDisplayInfoFactory.forAllAccounts(context);
+ final AccountDisplayInfo account = factory.getAccountDisplayInfoFor(filter);
+ if (account.hasGoogleAccountType()) {
+ return context.getString(R.string.title_from_google);
+ }
+ return account.withFormattedName(context, R.string.title_from_other_accounts)
+ .getNameLabel().toString();
+ }
}
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index a336e09..c9c5915 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -689,6 +689,7 @@
private void setFilterAndUpdateTitle(ContactListFilter filter, boolean restoreSelectedUri) {
setContactListFilter(filter);
updateListFilter(filter, restoreSelectedUri);
+ mActivity.setTitle(AccountFilterUtil.getActionBarTitleForFilter(mActivity, filter));
// Determine whether the account has pullToRefresh feature
if (Flags.getInstance(getContext()).getBoolean(Experiments.PULL_TO_REFRESH)) {