From ee8e26725e12e3527cb09dea3e50a8b29890941a Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 1 Oct 2022 09:51:16 +0200 Subject: [PATCH] Refactoring --- .../eu/faircode/email/FragmentCompose.java | 36 +--------------- .../java/eu/faircode/email/LanguageTool.java | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 57ed124cdb..9d5627b02a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -74,7 +74,6 @@ import android.text.Spannable; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.Spanned; -import android.text.TextPaint; import android.text.TextUtils; import android.text.TextWatcher; import android.text.method.ArrowKeyMovementMethod; @@ -85,7 +84,6 @@ import android.text.style.ImageSpan; import android.text.style.ParagraphStyle; import android.text.style.QuoteSpan; import android.text.style.RelativeSizeSpan; -import android.text.style.SuggestionSpan; import android.text.style.URLSpan; import android.util.LogPrinter; import android.util.Pair; @@ -2599,25 +2597,7 @@ public class FragmentCompose extends FragmentBase { return; } - Editable edit = etBody.getText(); - if (edit == null) - return; - - // https://developer.android.com/reference/android/text/style/SuggestionSpan - for (SuggestionSpanEx span : edit.getSpans(0, edit.length(), SuggestionSpanEx.class)) { - Log.i("LT removing=" + span); - edit.removeSpan(span); - } - - for (LanguageTool.Suggestion suggestion : suggestions) { - Log.i("LT adding=" + suggestion); - SuggestionSpan span = new SuggestionSpanEx(getContext(), - suggestion.replacements.toArray(new String[0]), - SuggestionSpan.FLAG_MISSPELLED); - int start = suggestion.offset; - int end = start + suggestion.length; - edit.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - } + LanguageTool.applySuggestions(etBody, suggestions); } @Override @@ -2636,20 +2616,6 @@ public class FragmentCompose extends FragmentBase { }.execute(this, args, "compose:lt"); } - private static class SuggestionSpanEx extends SuggestionSpan { - private final int textColorHighlight; - - public SuggestionSpanEx(Context context, String[] suggestions, int flags) { - super(context, suggestions, flags); - textColorHighlight = Helper.resolveColor(context, android.R.attr.textColorHighlight); - } - - @Override - public void updateDrawState(TextPaint tp) { - tp.bgColor = textColorHighlight; - } - } - private boolean onActionStyle(int action, View anchor) { Log.i("Style action=" + action); return StyleHelper.apply(action, getViewLifecycleOwner(), anchor, etBody); diff --git a/app/src/main/java/eu/faircode/email/LanguageTool.java b/app/src/main/java/eu/faircode/email/LanguageTool.java index a19be99547..cef820b56a 100644 --- a/app/src/main/java/eu/faircode/email/LanguageTool.java +++ b/app/src/main/java/eu/faircode/email/LanguageTool.java @@ -21,6 +21,11 @@ package eu.faircode.email; import android.content.Context; import android.content.SharedPreferences; +import android.text.Editable; +import android.text.Spanned; +import android.text.TextPaint; +import android.text.style.SuggestionSpan; +import android.widget.EditText; import androidx.preference.PreferenceManager; @@ -146,6 +151,28 @@ public class LanguageTool { } } + static void applySuggestions(EditText etBody, List suggestions) { + Editable edit = etBody.getText(); + if (edit == null) + return; + + // https://developer.android.com/reference/android/text/style/SuggestionSpan + for (SuggestionSpanEx span : edit.getSpans(0, edit.length(), SuggestionSpanEx.class)) { + Log.i("LT removing=" + span); + edit.removeSpan(span); + } + + for (LanguageTool.Suggestion suggestion : suggestions) { + Log.i("LT adding=" + suggestion); + SuggestionSpan span = new SuggestionSpanEx(etBody.getContext(), + suggestion.replacements.toArray(new String[0]), + SuggestionSpan.FLAG_MISSPELLED); + int start = suggestion.offset; + int end = start + suggestion.length; + edit.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + } + static class Suggestion { String title; // shortMessage String description; // message @@ -158,4 +185,18 @@ public class LanguageTool { return title; } } + + private static class SuggestionSpanEx extends SuggestionSpan { + private final int textColorHighlight; + + public SuggestionSpanEx(Context context, String[] suggestions, int flags) { + super(context, suggestions, flags); + textColorHighlight = Helper.resolveColor(context, android.R.attr.textColorHighlight); + } + + @Override + public void updateDrawState(TextPaint tp) { + tp.bgColor = textColorHighlight; + } + } }