Experiment: delete translated text

pull/207/head
M66B 4 years ago
parent 5d3c26c961
commit ddc5c434b1

@ -591,6 +591,7 @@ public class FragmentCompose extends FragmentBase {
etBody.addTextChangedListener(new TextWatcher() {
private Integer added = null;
private Integer removed = null;
private Integer replaced = null;
@Override
public void beforeTextChanged(CharSequence text, int start, int count, int after) {
@ -598,6 +599,10 @@ public class FragmentCompose extends FragmentBase {
Log.i("Removed=" + start);
removed = start;
}
if (BuildConfig.DEBUG && count - after == 1) {
replaced = start + after;
Log.i("Replaced=" + replaced);
}
}
@Override
@ -736,6 +741,22 @@ public class FragmentCompose extends FragmentBase {
removed = null;
}
if (replaced != null && replaced > 0) {
StyleHelper.TranslatedSpan[] nc =
text.getSpans(replaced - 1, replaced, StyleHelper.TranslatedSpan.class);
if (nc != null)
for (StyleHelper.TranslatedSpan p : nc) {
int start = text.getSpanStart(p);
int end = text.getSpanEnd(p);
if (end == replaced) {
text.delete(start, end);
text.removeSpan(p);
}
}
replaced = null;
}
if (lp != null)
TextUtils.dumpSpans(text, lp, "---after>");
}
@ -2154,6 +2175,8 @@ public class FragmentCompose extends FragmentBase {
*/
int len = 2 + translation.translated_text.length();
edit.insert(paragraph.second, "\n\n" + translation.translated_text);
StyleHelper.markAsTranslated(edit, paragraph.second, paragraph.second + len);
etBody.setSelection(paragraph.second + len);
boolean small = prefs.getBoolean("deepl_small", false);

@ -27,6 +27,8 @@ import android.graphics.Typeface;
import android.os.Build;
import android.text.Editable;
import android.text.Layout;
import android.text.NoCopySpan;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
@ -79,7 +81,8 @@ public class StyleHelper {
QuoteSpan.class, IndentSpan.class,
StrikethroughSpan.class,
URLSpan.class,
TypefaceSpan.class, CustomTypefaceSpan.class
TypefaceSpan.class, CustomTypefaceSpan.class,
TranslatedSpan.class
));
static boolean apply(int action, LifecycleOwner owner, View anchor, EditText etBody, Object... args) {
@ -925,6 +928,15 @@ public class StyleHelper {
}
}
static void markAsTranslated(Editable text, int start, int end) {
for (TranslatedSpan span : text.getSpans(0, text.length(), TranslatedSpan.class))
text.removeSpan(span);
text.setSpan(new TranslatedSpan(), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
static class TranslatedSpan implements NoCopySpan {
}
static String getFamily(String family) {
// https://web.mit.edu/jmorzins/www/fonts.html
// https://en.wikipedia.org/wiki/Croscore_fonts

Loading…
Cancel
Save