mirror of https://github.com/NekoX-Dev/NekoX.git
73 lines
2.2 KiB
Java
73 lines
2.2 KiB
Java
/*
|
|
* This is the source code of Telegram for Android v. 5.x.x.
|
|
* It is licensed under GNU GPL v. 2 or later.
|
|
* You should have received a copy of the license in this archive (see LICENSE).
|
|
*
|
|
* Copyright Nikolai Kudashov, 2013-2018.
|
|
*/
|
|
|
|
package org.telegram.ui.Components;
|
|
|
|
import android.graphics.Paint;
|
|
import android.graphics.Typeface;
|
|
import android.text.TextPaint;
|
|
import android.text.style.MetricAffectingSpan;
|
|
|
|
import org.telegram.messenger.AndroidUtilities;
|
|
import org.telegram.messenger.SharedConfig;
|
|
import org.telegram.ui.ActionBar.Theme;
|
|
|
|
public class URLSpanMono extends MetricAffectingSpan {
|
|
|
|
private CharSequence currentMessage;
|
|
private int currentStart;
|
|
private int currentEnd;
|
|
private byte currentType;
|
|
private TextStyleSpan.TextStyleRun style;
|
|
|
|
public URLSpanMono(CharSequence message, int start, int end, byte type) {
|
|
this(message, start, end, type, null);
|
|
}
|
|
|
|
public URLSpanMono(CharSequence message, int start, int end, byte type, TextStyleSpan.TextStyleRun run) {
|
|
currentMessage = message;
|
|
currentStart = start;
|
|
currentEnd = end;
|
|
currentType = type;
|
|
style = run;
|
|
}
|
|
|
|
public void copyToClipboard() {
|
|
AndroidUtilities.addToClipboard(currentMessage.subSequence(currentStart, currentEnd).toString());
|
|
}
|
|
|
|
@Override
|
|
public void updateMeasureState(TextPaint p) {
|
|
p.setTextSize(AndroidUtilities.dp(SharedConfig.fontSize - 1));
|
|
p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
|
|
if (style != null) {
|
|
style.applyStyle(p);
|
|
} else {
|
|
p.setTypeface(Typeface.MONOSPACE);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void updateDrawState(TextPaint p) {
|
|
p.setTextSize(AndroidUtilities.dp(SharedConfig.fontSize - 1));
|
|
if (currentType == 2) {
|
|
p.setColor(0xffffffff);
|
|
} else if (currentType == 1) {
|
|
p.setColor(Theme.getColor(Theme.key_chat_messageTextOut));
|
|
} else {
|
|
p.setColor(Theme.getColor(Theme.key_chat_messageTextIn));
|
|
}
|
|
if (style != null) {
|
|
style.applyStyle(p);
|
|
} else {
|
|
p.setTypeface(Typeface.MONOSPACE);
|
|
p.setUnderlineText(false);
|
|
}
|
|
}
|
|
}
|