mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 20:48:43 +00:00
Add glyph icons and SignalSymbol methods.
This commit is contained in:
@@ -55,7 +55,7 @@ import org.signal.core.util.money.FiatMoney
|
|||||||
import org.thoughtcrime.securesms.R
|
import org.thoughtcrime.securesms.R
|
||||||
import org.thoughtcrime.securesms.backup.v2.MessageBackupTier
|
import org.thoughtcrime.securesms.backup.v2.MessageBackupTier
|
||||||
import org.thoughtcrime.securesms.fonts.SignalSymbols
|
import org.thoughtcrime.securesms.fonts.SignalSymbols
|
||||||
import org.thoughtcrime.securesms.fonts.SignalSymbols.SignalSymbol
|
import org.thoughtcrime.securesms.fonts.SignalSymbols.signalSymbolText
|
||||||
import org.thoughtcrime.securesms.payments.FiatMoneyUtil
|
import org.thoughtcrime.securesms.payments.FiatMoneyUtil
|
||||||
import org.thoughtcrime.securesms.util.ByteUnit
|
import org.thoughtcrime.securesms.util.ByteUnit
|
||||||
import java.math.BigDecimal
|
import java.math.BigDecimal
|
||||||
@@ -260,11 +260,10 @@ fun MessageBackupsTypeBlock(
|
|||||||
) {
|
) {
|
||||||
if (isCurrent) {
|
if (isCurrent) {
|
||||||
Text(
|
Text(
|
||||||
text = buildAnnotatedString {
|
text = signalSymbolText(
|
||||||
SignalSymbol(weight = SignalSymbols.Weight.REGULAR, glyph = SignalSymbols.Glyph.CHECKMARK)
|
text = stringResource(R.string.MessageBackupsTypeSelectionScreen__current_plan),
|
||||||
append(" ")
|
glyphStart = SignalSymbols.Glyph.CHECKMARK
|
||||||
append(stringResource(R.string.MessageBackupsTypeSelectionScreen__current_plan))
|
),
|
||||||
},
|
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(bottom = 12.dp)
|
.padding(bottom = 12.dp)
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity
|
|||||||
import org.thoughtcrime.securesms.components.settings.app.subscription.MessageBackupsCheckoutLauncher.createBackupsCheckoutLauncher
|
import org.thoughtcrime.securesms.components.settings.app.subscription.MessageBackupsCheckoutLauncher.createBackupsCheckoutLauncher
|
||||||
import org.thoughtcrime.securesms.compose.ComposeFragment
|
import org.thoughtcrime.securesms.compose.ComposeFragment
|
||||||
import org.thoughtcrime.securesms.fonts.SignalSymbols
|
import org.thoughtcrime.securesms.fonts.SignalSymbols
|
||||||
import org.thoughtcrime.securesms.fonts.SignalSymbols.SignalSymbol
|
import org.thoughtcrime.securesms.fonts.SignalSymbols.signalSymbolText
|
||||||
import org.thoughtcrime.securesms.help.HelpFragment
|
import org.thoughtcrime.securesms.help.HelpFragment
|
||||||
import org.thoughtcrime.securesms.keyvalue.protos.ArchiveUploadProgressState
|
import org.thoughtcrime.securesms.keyvalue.protos.ArchiveUploadProgressState
|
||||||
import org.thoughtcrime.securesms.payments.FiatMoneyUtil
|
import org.thoughtcrime.securesms.payments.FiatMoneyUtil
|
||||||
@@ -687,14 +687,10 @@ private fun BackupCard(
|
|||||||
}
|
}
|
||||||
|
|
||||||
Text(
|
Text(
|
||||||
text = buildAnnotatedString {
|
text = signalSymbolText(
|
||||||
if (backupState.isActive()) {
|
text = title,
|
||||||
SignalSymbol(SignalSymbols.Weight.REGULAR, SignalSymbols.Glyph.CHECKMARK)
|
glyphStart = if (backupState.isActive()) SignalSymbols.Glyph.CHECKMARK else null
|
||||||
append(" ")
|
),
|
||||||
}
|
|
||||||
|
|
||||||
append(title)
|
|
||||||
},
|
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
style = MaterialTheme.typography.bodyMedium
|
style = MaterialTheme.typography.bodyMedium
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
package org.thoughtcrime.securesms.components.webrtc
|
package org.thoughtcrime.securesms.components.webrtc
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.text.SpannableStringBuilder
|
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
@@ -19,7 +18,6 @@ import org.thoughtcrime.securesms.components.webrtc.v2.PendingParticipantsListen
|
|||||||
import org.thoughtcrime.securesms.fonts.SignalSymbols
|
import org.thoughtcrime.securesms.fonts.SignalSymbols
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
import org.thoughtcrime.securesms.service.webrtc.PendingParticipantCollection
|
import org.thoughtcrime.securesms.service.webrtc.PendingParticipantCollection
|
||||||
import org.thoughtcrime.securesms.util.SpanUtil
|
|
||||||
import org.thoughtcrime.securesms.util.ViewUtil
|
import org.thoughtcrime.securesms.util.ViewUtil
|
||||||
import org.thoughtcrime.securesms.util.visible
|
import org.thoughtcrime.securesms.util.visible
|
||||||
|
|
||||||
@@ -60,26 +58,11 @@ class PendingParticipantsView @JvmOverloads constructor(
|
|||||||
avatar.setAvatar(firstRecipient)
|
avatar.setAvatar(firstRecipient)
|
||||||
avatar.setOnClickListener { listener?.onLaunchRecipientSheet(firstRecipient) }
|
avatar.setOnClickListener { listener?.onLaunchRecipientSheet(firstRecipient) }
|
||||||
|
|
||||||
name.text = if (ViewUtil.isLtr(this)) {
|
name.text = SignalSymbols.getSignalSymbolText(
|
||||||
SpannableStringBuilder(firstRecipient.getShortDisplayName(context))
|
context = context,
|
||||||
.append(" ")
|
text = firstRecipient.getShortDisplayName(context),
|
||||||
.append(
|
glyphEnd = if (ViewUtil.isLtr(context)) SignalSymbols.Glyph.CHEVRON_RIGHT else SignalSymbols.Glyph.CHEVRON_LEFT
|
||||||
SpanUtil.ofSize(
|
)
|
||||||
SignalSymbols.getSpannedString(context, SignalSymbols.Weight.REGULAR, SignalSymbols.Glyph.CHEVRON_RIGHT),
|
|
||||||
16
|
|
||||||
)
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
SpannableStringBuilder(firstRecipient.getShortDisplayName(context))
|
|
||||||
.insert(0, " ")
|
|
||||||
.insert(
|
|
||||||
0,
|
|
||||||
SpanUtil.ofSize(
|
|
||||||
SignalSymbols.getSpannedString(context, SignalSymbols.Weight.REGULAR, SignalSymbols.Glyph.CHEVRON_LEFT),
|
|
||||||
16
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
name.setOnClickListener { listener?.onLaunchRecipientSheet(firstRecipient) }
|
name.setOnClickListener { listener?.onLaunchRecipientSheet(firstRecipient) }
|
||||||
|
|
||||||
allow.setOnClickListener { listener?.onAllowPendingRecipient(firstRecipient) }
|
allow.setOnClickListener { listener?.onAllowPendingRecipient(firstRecipient) }
|
||||||
|
|||||||
@@ -15,9 +15,11 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.text.AnnotatedString
|
import androidx.compose.ui.text.AnnotatedString
|
||||||
import androidx.compose.ui.text.SpanStyle
|
import androidx.compose.ui.text.SpanStyle
|
||||||
|
import androidx.compose.ui.text.buildAnnotatedString
|
||||||
import androidx.compose.ui.text.font.FontFamily
|
import androidx.compose.ui.text.font.FontFamily
|
||||||
import androidx.compose.ui.text.withStyle
|
import androidx.compose.ui.text.withStyle
|
||||||
import org.thoughtcrime.securesms.util.SpanUtil
|
import org.thoughtcrime.securesms.util.SpanUtil
|
||||||
|
import org.thoughtcrime.securesms.util.ViewUtil
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper object for working with the SignalSymbols font
|
* Helper object for working with the SignalSymbols font
|
||||||
@@ -29,7 +31,163 @@ object SignalSymbols {
|
|||||||
CHEVRON_LEFT('\uE024'),
|
CHEVRON_LEFT('\uE024'),
|
||||||
CHEVRON_RIGHT('\uE025'),
|
CHEVRON_RIGHT('\uE025'),
|
||||||
PERSON_CIRCLE('\uE05E'),
|
PERSON_CIRCLE('\uE05E'),
|
||||||
LOCK('\uE041')
|
LOCK('\uE041'),
|
||||||
|
LOCK_OPEN('\uE07D'),
|
||||||
|
LOGO('\uE000'),
|
||||||
|
ALBUM('\uE001'),
|
||||||
|
APPEARANCE('\uE031'),
|
||||||
|
ARROW_LEFT('\u2190'),
|
||||||
|
ARROW_RIGHT('\u2192'),
|
||||||
|
ARROW_UP('\u2191'),
|
||||||
|
ARROW_DOWN('\u2193'),
|
||||||
|
ARROW_UP_LEFT('\u2196'),
|
||||||
|
ARROW_UP_RIGHT('\u2197'),
|
||||||
|
ARROW_DOWN_LEFT('\u2199'),
|
||||||
|
ARROW_DOWN_RIGHT('\u2198'),
|
||||||
|
ARROW_CIRCLE_LEFT('\uE00B'),
|
||||||
|
ARROW_CIRCLE_RIGHT('\uE00C'),
|
||||||
|
ARROW_CIRCLE_UP('\uE00D'),
|
||||||
|
ARROW_CIRCLE_DOWN('\uE00E'),
|
||||||
|
ARROW_CIRCLE_UP_LEFT('\uE00F'),
|
||||||
|
ARROW_CIRCLE_UP_RIGHT('\uE010'),
|
||||||
|
ARROW_CIRCLE_DOWN_LEFT('\uE011'),
|
||||||
|
ARROW_CIRCLE_DOWN_RIGHT('\uE012'),
|
||||||
|
ARROW_SQUARE_LEFT('\uE013'),
|
||||||
|
ARROW_SQUARE_RIGHT('\uE014'),
|
||||||
|
ARROW_SQUARE_UP('\uE015'),
|
||||||
|
ARROW_SQUARE_DOWN('\uE016'),
|
||||||
|
ARROW_SQUARE_UP_LEFT('\uE017'),
|
||||||
|
ARROW_SQUARE_UP_RIGHT('\uE018'),
|
||||||
|
ARROW_SQUARE_DOWN_LEFT('\uE019'),
|
||||||
|
ARROW_SQUARE_DOWN_RIGHT('\uE01A'),
|
||||||
|
ARROW_DASH_DOWN('\uE021'),
|
||||||
|
ARROW_CIRCLE_LEFT_FILL('\uE003'),
|
||||||
|
ARROW_CIRCLE_RIGHT_FILL('\uE004'),
|
||||||
|
ARROW_CIRCLE_UP_FILL('\uE005'),
|
||||||
|
ARROW_CIRCLE_DOWN_FILL('\uE006'),
|
||||||
|
ARROW_CIRCLE_UP_LEFT_FILL('\uE007'),
|
||||||
|
ARROW_CIRCLE_UP_RIGHT_FILL('\uE008'),
|
||||||
|
ARROW_CIRCLE_DOWN_LEFT_FILL('\uE009'),
|
||||||
|
ARROW_CIRCLE_DOWN_RIGHT_FILL('\uE00A'),
|
||||||
|
ARROW_SQUARE_LEFT_FILL('\uE08A'),
|
||||||
|
ARROW_SQUARE_RIGHT_FILL('\uE08B'),
|
||||||
|
ARROW_SQUARE_UP_FILL('\uE08C'),
|
||||||
|
ARROW_SQUARE_DOWN_FILL('\uE08D'),
|
||||||
|
ARROW_SQUARE_UP_LEFT_FILL('\uE08E'),
|
||||||
|
ARROW_SQUARE_UP_RIGHT_FILL('\uE08F'),
|
||||||
|
ARROW_SQUARE_DOWN_LEFT_FILL('\uE090'),
|
||||||
|
ARROW_SQUARE_DOWN_RIGHT_FILL('\uE091'),
|
||||||
|
AT('\uE01B'),
|
||||||
|
ATTACH('\uE058'),
|
||||||
|
AUDIO('\uE01C'),
|
||||||
|
AUDIO_RECTANGLE('\uE01D'),
|
||||||
|
BADGE('\uE099'),
|
||||||
|
BADGE_FILL('\uE09A'),
|
||||||
|
BELL('\uE01E'),
|
||||||
|
BELL_SLASH('\uE01F'),
|
||||||
|
BELL_RING('\uE020'),
|
||||||
|
BLOCK('\uE002'),
|
||||||
|
CHECK('\u2713'),
|
||||||
|
CHECK_CIRCLE('\uE022'),
|
||||||
|
CHECK_SQUARE('\uE023'),
|
||||||
|
CHEVRON_UP('\uE026'),
|
||||||
|
CHEVRON_DOWN('\uE027'),
|
||||||
|
CHEVRON_CIRCLE_LEFT('\uE028'),
|
||||||
|
CHEVRON_CIRCLE_RIGHT('\uE029'),
|
||||||
|
CHEVRON_CIRCLE_UP('\uE02A'),
|
||||||
|
CHEVRON_CIRCLE_DOWN('\uE02B'),
|
||||||
|
CHEVRON_SQUARE_LEFT('\uE02C'),
|
||||||
|
CHEVRON_SQUARE_RIGHT('\uE02D'),
|
||||||
|
CHEVRON_SQUARE_UP('\uE02E'),
|
||||||
|
CHEVRON_SQUARE_DOWN('\uE02F'),
|
||||||
|
DROPDOWN_DOWN('\uE07F'),
|
||||||
|
DROPDOWN_UP('\uE080'),
|
||||||
|
DROPDOWN_TRIANGLE_DOWN('\uE082'),
|
||||||
|
EDIT('\uE030'),
|
||||||
|
EMOJI('\u263A'),
|
||||||
|
ERROR('\uE032'),
|
||||||
|
ERROR_TRIANGLE('\uE092'),
|
||||||
|
ERROR_FILL('\uE093'),
|
||||||
|
ERROR_TRIANGLE_FILL('\uE094'),
|
||||||
|
FILE('\uE034'),
|
||||||
|
FORWARD('\uE035'),
|
||||||
|
FORWARD_FILL('\uE036'),
|
||||||
|
GIF('\uE037'),
|
||||||
|
GIF_RECTANGLE('\uE097'),
|
||||||
|
GROUP('\uE038'),
|
||||||
|
HEART('\uE039'),
|
||||||
|
INCOMING('\uE03A'),
|
||||||
|
INFO('\uE03B'),
|
||||||
|
LEAVE('\uE03C'),
|
||||||
|
LEAVE_RTL('\uE03D'),
|
||||||
|
LINK('\uE03E'),
|
||||||
|
LINK_ANDROID('\uE03F'),
|
||||||
|
LINK_BROKEN('\uE057'),
|
||||||
|
LINK_SLASH('\uE040'),
|
||||||
|
MEGAPHONE('\uE042'),
|
||||||
|
MERGE('\uE043'),
|
||||||
|
MESSAGE_STATUS_SENDING('\uE044'),
|
||||||
|
MESSAGE_STATUS_SENT('\uE045'),
|
||||||
|
MESSAGE_STATUS_READ('\uE046'),
|
||||||
|
MESSAGE_STATUS_DELIVERED('\uE047'),
|
||||||
|
MESSAGE_TIMER_00('\uE048'),
|
||||||
|
MESSAGE_TIMER_05('\uE049'),
|
||||||
|
MESSAGE_TIMER_10('\uE04A'),
|
||||||
|
MESSAGE_TIMER_15('\uE04B'),
|
||||||
|
MESSAGE_TIMER_20('\uE04C'),
|
||||||
|
MESSAGE_TIMER_25('\uE04D'),
|
||||||
|
MESSAGE_TIMER_30('\uE04E'),
|
||||||
|
MESSAGE_TIMER_35('\uE04F'),
|
||||||
|
MESSAGE_TIMER_40('\uE050'),
|
||||||
|
MESSAGE_TIMER_45('\uE051'),
|
||||||
|
MESSAGE_TIMER_50('\uE052'),
|
||||||
|
MESSAGE_TIMER_55('\uE053'),
|
||||||
|
MESSAGE_TIMER_60('\uE054'),
|
||||||
|
MIC('\uE055'),
|
||||||
|
MIC_SLASH('\uE056'),
|
||||||
|
MINUS('\u2212'),
|
||||||
|
MINUS_CIRCLE('\u2296'),
|
||||||
|
MINUS_SQUARE('\uE059'),
|
||||||
|
MISSED_INCOMING('\uE05A'),
|
||||||
|
MISSED_OUTGOING('\uE05B'),
|
||||||
|
NOTE('\uE095'),
|
||||||
|
NOTE_RTL('\uE096'),
|
||||||
|
OFFICIAL_BADGE('\uE086'),
|
||||||
|
OFFICIAL_BADGE_FILL('\uE087'),
|
||||||
|
OUTGOING('\uE05C'),
|
||||||
|
PERSON('\uE05D'),
|
||||||
|
PERSON_CHECK('\uE05F'),
|
||||||
|
PERSON_X('\uE060'),
|
||||||
|
PERSON_PLUS('\uE061'),
|
||||||
|
PERSON_MINUS('\uE062'),
|
||||||
|
PHONE('\uE063'),
|
||||||
|
PHONE_FILL('\uE064'),
|
||||||
|
PHOTO('\uE065'),
|
||||||
|
PLAY('\uE067'),
|
||||||
|
PLUS('\u002B'),
|
||||||
|
PLUS_CIRCLE('\u2295'),
|
||||||
|
PLUS_SQUARE('\uE06C'),
|
||||||
|
RAISE_HAND('\uE07E'),
|
||||||
|
RAISE_HAND_FILL('\uE084'),
|
||||||
|
REPLY('\uE06D'),
|
||||||
|
REPLY_FILL('\uE06E'),
|
||||||
|
SAFETY_NUMBER('\uE06F'),
|
||||||
|
SPAM('\uE033'),
|
||||||
|
STICKER('\uE070'),
|
||||||
|
THREAD('\uE071'),
|
||||||
|
THREAD_FILL('\uE072'),
|
||||||
|
TIMER('\uE073'),
|
||||||
|
TIMER_SLASH('\uE074'),
|
||||||
|
VIDEO_CAMERA('\uE075'),
|
||||||
|
VIDEO_CAMERA_SLASH('\uE076'),
|
||||||
|
VIDEO_CAMERA_FILL('\uE077'),
|
||||||
|
VIDEO('\uE088'),
|
||||||
|
VIEW_ONCE('\uE078'),
|
||||||
|
VIEW_ONCE_DASH('\uE079'),
|
||||||
|
VIEW_ONCE_VIEWED('\uE07A'),
|
||||||
|
X('\u00D7'),
|
||||||
|
X_CIRCLE('\u2297'),
|
||||||
|
X_SQUARE('\u2327')
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class Weight {
|
enum class Weight {
|
||||||
@@ -59,6 +217,46 @@ object SignalSymbols {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun getSignalSymbolText(
|
||||||
|
context: Context,
|
||||||
|
text: String,
|
||||||
|
glyphStart: Glyph? = null,
|
||||||
|
glyphEnd: Glyph? = null,
|
||||||
|
glyphStartWeight: Weight = Weight.REGULAR,
|
||||||
|
glyphEndWeight: Weight = Weight.REGULAR,
|
||||||
|
glyphStartSizeSp: Int = 16,
|
||||||
|
glyphEndSizeSp: Int = 16
|
||||||
|
): AnnotatedString {
|
||||||
|
val isLtr = ViewUtil.isLtr(context)
|
||||||
|
val leftGlyph = if (isLtr) glyphStart else glyphEnd
|
||||||
|
val leftGlyphWeight = if (isLtr) glyphStartWeight else glyphEndWeight
|
||||||
|
val leftGlyphSizeSp = if (isLtr) glyphStartSizeSp else glyphEndSizeSp
|
||||||
|
val rightGlyph = if (isLtr) glyphEnd else glyphStart
|
||||||
|
val rightGlyphWeight = if (isLtr) glyphEndWeight else glyphStartWeight
|
||||||
|
val rightGlyphSizeSp = if (isLtr) glyphEndSizeSp else glyphStartSizeSp
|
||||||
|
|
||||||
|
return buildAnnotatedString {
|
||||||
|
if (leftGlyph != null) {
|
||||||
|
val symbol = SpanUtil.ofSize(
|
||||||
|
getSpannedString(context, leftGlyphWeight, leftGlyph),
|
||||||
|
leftGlyphSizeSp
|
||||||
|
)
|
||||||
|
append(symbol)
|
||||||
|
append(" ")
|
||||||
|
}
|
||||||
|
append(text)
|
||||||
|
if (rightGlyph != null) {
|
||||||
|
val symbol = SpanUtil.ofSize(
|
||||||
|
getSpannedString(context, rightGlyphWeight, rightGlyph),
|
||||||
|
rightGlyphSizeSp
|
||||||
|
)
|
||||||
|
append(" ")
|
||||||
|
append(symbol)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AnnotatedString.Builder.SignalSymbol(weight: Weight, glyph: Glyph) {
|
fun AnnotatedString.Builder.SignalSymbol(weight: Weight, glyph: Glyph) {
|
||||||
withStyle(
|
withStyle(
|
||||||
@@ -70,6 +268,28 @@ object SignalSymbols {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun signalSymbolText(
|
||||||
|
text: String,
|
||||||
|
glyphStart: Glyph? = null,
|
||||||
|
glyphEnd: Glyph? = null,
|
||||||
|
glyphStartWeight: Weight = Weight.REGULAR,
|
||||||
|
glyphEndWeight: Weight = Weight.REGULAR,
|
||||||
|
glyphStartSizeSp: Int = 16,
|
||||||
|
glyphEndSizeSp: Int = 16
|
||||||
|
): AnnotatedString {
|
||||||
|
return getSignalSymbolText(
|
||||||
|
context = LocalContext.current,
|
||||||
|
text = text,
|
||||||
|
glyphStart = glyphStart,
|
||||||
|
glyphEnd = glyphEnd,
|
||||||
|
glyphStartWeight = glyphStartWeight,
|
||||||
|
glyphEndWeight = glyphEndWeight,
|
||||||
|
glyphStartSizeSp = glyphStartSizeSp,
|
||||||
|
glyphEndSizeSp = glyphEndSizeSp
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private fun getTypeface(context: Context, weight: Weight): Typeface {
|
private fun getTypeface(context: Context, weight: Weight): Typeface {
|
||||||
return when (weight) {
|
return when (weight) {
|
||||||
Weight.BOLD -> getBoldWeightedFont(context)
|
Weight.BOLD -> getBoldWeightedFont(context)
|
||||||
|
|||||||
Reference in New Issue
Block a user