mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-10-10 12:02:45 +02:00
Move dont translate settings to the dedicated user settings page
This commit is contained in:
@@ -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) }
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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,
|
||||||
|
@@ -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
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user