mirror of
https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy.git
synced 2025-02-09 07:28:41 +01:00
feat: language flags (#167)
This commit is contained in:
parent
c44a9dc6e5
commit
435bfae283
@ -13,6 +13,7 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.buildAnnotatedString
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomSheetHandle
|
||||
@ -21,6 +22,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationC
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLanguageFlag
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLanguageName
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
@ -100,7 +102,13 @@ class LanguageBottomSheet : Screen {
|
||||
),
|
||||
) {
|
||||
Text(
|
||||
text = value.toLanguageName(),
|
||||
text = buildAnnotatedString {
|
||||
with(value) {
|
||||
append(toLanguageFlag())
|
||||
append(" ")
|
||||
append(toLanguageName())
|
||||
}
|
||||
},
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
color = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
|
@ -2,8 +2,11 @@ package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.SpanStyle
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.fontFamilyResource
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
import kotlin.math.round
|
||||
|
||||
@ -37,6 +40,42 @@ fun String.toLanguageName() = when (this) {
|
||||
else -> stringResource(MR.strings.language_en)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun String.toLanguageFlag(): AnnotatedString = when (this) {
|
||||
"bg" -> "🇧🇬"
|
||||
"cs" -> "🇨🇿"
|
||||
"da" -> "🇩🇰"
|
||||
"de" -> "🇩🇪"
|
||||
"el" -> "🇬🇷"
|
||||
"en" -> "🇬🇧"
|
||||
"eo" -> "🍀"
|
||||
"es" -> "🇪🇸"
|
||||
"et" -> "🇪🇪"
|
||||
"ga" -> "🇮🇪"
|
||||
"fi" -> "🇫🇮"
|
||||
"fr" -> "🇫🇷"
|
||||
"hu" -> "🇭🇺"
|
||||
"hr" -> "🇭🇷"
|
||||
"it" -> "🇮🇹"
|
||||
"lt" -> "🇱🇹"
|
||||
"lv" -> "🇱🇻"
|
||||
"mt" -> "🇲🇹"
|
||||
"no" -> "🇳🇴"
|
||||
"nl" -> "🇳🇱"
|
||||
"pl" -> "🇵🇱"
|
||||
"pt" -> "🇵🇹"
|
||||
"ro" -> "🇷🇴"
|
||||
"se" -> "🇸🇪"
|
||||
"sk" -> "🇸🇰"
|
||||
"sl" -> "🇸🇮"
|
||||
else -> ""
|
||||
}.let {
|
||||
AnnotatedString(
|
||||
text = it,
|
||||
spanStyle = SpanStyle(fontFamily = fontFamilyResource(MR.fonts.TitilliumWeb.regular))
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun Dp.toLocalPixel(): Float = with(LocalDensity.current) {
|
||||
value * density
|
||||
|
@ -36,6 +36,7 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.compose.ui.layout.onGloballyPositioned
|
||||
import androidx.compose.ui.text.buildAnnotatedString
|
||||
import androidx.compose.ui.unit.toSize
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
@ -64,6 +65,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime.getPrettyDuration
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLanguageFlag
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLanguageName
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLocalDp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
|
||||
@ -254,7 +256,13 @@ class SettingsScreen : Screen {
|
||||
// language
|
||||
SettingsRow(
|
||||
title = stringResource(MR.strings.settings_language),
|
||||
value = uiState.lang.toLanguageName(),
|
||||
annotatedValue = buildAnnotatedString {
|
||||
with(uiState.lang) {
|
||||
append(toLanguageFlag())
|
||||
append(" ")
|
||||
append(toLanguageName())
|
||||
}
|
||||
},
|
||||
onTap = rememberCallback {
|
||||
val sheet = LanguageBottomSheet()
|
||||
navigationCoordinator.showBottomSheet(sheet)
|
||||
|
@ -8,6 +8,7 @@ import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
@ -16,7 +17,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallb
|
||||
@Composable
|
||||
internal fun SettingsRow(
|
||||
title: String,
|
||||
value: String,
|
||||
value: String = "",
|
||||
annotatedValue: AnnotatedString = AnnotatedString(""),
|
||||
modifier: Modifier = Modifier,
|
||||
subtitle: String? = null,
|
||||
onTap: (() -> Unit)? = null,
|
||||
@ -47,13 +49,24 @@ internal fun SettingsRow(
|
||||
)
|
||||
}
|
||||
}
|
||||
Text(
|
||||
modifier = Modifier.padding(start = Spacing.xs),
|
||||
text = value,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onBackground,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
)
|
||||
if (annotatedValue.isNotEmpty()) {
|
||||
Text(
|
||||
modifier = Modifier.padding(start = Spacing.xs),
|
||||
text = annotatedValue,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onBackground,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
)
|
||||
} else {
|
||||
Text(
|
||||
modifier = Modifier.padding(start = Spacing.xs),
|
||||
text = value,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onBackground,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user