From 3050c691554a2cc0cbd45f31076f6c62808b4c42 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 19 May 2021 07:37:59 +0200 Subject: [PATCH] Translate paragraphs --- .../eu/faircode/email/FragmentCompose.java | 27 +++++++++++++++---- app/src/main/res/values/strings.xml | 1 + 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 8d76c4886b..ff95612dd1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1511,7 +1511,7 @@ public class FragmentCompose extends FragmentBase { menu.findItem(R.id.menu_answer_insert).setEnabled(state == State.LOADED); menu.findItem(R.id.menu_answer_create).setEnabled(state == State.LOADED); menu.findItem(R.id.menu_translate).setEnabled(state == State.LOADED); - menu.findItem(R.id.menu_translate).setVisible(etBody.hasSelection() && !BuildConfig.PLAY_STORE_RELEASE); + menu.findItem(R.id.menu_translate).setVisible(getParagraph() != null && !BuildConfig.PLAY_STORE_RELEASE); menu.findItem(R.id.menu_clear).setEnabled(state == State.LOADED); int colorEncrypt = Helper.resolveColor(getContext(), R.attr.colorEncrypt); @@ -1985,13 +1985,13 @@ public class FragmentCompose extends FragmentBase { fragment.show(getParentFragmentManager(), "deepl"); } - private void onMenuTranslate(String target) { + private Pair getParagraph() { int start = etBody.getSelectionStart(); int end = etBody.getSelectionEnd(); Editable edit = etBody.getText(); if (start < 0 || end < 0) - return; + return null; if (start > end) { int tmp = start; @@ -2015,15 +2015,32 @@ public class FragmentCompose extends FragmentBase { while (end > 0 && end < edit.length() && edit.charAt(end - 1) != '\n') end++; - final int insert = end; + if (start < end) + return new Pair(start, end); + + return null; + } + + private void onMenuTranslate(String target) { + Pair paragraph = getParagraph(); + if (paragraph == null) + return; - String text = edit.subSequence(start, end).toString(); + final int insert = paragraph.second; + + Editable edit = etBody.getText(); + String text = edit.subSequence(paragraph.first, paragraph.second).toString(); Bundle args = new Bundle(); args.putString("target", target); args.putString("text", text); new SimpleTask() { + @Override + protected void onPreExecute(Bundle args) { + ToastEx.makeText(getContext(), R.string.title_translating, Toast.LENGTH_SHORT).show(); + } + @Override protected String onExecute(Context context, Bundle args) throws Throwable { String target = args.getString("target"); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 470348f00d..e16c91de4f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1109,6 +1109,7 @@ Create template Translate Enter key + Translating … Edit as plain text Edit as reformatted text Select public key