First pass on assistants left nav
Create new assistant and remove duplicates menu item for
Google Contacts. Duplicates will live in the new assistants
fragment.
Test: manual
- Open left nav to see new Assistant
- Click on assistant to view new section
Bug:31822010
Change-Id: I0b9d77dd73e45c12fa3853864d09f555563def9a
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 3fc3c9d..68b9884 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -20,13 +20,13 @@
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
+import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.provider.ContactsContract.Intents;
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;
@@ -49,6 +49,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.AccountWithDataSet;
import com.android.contacts.common.preference.ContactsPreferenceActivity;
import com.android.contacts.common.util.AccountFilterUtil;
@@ -69,8 +71,6 @@
import com.android.contacts.interactions.AccountFiltersFragment.AccountFiltersListener;
import com.android.contacts.list.DefaultContactBrowseListFragment;
import com.android.contacts.list.MultiSelectContactsListFragment;
-import com.android.contacts.common.model.account.AccountDisplayInfo;
-import com.android.contacts.common.model.account.AccountDisplayInfoFactory;
import com.android.contacts.util.SharedPreferenceUtil;
import com.android.contactsbind.HelpUtils;
import com.android.contactsbind.ObjectFactory;
@@ -94,7 +94,7 @@
public enum ContactsView {
NONE,
ALL_CONTACTS,
- DUPLICATES,
+ ASSISTANT,
GROUP_VIEW,
ACCOUNT_VIEW,
}
@@ -223,8 +223,15 @@
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
mToggle = new ContactsActionBarDrawerToggle(this, mDrawer, mToolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
+
mDrawer.setDrawerListener(mToggle);
- mToggle.syncState();
+ // Set fallback handler for when drawer is disabled.
+ mToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ onBackPressed();
+ }
+ });
// Set up navigation mode.
if (savedState != null) {
@@ -246,16 +253,32 @@
}
}
+ public void setDrawerLockMode(boolean enabled) {
+ // Prevent drawer from being opened by sliding from the start of screen.
+ mDrawer.setDrawerLockMode(enabled ? DrawerLayout.LOCK_MODE_UNLOCKED
+ : DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
+
+ // Order of these statements matter.
+ // Display back button and disable drawer indicator.
+ if (enabled) {
+ getSupportActionBar().setDisplayHomeAsUpEnabled(false);
+ mToggle.setDrawerIndicatorEnabled(true);
+ } else {
+ mToggle.setDrawerIndicatorEnabled(false);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
private void setUpMenu() {
final Menu menu = mNavigationView.getMenu();
- if (ObjectFactory.getDuplicatesFragment() == null) {
- menu.removeItem(R.id.nav_find_duplicates);
+ if (ObjectFactory.getAssistantFragment() == null) {
+ menu.removeItem(R.id.nav_assistant);
} else {
- final MenuItem findDupMenu = menu.findItem(R.id.nav_find_duplicates);
- mIdMenuMap.put(R.id.nav_find_duplicates, findDupMenu);
- if (isDuplicatesView()) {
- updateMenuSelection(findDupMenu);
+ final MenuItem assistantMenu = menu.findItem(R.id.nav_assistant);
+ mIdMenuMap.put(R.id.nav_assistant, assistantMenu);
+ if (isAssistantView()) {
+ updateMenuSelection(assistantMenu);
}
}
@@ -306,6 +329,18 @@
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
+ @Override
+ protected void onPostCreate(Bundle savedInstanceState) {
+ super.onPostCreate(savedInstanceState);
+ mToggle.syncState();
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ mToggle.onConfigurationChanged(newConfig);
+ }
+
// Set up fragment manager to load groups and filters.
protected void loadGroupsAndFilters() {
final FragmentManager fragmentManager = getFragmentManager();
@@ -429,8 +464,8 @@
return mCurrentView == ContactsView.GROUP_VIEW;
}
- protected boolean isDuplicatesView() {
- return mCurrentView == ContactsView.DUPLICATES;
+ protected boolean isAssistantView() {
+ return mCurrentView == ContactsView.ASSISTANT;
}
protected boolean isAllContactsView() {
@@ -442,7 +477,7 @@
}
public boolean isInSecondLevel() {
- return isGroupView() || isDuplicatesView();
+ return isGroupView() || isAssistantView();
}
protected abstract void onGroupMenuItemClicked(long groupId, String title);
@@ -556,9 +591,9 @@
HelpUtils.launchHelpAndFeedbackForMainScreen(ContactsDrawerActivity.this);
} else if (id == R.id.nav_all_contacts) {
switchToAllContacts();
- } else if (id == R.id.nav_find_duplicates) {
- if (!isDuplicatesView()) {
- launchFindDuplicates();
+ } else if (id == R.id.nav_assistant) {
+ if (!isAssistantView()) {
+ launchAssistant();
updateMenuSelection(item);
}
} else if (item.getIntent() != null) {
@@ -599,7 +634,7 @@
mContactListFilterController, AppCompatActivity.RESULT_OK, intent);
}
- protected abstract void launchFindDuplicates();
+ protected abstract void launchAssistant();
protected abstract DefaultContactBrowseListFragment getAllFragment();