Added settings background color

This commit is contained in:
M66B
2021-07-04 13:17:15 +02:00
parent 72869a9778
commit 774c246e33
4 changed files with 89 additions and 7 deletions

View File

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