From b7f2999af8d529cd40f4376dd9cc003ab5cd9963 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 23 Jan 2022 16:26:53 +0100 Subject: [PATCH] Color for favorite templates --- .../java/eu/faircode/email/EntityAnswer.java | 25 +++++++++++++------ .../eu/faircode/email/FragmentMessages.java | 10 +++++++- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityAnswer.java b/app/src/main/java/eu/faircode/email/EntityAnswer.java index abb24eec19..67a4e56f53 100644 --- a/app/src/main/java/eu/faircode/email/EntityAnswer.java +++ b/app/src/main/java/eu/faircode/email/EntityAnswer.java @@ -209,30 +209,30 @@ public class EntityAnswer implements Serializable { continue; order++; - SpannableStringBuilder name = new SpannableStringBuilder(answer.name); + SpannableStringBuilder ssb = new SpannableStringBuilder(answer.name); if (answer.color != null) { Drawable d = new ColorDrawable(answer.color); d.setBounds(0, 0, iconSize / 4, iconSize); ImageSpan imageSpan = new CenteredImageSpan(d); - name.insert(0, "\uFFFC\u2002"); // object replacement character, en space - name.setSpan(imageSpan, 0, 1, 0); + ssb.insert(0, "\uFFFC\u2002"); // object replacement character, en space + ssb.setSpan(imageSpan, 0, 1, 0); } if (grouped && answer.applied > 0) { - name.append(" (").append(NF.format(answer.applied)).append(")"); - name.setSpan(new RelativeSizeSpan(HtmlHelper.FONT_SMALL), - answer.name.length() + 1, name.length(), 0); + ssb.append(" (").append(NF.format(answer.applied)).append(")"); + ssb.setSpan(new RelativeSizeSpan(HtmlHelper.FONT_SMALL), + answer.name.length() + 1, ssb.length(), 0); } MenuItem item; if (answer.group == null) - item = main.add(Menu.NONE, order, order++, name); + item = main.add(Menu.NONE, order, order++, ssb); else { SubMenu smenu = map.get(answer.group); item = smenu.add(answer.applied > 0 ? Menu.FIRST : Menu.NONE, - smenu.size(), smenu.size() + 1, name); + smenu.size(), smenu.size() + 1, ssb); } item.setIntent(new Intent().putExtra("id", answer.id)); } @@ -304,6 +304,15 @@ public class EntityAnswer implements Serializable { for (EntityAnswer answer : favorites) { SpannableStringBuilder ssb = new SpannableStringBuilder(answer.name); + if (answer.color != null) { + Drawable d = new ColorDrawable(answer.color); + d.setBounds(0, 0, iconSize / 4, iconSize); + + ImageSpan imageSpan = new CenteredImageSpan(d); + ssb.insert(0, "\uFFFC\u2002"); // object replacement character, en space + ssb.setSpan(imageSpan, 0, 1, 0); + } + ImageSpan imageSpan = new CenteredImageSpan(icon); ssb.insert(0, "\uFFFC\u2002"); // object replacement character, en space ssb.setSpan(imageSpan, 0, 1, 0); diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 3e7e972c38..8278b05486 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -2910,8 +2910,16 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. if (data.answers != null) { int order = 100; for (EntityAnswer answer : data.answers) { + SpannableStringBuilder ssb = new SpannableStringBuilder(answer.name); + + int first = answer.name.codePointAt(0); + int count = Character.charCount(first); + ssb.setSpan(new ForegroundColorSpan(answer.color), 0, count, 0); + ssb.setSpan(new StyleSpan(Typeface.BOLD), 0, count, 0); + ssb.setSpan(new RelativeSizeSpan(HtmlHelper.FONT_LARGE), 0, count, 0); + order++; - popupMenu.getMenu().add(Menu.FIRST, order, order, answer.name) + popupMenu.getMenu().add(Menu.FIRST, order, order, ssb) .setIcon(R.drawable.twotone_star_24) .setIntent(new Intent().putExtra("id", answer.id)); }