Merge "FloatingToolbar: Rules for ordering menu items." into oc-dev

This commit is contained in:
Abodunrinwa Toki
2017-04-18 12:58:27 +00:00
committed by Android (Google) Code Review
4 changed files with 118 additions and 6 deletions

View File

@@ -146,7 +146,7 @@ public class Editor {
private static final String UNDO_OWNER_TAG = "Editor";
// Ordering constants used to place the Action Mode or context menu items in their menu.
private static final int MENU_ITEM_ORDER_ASSIST = 1;
private static final int MENU_ITEM_ORDER_ASSIST = 0;
private static final int MENU_ITEM_ORDER_UNDO = 2;
private static final int MENU_ITEM_ORDER_REDO = 3;
private static final int MENU_ITEM_ORDER_CUT = 4;
@@ -156,8 +156,8 @@ public class Editor {
private static final int MENU_ITEM_ORDER_PASTE_AS_PLAIN_TEXT = 8;
private static final int MENU_ITEM_ORDER_SELECT_ALL = 9;
private static final int MENU_ITEM_ORDER_REPLACE = 10;
private static final int MENU_ITEM_ORDER_PROCESS_TEXT_INTENT_ACTIONS_START = 11;
private static final int MENU_ITEM_ORDER_AUTOFILL = 12;
private static final int MENU_ITEM_ORDER_AUTOFILL = 11;
private static final int MENU_ITEM_ORDER_PROCESS_TEXT_INTENT_ACTIONS_START = 100;
// Each Editor manages its own undo stack.
private final UndoManager mUndoManager = new UndoManager();
@@ -6322,9 +6322,10 @@ public class Editor {
* Adds "PROCESS_TEXT" menu items to the specified menu.
*/
public void onInitializeMenu(Menu menu) {
int i = 0;
final int size = mSupportedActivities.size();
loadSupportedActivities();
for (ResolveInfo resolveInfo : mSupportedActivities) {
for (int i = 0; i < size; i++) {
final ResolveInfo resolveInfo = mSupportedActivities.get(i);
menu.add(Menu.NONE, Menu.NONE,
Editor.MENU_ITEM_ORDER_PROCESS_TEXT_INTENT_ACTIONS_START + i++,
getLabel(resolveInfo))

View File

@@ -233,6 +233,7 @@ public final class FloatingToolbar {
private void doShow() {
List<MenuItem> menuItems = getVisibleAndEnabledMenuItems(mMenu);
tidy(menuItems);
if (!isCurrentlyShowing(menuItems) || mWidthChanged) {
mPopup.dismiss();
mPopup.layoutMenuItems(menuItems, mMenuItemClickListener, mSuggestedWidth);
@@ -274,6 +275,36 @@ public final class FloatingToolbar {
return menuItems;
}
/**
* Update the list of menu items to conform to certain requirements.
*/
private void tidy(List<MenuItem> menuItems) {
int assistItemIndex = -1;
Drawable assistItemDrawable = null;
final int size = menuItems.size();
for (int i = 0; i < size; i++) {
final MenuItem menuItem = menuItems.get(i);
if (menuItem.getItemId() == android.R.id.textAssist) {
assistItemIndex = i;
assistItemDrawable = menuItem.getIcon();
}
// Remove icons for all menu items with text.
if (!TextUtils.isEmpty(menuItem.getTitle())) {
menuItem.setIcon(null);
}
}
if (assistItemIndex > -1) {
final MenuItem assistMenuItem = menuItems.remove(assistItemIndex);
// Ensure the assist menu item preserves its icon.
assistMenuItem.setIcon(assistItemDrawable);
// Ensure the assist menu item is always the first item.
menuItems.add(0, assistMenuItem);
}
}
private List<Object> getShowingMenuItemsReferences(List<MenuItem> menuItems) {
List<Object> references = new ArrayList<Object>();
for (MenuItem menuItem : menuItems) {