From 5ed8f5d74b0ac6b9c510f16da9079b31f7205cfe Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 7 May 2021 09:41:26 +0200 Subject: [PATCH] Added style menu icons --- .../eu/faircode/email/PopupMenuLifecycle.java | 47 +++++++++++++++++++ .../java/eu/faircode/email/StyleHelper.java | 1 + .../twotone_format_align_center_24.xml | 10 ++++ .../drawable/twotone_format_align_left_24.xml | 11 +++++ .../twotone_format_align_right_24.xml | 11 +++++ .../twotone_format_indent_decrease_24.xml | 11 +++++ .../twotone_format_indent_increase_24.xml | 11 +++++ .../twotone_format_list_bulleted_24.xml | 20 ++++++++ .../twotone_format_list_numbered_24.xml | 10 ++++ .../twotone_format_strikethrough_24.xml | 10 ++++ .../main/res/drawable/twotone_palette_24.xml | 27 +++++++++++ .../main/res/drawable/twotone_title_24.xml | 10 ++++ app/src/main/res/menu/popup_style.xml | 15 ++++++ app/src/main/res/values/dimen.xml | 1 + 14 files changed, 195 insertions(+) create mode 100644 app/src/main/res/drawable/twotone_format_align_center_24.xml create mode 100644 app/src/main/res/drawable/twotone_format_align_left_24.xml create mode 100644 app/src/main/res/drawable/twotone_format_align_right_24.xml create mode 100644 app/src/main/res/drawable/twotone_format_indent_decrease_24.xml create mode 100644 app/src/main/res/drawable/twotone_format_indent_increase_24.xml create mode 100644 app/src/main/res/drawable/twotone_format_list_bulleted_24.xml create mode 100644 app/src/main/res/drawable/twotone_format_list_numbered_24.xml create mode 100644 app/src/main/res/drawable/twotone_format_strikethrough_24.xml create mode 100644 app/src/main/res/drawable/twotone_palette_24.xml create mode 100644 app/src/main/res/drawable/twotone_title_24.xml diff --git a/app/src/main/java/eu/faircode/email/PopupMenuLifecycle.java b/app/src/main/java/eu/faircode/email/PopupMenuLifecycle.java index 76164ffe56..cc6b7b6968 100644 --- a/app/src/main/java/eu/faircode/email/PopupMenuLifecycle.java +++ b/app/src/main/java/eu/faircode/email/PopupMenuLifecycle.java @@ -20,7 +20,14 @@ package eu.faircode.email; */ import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.text.SpannableStringBuilder; +import android.text.style.ImageSpan; +import android.view.Menu; import android.view.MenuItem; +import android.view.SubMenu; import android.view.View; import androidx.annotation.NonNull; @@ -41,6 +48,10 @@ public class PopupMenuLifecycle extends PopupMenu implements LifecycleObserver { owner.getLifecycle().addObserver(this); } + public void insertIcons(Context context) { + insertIcons(new ContextThemeWrapper(context, R.style.popupMenuStyle), getMenu()); + } + @Override public void show() { Log.i("Show " + this); @@ -72,4 +83,40 @@ public class PopupMenuLifecycle extends PopupMenu implements LifecycleObserver { Log.i("Destroy " + this); this.dismiss(); } + + private static void insertIcons(Context context, Menu menu) { + for (int i = 0; i < menu.size(); i++) { + MenuItem item = menu.getItem(i); + CharSequence title = item.getTitle(); + insertIcon(context, item); + if (item.hasSubMenu()) { + SubMenu sub = item.getSubMenu(); + sub.setHeaderTitle(title); + for (int j = 0; j < sub.size(); j++) + if (sub.getItem(j).getIcon() != null) { + insertIcons(context, sub); + break; + } + } + } + } + + private static void insertIcon(Context context, MenuItem menuItem) { + Drawable icon = menuItem.getIcon(); + + if (icon == null) + icon = new ColorDrawable(Color.TRANSPARENT); + else + icon.setTint(Helper.resolveColor(context, R.attr.colorAccent)); + + int iconSize = context.getResources().getDimensionPixelSize(R.dimen.menu_item_icon_size); + icon.setBounds(0, 0, iconSize, iconSize); + ImageSpan imageSpan = new ImageSpan(icon); + + SpannableStringBuilder ssb = new SpannableStringBuilder(menuItem.getTitle()); + ssb.insert(0, "\uFFFC\u2003"); + ssb.setSpan(imageSpan, 0, 1, 0); + menuItem.setTitle(ssb); + menuItem.setIcon(null); + } } diff --git a/app/src/main/java/eu/faircode/email/StyleHelper.java b/app/src/main/java/eu/faircode/email/StyleHelper.java index b6e5878fcd..5ca8ece9be 100644 --- a/app/src/main/java/eu/faircode/email/StyleHelper.java +++ b/app/src/main/java/eu/faircode/email/StyleHelper.java @@ -115,6 +115,7 @@ public class StyleHelper { } else if (action == R.id.menu_style) { PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(anchor.getContext(), owner, anchor); popupMenu.inflate(R.menu.popup_style); + popupMenu.insertIcons(anchor.getContext()); String[] fontNames = anchor.getResources().getStringArray(R.array.fontNameNames); SubMenu smenu = popupMenu.getMenu().findItem(R.id.menu_style_font).getSubMenu(); diff --git a/app/src/main/res/drawable/twotone_format_align_center_24.xml b/app/src/main/res/drawable/twotone_format_align_center_24.xml new file mode 100644 index 0000000000..e13710f5b2 --- /dev/null +++ b/app/src/main/res/drawable/twotone_format_align_center_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/twotone_format_align_left_24.xml b/app/src/main/res/drawable/twotone_format_align_left_24.xml new file mode 100644 index 0000000000..4cf8d0a952 --- /dev/null +++ b/app/src/main/res/drawable/twotone_format_align_left_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/twotone_format_align_right_24.xml b/app/src/main/res/drawable/twotone_format_align_right_24.xml new file mode 100644 index 0000000000..2acac49258 --- /dev/null +++ b/app/src/main/res/drawable/twotone_format_align_right_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/twotone_format_indent_decrease_24.xml b/app/src/main/res/drawable/twotone_format_indent_decrease_24.xml new file mode 100644 index 0000000000..3e81b2eed7 --- /dev/null +++ b/app/src/main/res/drawable/twotone_format_indent_decrease_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/twotone_format_indent_increase_24.xml b/app/src/main/res/drawable/twotone_format_indent_increase_24.xml new file mode 100644 index 0000000000..53a6172f0f --- /dev/null +++ b/app/src/main/res/drawable/twotone_format_indent_increase_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/twotone_format_list_bulleted_24.xml b/app/src/main/res/drawable/twotone_format_list_bulleted_24.xml new file mode 100644 index 0000000000..3cddf68b61 --- /dev/null +++ b/app/src/main/res/drawable/twotone_format_list_bulleted_24.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/drawable/twotone_format_list_numbered_24.xml b/app/src/main/res/drawable/twotone_format_list_numbered_24.xml new file mode 100644 index 0000000000..8701464f15 --- /dev/null +++ b/app/src/main/res/drawable/twotone_format_list_numbered_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/twotone_format_strikethrough_24.xml b/app/src/main/res/drawable/twotone_format_strikethrough_24.xml new file mode 100644 index 0000000000..7405ee68ea --- /dev/null +++ b/app/src/main/res/drawable/twotone_format_strikethrough_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/twotone_palette_24.xml b/app/src/main/res/drawable/twotone_palette_24.xml new file mode 100644 index 0000000000..9f0bfa25e1 --- /dev/null +++ b/app/src/main/res/drawable/twotone_palette_24.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/twotone_title_24.xml b/app/src/main/res/drawable/twotone_title_24.xml new file mode 100644 index 0000000000..22a4db1c4f --- /dev/null +++ b/app/src/main/res/drawable/twotone_title_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/menu/popup_style.xml b/app/src/main/res/menu/popup_style.xml index 00c4597844..a148d33774 100644 --- a/app/src/main/res/menu/popup_style.xml +++ b/app/src/main/res/menu/popup_style.xml @@ -2,6 +2,7 @@ @@ -26,25 +27,30 @@ android:orderInCategory="2"> @@ -52,21 +58,26 @@ @@ -74,6 +85,7 @@ @@ -86,6 +98,7 @@ android:orderInCategory="6"> @@ -94,6 +107,7 @@ android:orderInCategory="7"> @@ -102,6 +116,7 @@ android:orderInCategory="8"> \ No newline at end of file diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml index 3304500b28..9ee21777ef 100644 --- a/app/src/main/res/values/dimen.xml +++ b/app/src/main/res/values/dimen.xml @@ -4,4 +4,5 @@ 12sp 12sp 6dp + 24dp \ No newline at end of file