That fuck shit the fascists are using
at master 74 lines 2.0 kB view raw
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}