From 200e8d2c26031fa264415f58cd6ba860e1ca542d Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Wed, 22 Mar 2023 14:59:13 +0900 Subject: [PATCH] Add icon to the context menu This CL reuses cut, copy, paste, select all and share icon. This CL adds new undo, redo icon from Material library. Bug: 240385199 Test: Manually done Change-Id: Ia88452de436d36a1d5f2cbf44e55a61be866f894 --- core/java/android/widget/Editor.java | 20 +++++++++++++++ .../res/drawable/ic_menu_redo_material.xml | 25 +++++++++++++++++++ .../res/drawable/ic_menu_undo_material.xml | 25 +++++++++++++++++++ core/res/res/values/attrs.xml | 4 +++ core/res/res/values/symbols.xml | 2 ++ core/res/res/values/themes.xml | 2 ++ 6 files changed, 78 insertions(+) create mode 100644 core/res/res/drawable/ic_menu_redo_material.xml create mode 100644 core/res/res/drawable/ic_menu_undo_material.xml diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index dce54329da8e8..088065d2f77df 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -3193,47 +3193,66 @@ public class Editor { menuItemOrderPasteAsPlainText = 11; } + final TypedArray a = mTextView.getContext().obtainStyledAttributes(new int[] { + // TODO: Make Undo/Redo be public attribute. + com.android.internal.R.attr.actionModeUndoDrawable, + com.android.internal.R.attr.actionModeRedoDrawable, + android.R.attr.actionModeCutDrawable, + android.R.attr.actionModeCopyDrawable, + android.R.attr.actionModePasteDrawable, + android.R.attr.actionModeSelectAllDrawable, + android.R.attr.actionModeShareDrawable, + }); + menu.add(CONTEXT_MENU_GROUP_UNDO_REDO, TextView.ID_UNDO, menuItemOrderUndo, com.android.internal.R.string.undo) .setAlphabeticShortcut('z') .setOnMenuItemClickListener(mOnContextMenuItemClickListener) + .setIcon(a.getDrawable(0)) .setEnabled(mTextView.canUndo()); menu.add(CONTEXT_MENU_GROUP_UNDO_REDO, TextView.ID_REDO, menuItemOrderRedo, com.android.internal.R.string.redo) .setAlphabeticShortcut('z', KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON) .setOnMenuItemClickListener(mOnContextMenuItemClickListener) + .setIcon(a.getDrawable(1)) .setEnabled(mTextView.canRedo()); menu.add(CONTEXT_MENU_GROUP_CLIPBOARD, TextView.ID_CUT, menuItemOrderCut, com.android.internal.R.string.cut) .setAlphabeticShortcut('x') .setOnMenuItemClickListener(mOnContextMenuItemClickListener) + .setIcon(a.getDrawable(2)) .setEnabled(mTextView.canCut()); menu.add(CONTEXT_MENU_GROUP_CLIPBOARD, TextView.ID_COPY, menuItemOrderCopy, com.android.internal.R.string.copy) .setAlphabeticShortcut('c') .setOnMenuItemClickListener(mOnContextMenuItemClickListener) + .setIcon(a.getDrawable(3)) .setEnabled(mTextView.canCopy()); menu.add(CONTEXT_MENU_GROUP_CLIPBOARD, TextView.ID_PASTE, menuItemOrderPaste, com.android.internal.R.string.paste) .setAlphabeticShortcut('v') .setEnabled(mTextView.canPaste()) + .setIcon(a.getDrawable(4)) .setOnMenuItemClickListener(mOnContextMenuItemClickListener); menu.add(CONTEXT_MENU_GROUP_CLIPBOARD, TextView.ID_PASTE_AS_PLAIN_TEXT, menuItemOrderPasteAsPlainText, com.android.internal.R.string.paste_as_plain_text) .setAlphabeticShortcut('v', KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON) .setEnabled(mTextView.canPasteAsPlainText()) + .setIcon(a.getDrawable(4)) .setOnMenuItemClickListener(mOnContextMenuItemClickListener); menu.add(CONTEXT_MENU_GROUP_CLIPBOARD, TextView.ID_SELECT_ALL, menuItemOrderSelectAll, com.android.internal.R.string.selectAll) .setAlphabeticShortcut('a') .setEnabled(mTextView.canSelectAllText()) + .setIcon(a.getDrawable(5)) .setOnMenuItemClickListener(mOnContextMenuItemClickListener); menu.add(CONTEXT_MENU_GROUP_MISC, TextView.ID_SHARE, menuItemOrderShare, com.android.internal.R.string.share) .setEnabled(mTextView.canShare()) + .setIcon(a.getDrawable(6)) .setOnMenuItemClickListener(mOnContextMenuItemClickListener); menu.add(CONTEXT_MENU_GROUP_MISC, TextView.ID_AUTOFILL, menuItemOrderAutofill, android.R.string.autofill) @@ -3241,6 +3260,7 @@ public class Editor { .setOnMenuItemClickListener(mOnContextMenuItemClickListener); mPreserveSelection = true; + a.recycle(); // No-op for the old context menu because it doesn't have icons. adjustIconSpacing(menu); diff --git a/core/res/res/drawable/ic_menu_redo_material.xml b/core/res/res/drawable/ic_menu_redo_material.xml new file mode 100644 index 0000000000000..28e6733b77c14 --- /dev/null +++ b/core/res/res/drawable/ic_menu_redo_material.xml @@ -0,0 +1,25 @@ + + + + diff --git a/core/res/res/drawable/ic_menu_undo_material.xml b/core/res/res/drawable/ic_menu_undo_material.xml new file mode 100644 index 0000000000000..8e05a52d791e9 --- /dev/null +++ b/core/res/res/drawable/ic_menu_undo_material.xml @@ -0,0 +1,25 @@ + + + + diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index b53502d2a6662..cd25726ac7306 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -918,6 +918,10 @@ + + + + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 251db6d87850f..59906f920e4f1 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -5033,4 +5033,6 @@ + + diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index e96de582022a8..bdbf96b97c1ec 100644 --- a/core/res/res/values/themes.xml +++ b/core/res/res/values/themes.xml @@ -358,6 +358,8 @@ please see themes_device_defaults.xml. @drawable/ic_menu_share_holo_dark @drawable/ic_menu_find_holo_dark @drawable/ic_menu_search + @drawable/ic_menu_undo_material + @drawable/ic_menu_redo_material @style/Widget.ActionBar.TabView @style/Widget.ActionBar.TabBar @style/Widget.ActionBar.TabText