That fuck shit the fascists are using
1package org.tm.archive.util;
2
3import android.content.Context;
4import android.graphics.Color;
5import android.text.TextPaint;
6import android.text.style.URLSpan;
7import android.view.View;
8import android.widget.Toast;
9
10import androidx.annotation.ColorInt;
11import androidx.annotation.NonNull;
12
13import org.tm.archive.R;
14
15public class LongClickCopySpan extends URLSpan {
16 private static final String PREFIX_MAILTO = "mailto:";
17 private static final String PREFIX_TEL = "tel:";
18
19 private boolean isHighlighted;
20 @ColorInt
21 private int highlightColor;
22
23 private final Integer textColor;
24 private final boolean underline;
25
26 public LongClickCopySpan(String url) {
27 this(url, null, true);
28 }
29
30 public LongClickCopySpan(String url, @ColorInt Integer textColor, boolean underline) {
31 super(url);
32 this.textColor = textColor;
33 this.underline = underline;
34 }
35
36 void onLongClick(View widget) {
37 Context context = widget.getContext();
38 String preparedUrl = prepareUrl(getURL());
39 copyUrl(context, preparedUrl);
40 Toast.makeText(context, context.getString(R.string.ConversationItem_copied_text, preparedUrl), Toast.LENGTH_SHORT).show();
41 }
42
43 @Override
44 public void updateDrawState(@NonNull TextPaint ds) {
45 if (ds.getColor() == Color.TRANSPARENT) {
46 return;
47 }
48
49 super.updateDrawState(ds);
50 if (textColor != null) {
51 ds.setColor(textColor);
52 }
53 ds.bgColor = highlightColor;
54 ds.setUnderlineText(!isHighlighted && underline);
55 }
56
57 void setHighlighted(boolean highlighted, @ColorInt int highlightColor) {
58 this.isHighlighted = highlighted;
59 this.highlightColor = highlightColor;
60 }
61
62 private void copyUrl(Context context, String url) {
63 Util.writeTextToClipboard(context, url);
64 }
65
66 private String prepareUrl(String url) {
67 if (url.startsWith(PREFIX_MAILTO)) {
68 return url.substring(PREFIX_MAILTO.length());
69 } else if (url.startsWith(PREFIX_TEL)) {
70 return url.substring(PREFIX_TEL.length());
71 }
72 return url;
73 }
74}