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())) nav.newStack(Route.NewPost(message = message, attachment = media.toString()))
media = null
message = null
} else { } else {
var newAccount by remember { mutableStateOf<String?>(null) } var newAccount by remember { mutableStateOf<String?>(null) }

View File

@@ -898,6 +898,8 @@ class AccountViewModel(
fun dontTranslateFrom() = account.settings.syncedSettings.languages.dontTranslateFrom fun dontTranslateFrom() = account.settings.syncedSettings.languages.dontTranslateFrom
fun toggleDontTranslateFrom(languageCode: String) = account.toggleDontTranslateFrom(languageCode)
fun translateTo() = account.settings.syncedSettings.languages.translateTo fun translateTo() = account.settings.syncedSettings.languages.translateTo
fun defaultZapType() = account.settings.syncedSettings.zaps.defaultZapType.value 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.layout.windowInsetsPadding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll 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.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
@@ -85,7 +77,6 @@ import kotlinx.collections.immutable.toImmutableMap
import org.xmlpull.v1.XmlPullParser import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException import org.xmlpull.v1.XmlPullParserException
import java.io.IOException import java.io.IOException
import java.util.Locale as JavaLocale
fun Context.getLocaleListFromXml(): LocaleListCompat { fun Context.getLocaleListFromXml(): LocaleListCompat {
val tagsList = mutableListOf<CharSequence>() val tagsList = mutableListOf<CharSequence>()
@@ -128,7 +119,7 @@ fun getLanguageIndex(
sharedPreferencesViewModel: SharedPreferencesViewModel, sharedPreferencesViewModel: SharedPreferencesViewModel,
): Int { ): Int {
val language = sharedPreferencesViewModel.sharedPrefs.language val language = sharedPreferencesViewModel.sharedPrefs.language
var languageIndex = -1 var languageIndex: Int
if (language != null) { if (language != null) {
languageIndex = languageEntries.values.toTypedArray().indexOf(language) languageIndex = languageEntries.values.toTypedArray().indexOf(language)
} else { } else {
@@ -242,10 +233,6 @@ fun SettingsScreen(sharedPreferencesViewModel: SharedPreferencesViewModel) {
Spacer(modifier = HalfVertSpacer) Spacer(modifier = HalfVertSpacer)
DontTranslateFromSetting(sharedPreferencesViewModel)
Spacer(modifier = HalfVertSpacer)
SettingsRow( SettingsRow(
R.string.theme, R.string.theme,
R.string.theme_description, 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 @Composable
fun SettingsRow( fun SettingsRow(
name: Int, name: Int,

View File

@@ -21,9 +21,22 @@
package com.vitorpamplona.amethyst.ui.screen.loggedIn.settings package com.vitorpamplona.amethyst.ui.screen.loggedIn.settings
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding 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.material3.Text
import androidx.compose.runtime.Composable 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.Modifier
import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold 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.navigation.TopBarWithBackButton
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.stringRes 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 @Composable
fun UserSettingsScreen( fun UserSettingsScreen(
@@ -46,6 +62,58 @@ fun UserSettingsScreen(
) { ) {
Column(Modifier.padding(it)) { Column(Modifier.padding(it)) {
Text("Hello World!") 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
},
)
}
}
}
} }
} }
} }