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();