Change to show excluded languages in dropdown, no rows below
TODO: Load actually excluded languages Optimise code Improve UI
This commit is contained in:
-8
@@ -83,14 +83,6 @@ class SharedPreferencesViewModel : ViewModel() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addDontTranslateFrom(languageCode: String) {
|
|
||||||
val newSet = sharedPrefs.dontTranslateFrom.plus(languageCode)
|
|
||||||
if (newSet != sharedPrefs.dontTranslateFrom) {
|
|
||||||
sharedPrefs.dontTranslateFrom = newSet
|
|
||||||
saveSharedSettings()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun removeDontTranslateFrom(languageCode: String) {
|
fun removeDontTranslateFrom(languageCode: String) {
|
||||||
val newSet = sharedPrefs.dontTranslateFrom.minus(languageCode)
|
val newSet = sharedPrefs.dontTranslateFrom.minus(languageCode)
|
||||||
if (newSet != sharedPrefs.dontTranslateFrom) {
|
if (newSet != sharedPrefs.dontTranslateFrom) {
|
||||||
|
|||||||
+5
-39
@@ -32,14 +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.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.Clear
|
|
||||||
import androidx.compose.material3.DropdownMenuItem
|
import androidx.compose.material3.DropdownMenuItem
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.ExposedDropdownMenuBox
|
import androidx.compose.material3.ExposedDropdownMenuBox
|
||||||
import androidx.compose.material3.ExposedDropdownMenuDefaults
|
import androidx.compose.material3.ExposedDropdownMenuDefaults
|
||||||
import androidx.compose.material3.Icon
|
|
||||||
import androidx.compose.material3.IconButton
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.OutlinedTextField
|
import androidx.compose.material3.OutlinedTextField
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
@@ -246,7 +242,7 @@ fun SettingsScreen(sharedPreferencesViewModel: SharedPreferencesViewModel) {
|
|||||||
|
|
||||||
Spacer(modifier = HalfVertSpacer)
|
Spacer(modifier = HalfVertSpacer)
|
||||||
|
|
||||||
DontTranslateFromSetting(sharedPreferencesViewModel, languageEntries)
|
DontTranslateFromSetting(sharedPreferencesViewModel)
|
||||||
|
|
||||||
Spacer(modifier = HalfVertSpacer)
|
Spacer(modifier = HalfVertSpacer)
|
||||||
|
|
||||||
@@ -341,10 +337,7 @@ fun SettingsScreen(sharedPreferencesViewModel: SharedPreferencesViewModel) {
|
|||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun DontTranslateFromSetting(
|
fun DontTranslateFromSetting(sharedPreferencesViewModel: SharedPreferencesViewModel) {
|
||||||
sharedPreferencesViewModel: SharedPreferencesViewModel,
|
|
||||||
languageEntries: ImmutableMap<String, String>,
|
|
||||||
) {
|
|
||||||
var expanded by remember { mutableStateOf(false) }
|
var expanded by remember { mutableStateOf(false) }
|
||||||
val selectedLanguages = sharedPreferencesViewModel.sharedPrefs.dontTranslateFrom
|
val selectedLanguages = sharedPreferencesViewModel.sharedPrefs.dontTranslateFrom
|
||||||
|
|
||||||
@@ -369,12 +362,11 @@ fun DontTranslateFromSetting(
|
|||||||
expanded = expanded,
|
expanded = expanded,
|
||||||
onDismissRequest = { expanded = false },
|
onDismissRequest = { expanded = false },
|
||||||
) {
|
) {
|
||||||
languageEntries.forEach { (displayName, languageCode) ->
|
selectedLanguages.forEach { languageCode ->
|
||||||
if (!selectedLanguages.contains(languageCode)) {
|
|
||||||
DropdownMenuItem(
|
DropdownMenuItem(
|
||||||
text = { Text(text = displayName) },
|
text = { Text(text = JavaLocale.forLanguageTag(languageCode).displayName) },
|
||||||
onClick = {
|
onClick = {
|
||||||
sharedPreferencesViewModel.addDontTranslateFrom(languageCode)
|
sharedPreferencesViewModel.removeDontTranslateFrom(languageCode)
|
||||||
expanded = false
|
expanded = false
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@@ -383,32 +375,6 @@ fun DontTranslateFromSetting(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedLanguages.forEach { languageCode ->
|
|
||||||
val displayName =
|
|
||||||
languageEntries.entries.find { it.value == languageCode }?.key
|
|
||||||
?: JavaLocale.forLanguageTag(languageCode).displayName
|
|
||||||
Row(
|
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
|
||||||
modifier =
|
|
||||||
Modifier
|
|
||||||
.fillMaxWidth()
|
|
||||||
.padding(vertical = Size10dp),
|
|
||||||
) {
|
|
||||||
Text(
|
|
||||||
text = displayName,
|
|
||||||
modifier = Modifier.weight(1f),
|
|
||||||
)
|
|
||||||
IconButton(onClick = { sharedPreferencesViewModel.removeDontTranslateFrom(languageCode) }) {
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Default.Clear,
|
|
||||||
contentDescription = stringRes(R.string.remove),
|
|
||||||
tint = MaterialTheme.colorScheme.onSurface,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|||||||
@@ -1180,6 +1180,6 @@
|
|||||||
<string name="search_by_hashtag">Search hashtag: #%1$s</string>
|
<string name="search_by_hashtag">Search hashtag: #%1$s</string>
|
||||||
|
|
||||||
<string name="dont_translate_from">Don\'t Translate From</string>
|
<string name="dont_translate_from">Don\'t Translate From</string>
|
||||||
<string name="dont_translate_from_description">Languages selected here will not be translated</string>
|
<string name="dont_translate_from_description">Languages shown here will not be translated. Select a language to remove it and have it translated again.</string>
|
||||||
<string name="add_a_language">Add a language</string>
|
<string name="add_a_language">Select to remove</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user