Move 5 overflow menu items to hamburger menu
- basically get rid of the overflow menu in PeopleActivity
when not in selection mode (and when exporting database)
- put "settings" and "help & feedback" below groups
- hide group count per UX
We will then work on displaying account list in hamburger menu
and moving import/export to settings.
Bug 27687799
Change-Id: I2d65f78abaadc300263fdb6b4e7a72b24f36975b
diff --git a/res/drawable/ic_menu_blocked_numbers.xml b/res/drawable/ic_menu_blocked_numbers.xml
new file mode 100644
index 0000000..9e03397
--- /dev/null
+++ b/res/drawable/ic_menu_blocked_numbers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_menu_duplicates.xml b/res/drawable/ic_menu_duplicates.xml
new file mode 100644
index 0000000..a604d47
--- /dev/null
+++ b/res/drawable/ic_menu_duplicates.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/>
+</vector>
diff --git a/res/drawable/ic_menu_filter.xml b/res/drawable/ic_menu_filter.xml
new file mode 100644
index 0000000..5a38952
--- /dev/null
+++ b/res/drawable/ic_menu_filter.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M20 0H4v2h16V0zM4 24h16v-2H4v2zM20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 2.75c1.24 0 2.25 1.01 2.25 2.25s-1.01 2.25-2.25 2.25S9.75 10.24 9.75 9 10.76 6.75 12 6.75zM17 17H7v-1.5c0-1.67 3.33-2.5 5-2.5s5 .83 5 2.5V17z"/>
+</vector>
diff --git a/res/drawable/ic_menu_group_add.xml b/res/drawable/ic_menu_group_add.xml
new file mode 100644
index 0000000..786d3e5
--- /dev/null
+++ b/res/drawable/ic_menu_group_add.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
+</vector>
diff --git a/res/drawable/ic_menu_import_export.xml b/res/drawable/ic_menu_import_export.xml
new file mode 100644
index 0000000..9a143c0
--- /dev/null
+++ b/res/drawable/ic_menu_import_export.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>
+</vector>
diff --git a/res/drawable/ic_menu_label.xml b/res/drawable/ic_menu_label.xml
new file mode 100644
index 0000000..05e665f
--- /dev/null
+++ b/res/drawable/ic_menu_label.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z"/>
+</vector>
diff --git a/res/menu/activity_main_drawer.xml b/res/menu/activity_main_drawer.xml
index 0a0eef2..469a7b8 100644
--- a/res/menu/activity_main_drawer.xml
+++ b/res/menu/activity_main_drawer.xml
@@ -18,11 +18,38 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <group android:id="@+id/misc">
+ <group android:id="@+id/nav_utilities">
+ <item
+ android:id="@+id/nav_contacts_filter"
+ android:icon="@drawable/ic_menu_filter"
+ android:title="@string/menu_contacts_filter" />
+ <item
+ android:id="@+id/nav_import_export"
+ android:icon="@drawable/ic_menu_import_export"
+ android:title="@string/menu_import_export"/>
+ <item
+ android:id="@+id/nav_accounts"
+ android:icon="@drawable/ic_account_circle_black_24dp"
+ android:title="@string/menu_accounts"/>
+ <item
+ android:id="@+id/nav_blocked_numbers"
+ android:icon="@drawable/ic_menu_blocked_numbers"
+ android:title="@string/menu_blocked_numbers"/>
+ <item
+ android:id="@+id/nav_find_duplicates"
+ android:icon="@drawable/ic_menu_duplicates"
+ android:title="@string/menu_duplicates"/>
+ </group>
+
+ <group android:id="@+id/nav_misc">
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_menu_settings"
android:title="@string/menu_settings"/>
+ <item
+ android:id="@+id/nav_help"
+ android:icon="@drawable/ic_menu_help"
+ android:title="@string/menu_help"/>
</group>
</menu>
diff --git a/res/menu/people_options.xml b/res/menu/people_options.xml
index 7bcd750..46d6856 100644
--- a/res/menu/people_options.xml
+++ b/res/menu/people_options.xml
@@ -22,22 +22,6 @@
contacts:showAsAction="ifRoom" />
<item
- android:id="@+id/menu_contacts_filter"
- android:title="@string/menu_contacts_filter" />
-
- <item
- android:id="@+id/menu_import_export"
- android:title="@string/menu_import_export" />
-
- <item
- android:id="@+id/menu_blocked_numbers"
- android:title="@string/menu_blocked_numbers"/>
-
- <item
- android:id="@+id/menu_accounts"
- android:title="@string/menu_accounts" />
-
- <item
android:id="@+id/export_database"
android:title="@string/menu_export_database"
android:visible="false"
@@ -55,8 +39,4 @@
android:id="@+id/menu_share"
android:title="@string/menu_share" />
- <item
- android:id="@+id/menu_duplicates"
- android:title="@string/menu_duplicates" />
-
</menu>
diff --git a/res/values/ids.xml b/res/values/ids.xml
index 88a64c8..b0470b5 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -44,6 +44,12 @@
<!-- An ID to be used for contents of a custom dialog so that its state be preserved -->
<item type="id" name="custom_dialog_content" />
- <!-- Menu ID for the contact groups -->
+ <!-- Menu group ID for settings and help & feedback -->
+ <item type="id" name="nav_misc" />
+
+ <!-- Menu group ID for the contact groups -->
<item type="id" name="nav_groups" />
+
+ <!-- Menu group ID for "create new group" -->
+ <item type="id" name="nav_create_groups" />
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 711caae..2e1b857 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -145,7 +145,7 @@
<string name="menu_new_contact_action_bar">Add Contact</string>
<!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
- <string name="menu_new_group_action_bar">Add Group</string>
+ <string name="menu_new_group_action_bar">Create new...</string>
<!-- Confirmation dialog for unlinking contacts into multiple instances [CHAR LIMIT=NONE] -->
<string name="splitConfirmation">Unlink this contact into multiple contacts?</string>
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 4a09cd1..5b2d52a 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -343,13 +343,23 @@
mNavigationView.setNavigationItemSelectedListener(this);
final Menu menu = mNavigationView.getMenu();
- if (HelpUtils.isHelpAndFeedbackAvailable()) {
- final MenuItem menuItem = menu.add(/* groupId */ R.id.misc, /* itemId */ R.id.nav_help,
- /* order */ Menu.NONE, /* titleRes */ R.string.menu_help);
- menuItem.setIcon(R.drawable.ic_menu_help);
+
+ final boolean showBlockedNumbers = PhoneCapabilityTester.isPhone(this)
+ && ContactsUtils.FLAG_N_FEATURE
+ && BlockedNumberContractCompat.canCurrentUserBlockNumbers(this);
+
+ if (!showBlockedNumbers) {
+ menu.removeItem(R.id.nav_blocked_numbers);
}
- final String FAVORITE_TAG = "tab-pager-favorite";
+ if (Assistants.getDuplicatesActivityIntent(this) == null) {
+ menu.removeItem(R.id.nav_find_duplicates);
+ }
+
+ if (!HelpUtils.isHelpAndFeedbackAvailable()) {
+ menu.removeItem(R.id.nav_help);
+ }
+
final String ALL_TAG = "tab-pager-all";
final String GROUPS_TAG = "groups";
@@ -896,17 +906,34 @@
// Add each group
for (GroupListItem groupListItem : groupListItems) {
- final String title = groupListItem.getMemberCount() == 0 ? groupListItem.getTitle()
- : getString(R.string.group_name_menu_item, groupListItem.getTitle(),
- groupListItem.getMemberCount());
+ final String title = groupListItem.getTitle();
final MenuItem menuItem = menu.add(R.id.nav_groups, Menu.NONE, Menu.NONE, title);
menuItem.setIntent(GroupUtil.createViewGroupIntent(this, groupListItem.getGroupId()));
+ menuItem.setIcon(R.drawable.ic_menu_label);
}
+ menu.removeGroup(R.id.nav_create_groups);
// Create a menu item to add new groups
- final MenuItem menuItem = menu.add(R.id.nav_groups, Menu.NONE, Menu.NONE,
+ final MenuItem menuItem = menu.add(R.id.nav_create_groups, Menu.NONE, Menu.NONE,
getString(R.string.menu_new_group_action_bar));
menuItem.setIntent(GroupUtil.createAddGroupIntent(this));
+ menuItem.setIcon(R.drawable.ic_menu_group_add);
+
+ // Add misc menu items below the group of groups menu items
+ addMiscMenuItems();
+ }
+
+ private void addMiscMenuItems() {
+ final Menu menu = mNavigationView.getMenu();
+ menu.removeGroup(R.id.nav_misc);
+ final MenuItem settingsItem = menu.add(R.id.nav_misc, R.id.nav_settings, Menu.NONE,
+ R.string.menu_settings);
+ settingsItem.setIcon(R.drawable.ic_menu_settings);
+ if (HelpUtils.isHelpAndFeedbackAvailable()) {
+ final MenuItem helpItem = menu.add(R.id.nav_misc, R.id.nav_help, Menu.NONE,
+ R.string.menu_help);
+ helpItem.setIcon(R.drawable.ic_menu_help);
+ }
}
@Override
@@ -1092,30 +1119,9 @@
return false;
}
- // Get references to individual menu items in the menu
- final MenuItem contactsFilterMenu = menu.findItem(R.id.menu_contacts_filter);
-
final boolean isSearchOrSelectionMode = mActionBarAdapter.isSearchMode()
|| mActionBarAdapter.isSelectionMode();
- if (isSearchOrSelectionMode) {
- contactsFilterMenu.setVisible(false);
- } else {
- switch (getTabPositionForTextDirection(mActionBarAdapter.getCurrentTab())) {
- case TabState.ALL:
- contactsFilterMenu.setVisible(true);
- break;
- }
- }
- final boolean showMiscOptions = !isSearchOrSelectionMode;
- final boolean showBlockedNumbers = PhoneCapabilityTester.isPhone(this)
- && ContactsUtils.FLAG_N_FEATURE
- && BlockedNumberContractCompat.canCurrentUserBlockNumbers(this);
- makeMenuItemVisible(menu, R.id.menu_search, showMiscOptions);
- makeMenuItemVisible(menu, R.id.menu_import_export, showMiscOptions);
- makeMenuItemVisible(menu, R.id.menu_accounts, showMiscOptions);
- makeMenuItemVisible(menu, R.id.menu_blocked_numbers, showMiscOptions && showBlockedNumbers);
- makeMenuItemVisible(menu, R.id.menu_duplicates,
- showMiscOptions && Assistants.getDuplicatesActivityIntent(this) != null);
+ makeMenuItemVisible(menu, R.id.menu_search, !isSearchOrSelectionMode);
final boolean showSelectedContactOptions = mActionBarAdapter.isSelectionMode()
&& mAllFragment.getSelectedContactIds().size() != 0;
@@ -1162,50 +1168,21 @@
}
return true;
}
- case R.id.menu_contacts_filter: {
- AccountFilterUtil.startAccountFilterActivityForResult(
- this, SUBACTIVITY_ACCOUNT_FILTER,
- mContactListFilterController.getFilter());
- return true;
- }
case R.id.menu_search: {
onSearchRequested();
return true;
}
- case R.id.menu_share:
+ case R.id.menu_share: {
shareSelectedContacts();
return true;
- case R.id.menu_join:
+ }
+ case R.id.menu_join: {
joinSelectedContacts();
return true;
- case R.id.menu_delete:
+ }
+ case R.id.menu_delete: {
deleteSelectedContacts();
return true;
- case R.id.menu_import_export: {
- showImportExportDialogFragment();
- return true;
- }
- case R.id.menu_accounts: {
- final Intent intent = new Intent(Settings.ACTION_SYNC_SETTINGS);
- intent.putExtra(Settings.EXTRA_AUTHORITIES, new String[] {
- ContactsContract.AUTHORITY
- });
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
- ImplicitIntentsUtil.startActivityInAppIfPossible(this, intent);
- return true;
- }
- case R.id.menu_blocked_numbers: {
- final Intent intent = TelecomManagerUtil.createManageBlockedNumbersIntent(
- (TelecomManager) getSystemService(Context.TELECOM_SERVICE));
- if (intent != null) {
- startActivity(intent);
- }
- return true;
- }
- case R.id.menu_duplicates: {
- ImplicitIntentsUtil.startActivityInAppIfPossible(this,
- Assistants.getDuplicatesActivityIntent(this));
- return true;
}
case R.id.export_database: {
final Intent intent = new Intent("com.android.providers.contacts.DUMP_DATABASE");
@@ -1226,6 +1203,28 @@
startActivity(new Intent(this, ContactsPreferenceActivity.class));
} else if (id == R.id.nav_help) {
HelpUtils.launchHelpAndFeedbackForMainScreen(this);
+ } else if (id == R.id.nav_contacts_filter) {
+ AccountFilterUtil.startAccountFilterActivityForResult(
+ this, SUBACTIVITY_ACCOUNT_FILTER,
+ mContactListFilterController.getFilter());
+ } else if (id == R.id.nav_import_export) {
+ showImportExportDialogFragment();
+ } else if (id == R.id.nav_accounts) {
+ final Intent intent = new Intent(Settings.ACTION_SYNC_SETTINGS);
+ intent.putExtra(Settings.EXTRA_AUTHORITIES, new String[] {
+ ContactsContract.AUTHORITY
+ });
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+ ImplicitIntentsUtil.startActivityInAppIfPossible(this, intent);
+ } else if (id == R.id.nav_blocked_numbers) {
+ final Intent intent = TelecomManagerUtil.createManageBlockedNumbersIntent(
+ (TelecomManager) getSystemService(Context.TELECOM_SERVICE));
+ if (intent != null) {
+ startActivity(intent);
+ }
+ } else if (id == R.id.nav_find_duplicates) {
+ ImplicitIntentsUtil.startActivityInAppIfPossible(this,
+ Assistants.getDuplicatesActivityIntent(this));
} else if (item.getIntent() != null) {
ImplicitIntentsUtil.startActivityInApp(this, item.getIntent());
} else {