Move dont translate settings to the dedicated user settings page

This commit is contained in:
David Kaspar
2025-06-25 20:31:21 +02:00
parent 3524f7e412
commit c59086068b
4 changed files with 71 additions and 59 deletions

View File

@@ -253,9 +253,6 @@ private fun NavigateIfIntentRequested(
}
nav.newStack(Route.NewPost(message = message, attachment = media.toString()))
media = null
message = null
} else {
var newAccount by remember { mutableStateOf<String?>(null) }

View File

@@ -898,6 +898,8 @@ class AccountViewModel(
fun dontTranslateFrom() = account.settings.syncedSettings.languages.dontTranslateFrom
fun toggleDontTranslateFrom(languageCode: String) = account.toggleDontTranslateFrom(languageCode)
fun translateTo() = account.settings.syncedSettings.languages.translateTo
fun defaultZapType() = account.settings.syncedSettings.zaps.defaultZapType.value

View File

@@ -32,18 +32,10 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ExposedDropdownMenuBox
import androidx.compose.material3.ExposedDropdownMenuDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@@ -85,7 +77,6 @@ import kotlinx.collections.immutable.toImmutableMap
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
import java.io.IOException
import java.util.Locale as JavaLocale
fun Context.getLocaleListFromXml(): LocaleListCompat {
val tagsList = mutableListOf<CharSequence>()
@@ -128,7 +119,7 @@ fun getLanguageIndex(
sharedPreferencesViewModel: SharedPreferencesViewModel,
): Int {
val language = sharedPreferencesViewModel.sharedPrefs.language
var languageIndex = -1
var languageIndex: Int
if (language != null) {
languageIndex = languageEntries.values.toTypedArray().indexOf(language)
} else {
@@ -242,10 +233,6 @@ fun SettingsScreen(sharedPreferencesViewModel: SharedPreferencesViewModel) {
Spacer(modifier = HalfVertSpacer)
DontTranslateFromSetting(sharedPreferencesViewModel)
Spacer(modifier = HalfVertSpacer)
SettingsRow(
R.string.theme,
R.string.theme_description,
@@ -335,48 +322,6 @@ fun SettingsScreen(sharedPreferencesViewModel: SharedPreferencesViewModel) {
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DontTranslateFromSetting(sharedPreferencesViewModel: SharedPreferencesViewModel) {
var expanded by remember { mutableStateOf(false) }
val selectedLanguages = sharedPreferencesViewModel.sharedPrefs.dontTranslateFrom
Column {
SettingsRow(
name = R.string.dont_translate_from,
description = R.string.dont_translate_from_description,
) {
ExposedDropdownMenuBox(
expanded = expanded,
onExpandedChange = { expanded = !expanded },
) {
OutlinedTextField(
value = stringRes(R.string.add_a_language),
onValueChange = {},
readOnly = true,
trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) },
modifier = Modifier.menuAnchor(),
)
ExposedDropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
) {
selectedLanguages.forEach { languageCode ->
DropdownMenuItem(
text = { Text(text = JavaLocale.forLanguageTag(languageCode).displayName) },
onClick = {
sharedPreferencesViewModel.removeDontTranslateFrom(languageCode)
expanded = false
},
)
}
}
}
}
}
}
@Composable
fun SettingsRow(
name: Int,

View File

@@ -21,9 +21,22 @@
package com.vitorpamplona.amethyst.ui.screen.loggedIn.settings
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ExposedDropdownMenuBox
import androidx.compose.material3.ExposedDropdownMenuDefaults
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold
@@ -31,6 +44,9 @@ import com.vitorpamplona.amethyst.ui.navigation.INav
import com.vitorpamplona.amethyst.ui.navigation.TopBarWithBackButton
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.Size10dp
import com.vitorpamplona.amethyst.ui.theme.Size20dp
import java.util.Locale as JavaLocale
@Composable
fun UserSettingsScreen(
@@ -46,6 +62,58 @@ fun UserSettingsScreen(
) {
Column(Modifier.padding(it)) {
Text("Hello World!")
Column(
Modifier
.fillMaxSize()
.padding(top = Size10dp, start = Size20dp, end = Size20dp)
.verticalScroll(rememberScrollState()),
horizontalAlignment = Alignment.CenterHorizontally,
) {
DontTranslateFromSetting(accountViewModel)
}
}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DontTranslateFromSetting(accountViewModel: AccountViewModel) {
var expanded by remember { mutableStateOf(false) }
val selectedLanguages = accountViewModel.dontTranslateFrom()
Column {
SettingsRow(
name = R.string.dont_translate_from,
description = R.string.dont_translate_from_description,
) {
ExposedDropdownMenuBox(
expanded = expanded,
onExpandedChange = { expanded = !expanded },
) {
OutlinedTextField(
value = stringRes(R.string.add_a_language),
onValueChange = {},
readOnly = true,
trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) },
modifier = Modifier.menuAnchor(),
)
ExposedDropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
) {
selectedLanguages.forEach { languageCode ->
DropdownMenuItem(
text = { Text(text = JavaLocale.forLanguageTag(languageCode).displayName) },
onClick = {
accountViewModel.toggleDontTranslateFrom(languageCode)
expanded = false
},
)
}
}
}
}
}
}