From 87956d420f14c3e2bdd0f5f3223755f690ba9d40 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 9 Dec 2022 12:12:35 +0100 Subject: [PATCH] Added LanguageTool to answers --- .../eu/faircode/email/FragmentAnswer.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/FragmentAnswer.java b/app/src/main/java/eu/faircode/email/FragmentAnswer.java index 54e3ba07b3..7d80bf8ba3 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAnswer.java +++ b/app/src/main/java/eu/faircode/email/FragmentAnswer.java @@ -45,6 +45,7 @@ import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.EditText; import android.widget.HorizontalScrollView; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -183,6 +184,17 @@ public class FragmentAnswer extends FragmentBase { } }); + bottom_navigation.findViewById(R.id.action_save).setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + if (LanguageTool.isEnabled(context)) { + onLanguageTool(); + return true; + } else + return false; + } + }); + // Initialize FragmentDialogTheme.setBackground(context, view, true); @@ -597,4 +609,55 @@ public class FragmentAnswer extends FragmentBase { } }.execute(this, args, "answer:delete"); } + + private void onLanguageTool() { + etText.clearComposingText(); + + Bundle args = new Bundle(); + args.putCharSequence("text", etText.getText()); + + new SimpleTask>() { + private Toast toast = null; + + @Override + protected void onPreExecute(Bundle args) { + toast = ToastEx.makeText(getContext(), R.string.title_suggestions_check, Toast.LENGTH_LONG); + toast.show(); + } + + @Override + protected void onPostExecute(Bundle args) { + if (toast != null) + toast.cancel(); + } + + @Override + protected List onExecute(Context context, Bundle args) throws Throwable { + CharSequence text = args.getCharSequence("text").toString(); + return LanguageTool.getSuggestions(context, text); + } + + @Override + protected void onExecuted(Bundle args, List suggestions) { + LanguageTool.applySuggestions(etText, 0, etText.length(), suggestions); + + if (suggestions == null || suggestions.size() == 0) + ToastEx.makeText(getContext(), R.string.title_suggestions_none, Toast.LENGTH_LONG).show(); + } + + @Override + protected void onDestroyed(Bundle args) { + if (toast != null) { + toast.cancel(); + toast = null; + } + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Throwable exex = new Throwable("LanguageTool", ex); + Log.unexpectedError(getParentFragmentManager(), exex, false); + } + }.execute(this, args, "answer:lt"); + } }