diff --git a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt index 2ad430400..a39d1a2c9 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt +++ b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt @@ -22,11 +22,14 @@ import android.content.Context import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Build import android.text.Spannable import android.text.SpannableStringBuilder import android.text.Spanned import android.text.method.LinkMovementMethod import android.text.style.ClickableSpan +import android.text.style.ForegroundColorSpan +import android.text.style.QuoteSpan import android.text.style.URLSpan import android.util.Log import android.view.MotionEvent @@ -38,7 +41,9 @@ import androidx.appcompat.content.res.AppCompatResources import androidx.browser.customtabs.CustomTabColorSchemeParams import androidx.browser.customtabs.CustomTabsIntent import androidx.core.net.toUri +import androidx.core.text.getSpans import androidx.preference.PreferenceManager +import at.connyduck.sparkbutton.helpers.Utils import com.google.android.material.color.MaterialColors import com.keylesspalace.tusky.R import com.keylesspalace.tusky.entity.HashTag @@ -70,8 +75,9 @@ fun setClickableText(view: TextView, content: CharSequence, mentions: List + setClickableText(span, this, mentions, tags, listener) } } view.movementMethod = NoTrailingSpaceLinkMovementMethod.getInstance() @@ -177,6 +183,32 @@ private fun getCustomSpanForMentionUrl(url: String, mentionId: String, listener: } } +private fun SpannableStringBuilder.styleQuoteSpans(view: TextView) { + getSpans(0, length, QuoteSpan::class.java).forEach { span -> + val start = getSpanStart(span) + val end = getSpanEnd(span) + val flags = getSpanFlags(span) + + val quoteColor = MaterialColors.getColor(view, android.R.attr.textColorTertiary) + + val newQuoteSpan = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + QuoteSpan( + quoteColor, + Utils.dpToPx(view.context, 3), + Utils.dpToPx(view.context, 8) + ) + } else { + QuoteSpan(quoteColor) + } + + val quoteColorSpan = ForegroundColorSpan(quoteColor) + + removeSpan(span) + setSpan(newQuoteSpan, start, end, flags) + setSpan(quoteColorSpan, start, end, flags) + } +} + /** * Put mentions in a piece of text and makes them clickable, associating them with callbacks to * notify when they're clicked.