Allow pasting raw signature

This commit is contained in:
M66B
2020-07-26 07:58:12 +02:00
parent a99e8c7766
commit de17e77ef8
2 changed files with 46 additions and 33 deletions

View File

@@ -41,6 +41,7 @@ import androidx.core.view.inputmethod.InputContentInfoCompat;
import org.jsoup.nodes.Document;
public class EditTextCompose extends FixedEditText {
private boolean raw = false;
private ISelection selectionListener = null;
private IInputContentListener inputContentListener = null;
@@ -56,6 +57,14 @@ public class EditTextCompose extends FixedEditText {
super(context, attrs, defStyleAttr);
}
public void setRaw(boolean raw) {
this.raw = raw;
}
public boolean getRaw() {
return raw;
}
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
super.onSelectionChanged(selStart, selEnd);
@@ -80,32 +89,37 @@ public class EditTextCompose extends FixedEditText {
html = "<div>" + HtmlHelper.formatPre(text.toString(), false) + "</div>";
}
Document document = HtmlHelper.sanitizeCompose(context, html, false);
Spanned paste = HtmlHelper.fromDocument(getContext(), document, true, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
return ImageHelper.decodeImage(getContext(),
-1, source, true, 0, EditTextCompose.this);
SpannableStringBuilder ssb;
if (raw)
ssb = new SpannableStringBuilder(html);
else {
Document document = HtmlHelper.sanitizeCompose(context, html, false);
Spanned paste = HtmlHelper.fromDocument(getContext(), document, true, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
return ImageHelper.decodeImage(getContext(),
-1, source, true, 0, EditTextCompose.this);
}
}, null);
int colorPrimary = Helper.resolveColor(context, R.attr.colorPrimary);
int dp3 = Helper.dp2pixels(context, 3);
int dp6 = Helper.dp2pixels(context, 6);
ssb = new SpannableStringBuilder(paste);
QuoteSpan[] spans = ssb.getSpans(0, ssb.length(), QuoteSpan.class);
for (QuoteSpan span : spans) {
QuoteSpan q;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P)
q = new QuoteSpan(colorPrimary);
else
q = new QuoteSpan(colorPrimary, dp3, dp6);
ssb.setSpan(q,
ssb.getSpanStart(span),
ssb.getSpanEnd(span),
ssb.getSpanFlags(span));
ssb.removeSpan(span);
}
}, null);
int colorPrimary = Helper.resolveColor(context, R.attr.colorPrimary);
int dp3 = Helper.dp2pixels(context, 3);
int dp6 = Helper.dp2pixels(context, 6);
SpannableStringBuilder ssb = new SpannableStringBuilder(paste);
QuoteSpan[] spans = ssb.getSpans(0, ssb.length(), QuoteSpan.class);
for (QuoteSpan span : spans) {
QuoteSpan q;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P)
q = new QuoteSpan(colorPrimary);
else
q = new QuoteSpan(colorPrimary, dp3, dp6);
ssb.setSpan(q,
ssb.getSpanStart(span),
ssb.getSpanEnd(span),
ssb.getSpanFlags(span));
ssb.removeSpan(span);
}
int start = getSelectionStart();