Use all system locales to determine default currencies

This commit is contained in:
MM20
2026-08-11 21:47:44 +02:00
parent c255894f3b
commit 057de087e9
2 changed files with 28 additions and 11 deletions

View File

@@ -37,7 +37,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.platform.LocalLocale import androidx.compose.ui.platform.LocalLocaleList
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -84,9 +84,11 @@ fun CurrencySettingsScreen() {
} }
) )
val locale = LocalLocale.current val localeList = LocalLocaleList.current
val defaultCurrency = remember(locale) { val defaultCurrencies = remember(localeList) {
Currency.getInstance(locale.platformLocale) localeList.mapNotNull {
Currency.getInstance(it.platformLocale)
}.distinctBy { it.currencyCode }
} }
DragAndDropPreferenceScreen( DragAndDropPreferenceScreen(
@@ -110,7 +112,7 @@ fun CurrencySettingsScreen() {
if (it) { if (it) {
localeSettings.setCurrencies(emptyList()) localeSettings.setCurrencies(emptyList())
} else { } else {
localeSettings.setCurrencies(listOf(defaultCurrency.currencyCode)) localeSettings.setCurrencies(defaultCurrencies.map { it.currencyCode })
} }
}, },
) )
@@ -121,11 +123,13 @@ fun CurrencySettingsScreen() {
if (currencies!!.isEmpty()) { if (currencies!!.isEmpty()) {
item { item {
PreferenceCategory { PreferenceCategory {
Preference( for (currency in defaultCurrencies) {
title = defaultCurrency.displayName, Preference(
icon = R.drawable.euro_24px, title = currency.displayName,
enabled = false icon = getCurrencySymbol(currency.currencyCode),
) enabled = false
)
}
} }
} }
} else { } else {

View File

@@ -90,7 +90,20 @@ class CurrencyConverter(
}.toMutableList() }.toMutableList()
val ownCurrencySymbols = preferredCurrencies.ifEmpty { val ownCurrencySymbols = preferredCurrencies.ifEmpty {
listOf(JCurrency.getInstance(Locale.getDefault()).currencyCode ?: "USD") val defaultCurrencySymbols = mutableListOf<String>()
val localeList = context.resources.configuration.locales
for (i in 0 until localeList.size()) {
val locale = localeList[i]
val currency = try {
JCurrency.getInstance(locale)
} catch (_: IllegalArgumentException) {
null
}
if (currency != null) {
defaultCurrencySymbols.add(currency.currencyCode)
}
}
defaultCurrencySymbols.distinct()
} }
val topCurrencies = ownCurrencySymbols + topCurrencies val topCurrencies = ownCurrencySymbols + topCurrencies