diff --git a/app/src/main/java/eu/faircode/email/StyleHelper.java b/app/src/main/java/eu/faircode/email/StyleHelper.java index d0f350cdb8..a513ebf4cd 100644 --- a/app/src/main/java/eu/faircode/email/StyleHelper.java +++ b/app/src/main/java/eu/faircode/email/StyleHelper.java @@ -30,6 +30,7 @@ import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; import android.text.style.AlignmentSpan; +import android.text.style.BackgroundColorSpan; import android.text.style.BulletSpan; import android.text.style.CharacterStyle; import android.text.style.ForegroundColorSpan; @@ -181,6 +182,8 @@ public class StyleHelper { int itemId = item.getItemId(); if (groupId == R.id.group_style_size) { return setSize(item); + } else if (itemId == R.id.menu_style_background) { + return setBackground(item); } else if (itemId == R.id.menu_style_color) { return setColor(item); } else if (groupId == R.id.group_style_font) { @@ -238,6 +241,59 @@ public class StyleHelper { return true; } + private boolean setBackground(MenuItem item) { + Helper.hideKeyboard(etBody); + + Context context = etBody.getContext(); + int editTextColor = Helper.resolveColor(context, android.R.attr.editTextColor); + + ColorPickerDialogBuilder builder = ColorPickerDialogBuilder + .with(context) + .setTitle(R.string.title_background) + .showColorEdit(true) + .setColorEditTextColor(editTextColor) + .wheelType(ColorPickerView.WHEEL_TYPE.FLOWER) + .density(6) + .lightnessSliderOnly() + .setPositiveButton(android.R.string.ok, new ColorPickerClickListener() { + @Override + public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { + _setBackground(selectedColor); + } + }) + .setNegativeButton(R.string.title_reset, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + _setBackground(null); + } + }); + + builder.build().show(); + + return true; + } + + private void _setBackground(Integer color) { + Log.breadcrumb("style", "action", "background"); + + BackgroundColorSpan spans[] = edit.getSpans(start, end, BackgroundColorSpan.class); + for (BackgroundColorSpan span : spans) { + int s = edit.getSpanStart(span); + int e = edit.getSpanEnd(span); + int f = edit.getSpanFlags(span); + edit.removeSpan(span); + splitSpan(edit, start, end, s, e, f, false, + new BackgroundColorSpan(span.getBackgroundColor()), + new BackgroundColorSpan(span.getBackgroundColor())); + } + + if (color != null) + edit.setSpan(new BackgroundColorSpan(color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + + etBody.setText(edit); + etBody.setSelection(start, end); + } + private boolean setColor(MenuItem item) { Helper.hideKeyboard(etBody); diff --git a/app/src/main/res/drawable/twotone_format_paint_24.xml b/app/src/main/res/drawable/twotone_format_paint_24.xml new file mode 100644 index 0000000000..cb8eab09be --- /dev/null +++ b/app/src/main/res/drawable/twotone_format_paint_24.xml @@ -0,0 +1,15 @@ + + + + diff --git a/app/src/main/res/menu/popup_style.xml b/app/src/main/res/menu/popup_style.xml index cf4174de11..165c99e9f0 100644 --- a/app/src/main/res/menu/popup_style.xml +++ b/app/src/main/res/menu/popup_style.xml @@ -22,10 +22,20 @@ + + + + + + @@ -35,7 +45,7 @@ @@ -45,7 +55,7 @@ @@ -70,7 +80,7 @@ @@ -96,7 +106,7 @@ + android:orderInCategory="7"> + android:orderInCategory="8"> + android:orderInCategory="9"> Frequency of refreshing the connection for push messages or frequency of checking for new messages Disable this only in case of empty messages or corrupt attachments Color + Background Transparent Synchronize manually Separate notifications