Added style menu icons

pull/198/head
M66B 3 years ago
parent 948e8876c2
commit 5ed8f5d74b

@ -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);
}
}

@ -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();

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M3,3h18v2L3,5zM7,15h10v2L7,17zM7,7h10v2L7,9zM3,11h18v2L3,13zM3,19h18v2L3,21z"/>
</vector>

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M3,19h18v2L3,21zM3,7h12v2L3,9zM3,3h18v2L3,5zM3,15h12v2L3,17zM3,11h18v2L3,13z"/>
</vector>

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M3,3h18v2L3,5zM3,19h18v2L3,21zM3,11h18v2L3,13zM9,15h12v2L9,17zM9,7h12v2L9,9z"/>
</vector>

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M7,16L7,8l-4,4zM11,7h10v2L11,9zM11,11h10v2L11,13zM11,15h10v2L11,17zM3,19h18v2L3,21zM3,3h18v2L3,5z"/>
</vector>

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M3,19h18v2L3,21zM3,3h18v2L3,5zM11,7h10v2L11,9zM3,8v8l4,-4zM11,11h10v2L11,13zM11,15h10v2L11,17z"/>
</vector>

@ -0,0 +1,20 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M7,5h14v2H7z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M4,6m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
<path
android:fillColor="@android:color/white"
android:pathData="M7,11h14v2L7,13zM7,17h14v2L7,19zM4,19.5c0.82,0 1.5,-0.68 1.5,-1.5s-0.67,-1.5 -1.5,-1.5 -1.5,0.68 -1.5,1.5 0.68,1.5 1.5,1.5z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M4,12m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
</vector>

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M5,13L3.2,13L5,10.9L5,10L2,10v1h1.8L2,13.1v0.9h3zM7,5h14v2L7,7zM5,16L2,16v1h2v0.5L3,17.5v1h1v0.5L2,19v1h3zM7,17h14v2L7,19zM3,8h1L4,4L2,4v1h1zM7,11h14v2L7,13z"/>
</vector>

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M3,12h18v2L3,14zM14,10L14,7h5L19,4L5,4v3h5v3zM10,16h4v3h-4z"/>
</vector>

@ -0,0 +1,27 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M12,4c-4.41,0 -8,3.59 -8,8s3.59,8 8,8c0.28,0 0.5,-0.22 0.5,-0.5c0,-0.16 -0.08,-0.28 -0.14,-0.35c-0.41,-0.46 -0.63,-1.05 -0.63,-1.65c0,-1.38 1.12,-2.5 2.5,-2.5H16c2.21,0 4,-1.79 4,-4C20,7.14 16.41,4 12,4zM6.5,13C5.67,13 5,12.33 5,11.5S5.67,10 6.5,10S8,10.67 8,11.5S7.33,13 6.5,13zM9.5,9C8.67,9 8,8.33 8,7.5S8.67,6 9.5,6S11,6.67 11,7.5S10.33,9 9.5,9zM14.5,9C13.67,9 13,8.33 13,7.5S13.67,6 14.5,6S16,6.67 16,7.5S15.33,9 14.5,9zM19,11.5c0,0.83 -0.67,1.5 -1.5,1.5S16,12.33 16,11.5s0.67,-1.5 1.5,-1.5S19,10.67 19,11.5z"
android:strokeAlpha="0.3"
android:fillAlpha="0.3"/>
<path
android:fillColor="@android:color/white"
android:pathData="M12,2C6.49,2 2,6.49 2,12s4.49,10 10,10c1.38,0 2.5,-1.12 2.5,-2.5c0,-0.61 -0.23,-1.21 -0.64,-1.67c-0.08,-0.09 -0.13,-0.21 -0.13,-0.33c0,-0.28 0.22,-0.5 0.5,-0.5H16c3.31,0 6,-2.69 6,-6C22,6.04 17.51,2 12,2zM16,15h-1.77c-1.38,0 -2.5,1.12 -2.5,2.5c0,0.61 0.22,1.19 0.63,1.65c0.06,0.07 0.14,0.19 0.14,0.35c0,0.28 -0.22,0.5 -0.5,0.5c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8s8,3.14 8,7C20,13.21 18.21,15 16,15z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M6.5,11.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
<path
android:fillColor="@android:color/white"
android:pathData="M9.5,7.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
<path
android:fillColor="@android:color/white"
android:pathData="M14.5,7.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
<path
android:fillColor="@android:color/white"
android:pathData="M17.5,11.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
</vector>

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M5,7h5.5v12h3V7H19V4H5z"/>
</vector>

@ -2,6 +2,7 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_style_size"
android:icon="@drawable/twotone_format_size_24"
android:orderInCategory="1"
android:title="@string/title_style_size">
<menu>
@ -26,25 +27,30 @@
android:orderInCategory="2">
<item
android:id="@+id/menu_style_color"
android:icon="@drawable/twotone_palette_24"
android:title="@string/title_style_color" />
</group>
<item
android:id="@+id/menu_style_align"
android:icon="@drawable/twotone_format_align_center_24"
android:orderInCategory="3"
android:title="@string/title_style_align">
<menu>
<group android:id="@+id/group_style_align">
<item
android:id="@+id/menu_style_align_start"
android:icon="@drawable/twotone_format_align_left_24"
android:title="@string/title_style_align_start" />
<item
android:id="@+id/menu_style_align_center"
android:icon="@drawable/twotone_format_align_center_24"
android:title="@string/title_style_align_center" />
<item
android:id="@+id/menu_style_align_end"
android:icon="@drawable/twotone_format_align_right_24"
android:title="@string/title_style_align_end" />
</group>
</menu>
@ -52,21 +58,26 @@
<item
android:id="@+id/menu_style_list"
android:icon="@drawable/twotone_format_list_bulleted_24"
android:orderInCategory="4"
android:title="@string/title_style_list">
<menu>
<group android:id="@+id/group_style_list">
<item
android:id="@+id/menu_style_list_bullets"
android:icon="@drawable/twotone_format_list_bulleted_24"
android:title="@string/title_style_list_bullets" />
<item
android:id="@+id/menu_style_list_numbered"
android:icon="@drawable/twotone_format_list_numbered_24"
android:title="@string/title_style_list_numbered" />
<item
android:id="@+id/menu_style_list_increase"
android:icon="@drawable/twotone_format_indent_increase_24"
android:title="@string/title_style_list_level_increase" />
<item
android:id="@+id/menu_style_list_decrease"
android:icon="@drawable/twotone_format_indent_decrease_24"
android:title="@string/title_style_list_level_decrease" />
</group>
</menu>
@ -74,6 +85,7 @@
<item
android:id="@+id/menu_style_font"
android:icon="@drawable/twotone_title_24"
android:orderInCategory="5"
android:title="@string/title_style_font">
<menu>
@ -86,6 +98,7 @@
android:orderInCategory="6">
<item
android:id="@+id/menu_style_blockquote"
android:icon="@drawable/twotone_format_quote_24"
android:title="@string/title_style_blockquote" />
</group>
@ -94,6 +107,7 @@
android:orderInCategory="7">
<item
android:id="@+id/menu_style_strikethrough"
android:icon="@drawable/twotone_format_strikethrough_24"
android:title="@string/title_style_strikethrough" />
</group>
@ -102,6 +116,7 @@
android:orderInCategory="8">
<item
android:id="@+id/menu_style_clear"
android:icon="@drawable/twotone_format_clear_24"
android:title="@string/title_style_clear" />
</group>
</menu>

@ -4,4 +4,5 @@
<dimen name="design_bottom_navigation_text_size" tools:override="true">12sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">12sp</dimen>
<dimen name="fastscroll_default_thickness" tools:override="true">6dp</dimen>
<dimen name="menu_item_icon_size">24dp</dimen>
</resources>
Loading…
Cancel
Save