From 2fb618888bde249fdb4bc5b1c1ccb81d452e8698 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 2 Mar 2025 09:59:03 +0100 Subject: [PATCH] use some resource strings again --- .../java/helium314/keyboard/settings/Misc.kt | 82 +++++++++++++++++++ .../keyboard/settings/WelcomeWizard.kt | 21 +++-- .../settings/dialogs/NewDictionaryDialog.kt | 18 ++-- .../settings/dialogs/SubtypeDialog.kt | 63 +------------- .../screens/PersonalDictionaryScreen.kt | 2 +- app/src/main/res/values/strings.xml | 2 +- 6 files changed, 113 insertions(+), 75 deletions(-) create mode 100644 app/src/main/java/helium314/keyboard/settings/Misc.kt diff --git a/app/src/main/java/helium314/keyboard/settings/Misc.kt b/app/src/main/java/helium314/keyboard/settings/Misc.kt new file mode 100644 index 00000000..2926c05f --- /dev/null +++ b/app/src/main/java/helium314/keyboard/settings/Misc.kt @@ -0,0 +1,82 @@ +package helium314.keyboard.settings + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.DropdownMenuItem +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +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.draw.rotate +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import helium314.keyboard.latin.R + + +@Composable +fun WithSmallTitle( + description: String, + content: @Composable () -> Unit, +) { + Column { + Text(description, style = MaterialTheme.typography.titleSmall) + content() + } +} + +@Composable +fun DropDownField( + items: List, + selectedItem: T, + onSelected: (T) -> Unit, + extraButton: @Composable (() -> Unit)? = null, + itemContent: @Composable (T) -> Unit, +) { + var expanded by remember { mutableStateOf(false) } + Box( + Modifier.clickable { expanded = !expanded } + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.padding(start = 8.dp, bottom = 4.dp) + ) { + Box(Modifier.weight(1f)) { + itemContent(selectedItem) + } + IconButton( + onClick = { expanded = !expanded }, + enabled = items.size > 1 + ) { + Icon( + painterResource(R.drawable.ic_arrow_left), + "show dropdown", + Modifier.rotate(-90f) + ) + } + if (extraButton != null) + extraButton() + } + } + DropdownMenu( + expanded = expanded, + onDismissRequest = { expanded = false } + ) { + items.forEach { + DropdownMenuItem( + text = { itemContent(it) }, + onClick = { expanded = false; onSelected(it) } + ) + } + } +} diff --git a/app/src/main/java/helium314/keyboard/settings/WelcomeWizard.kt b/app/src/main/java/helium314/keyboard/settings/WelcomeWizard.kt index 04f9eacf..5ed289d7 100644 --- a/app/src/main/java/helium314/keyboard/settings/WelcomeWizard.kt +++ b/app/src/main/java/helium314/keyboard/settings/WelcomeWizard.kt @@ -47,6 +47,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.core.content.ContextCompat import helium314.keyboard.latin.R +import helium314.keyboard.latin.utils.JniUtils import helium314.keyboard.latin.utils.UncachedInputMethodManagerUtils import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -83,12 +84,20 @@ fun WelcomeWizard( val appName = stringResource(ctx.applicationInfo.labelRes) @Composable fun bigText() { val resource = if (step == 0) R.string.setup_welcome_title else R.string.setup_steps_title - Text( - stringResource(resource, appName), - style = MaterialTheme.typography.displayMedium, - textAlign = TextAlign.Center, - modifier = Modifier.padding(bottom = 36.dp) - ) + Column(Modifier.padding(bottom = 36.dp)) { + Text( + stringResource(resource, appName), + style = MaterialTheme.typography.displayMedium, + textAlign = TextAlign.Center, + ) + if (JniUtils.sHaveGestureLib) + Text( + stringResource(R.string.setup_welcome_additional_description), + style = MaterialTheme.typography.bodyLarge, + textAlign = TextAlign.End, + modifier = Modifier.fillMaxWidth() + ) + } } @Composable fun steps() { if (step == 0) diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/NewDictionaryDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/NewDictionaryDialog.kt index 1e717402..2bf3da39 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/NewDictionaryDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/NewDictionaryDialog.kt @@ -28,6 +28,8 @@ import helium314.keyboard.latin.utils.DictionaryInfoUtils import helium314.keyboard.latin.utils.ScriptUtils.script import helium314.keyboard.latin.utils.SubtypeSettings import helium314.keyboard.latin.utils.locale +import helium314.keyboard.settings.DropDownField +import helium314.keyboard.settings.WithSmallTitle import java.io.File import java.util.Locale @@ -68,14 +70,18 @@ fun NewDictionaryDialog( val newDictBroadcast = Intent(DictionaryPackConstants.NEW_DICTIONARY_INTENT_ACTION) ctx.sendBroadcast(newDictBroadcast) }, + confirmButtonText = stringResource(if (dictFile.exists()) R.string.replace_dictionary else android.R.string.ok), + title = { Text(stringResource(R.string.add_new_dictionary_title)) }, content = { Column { - Text(info) - DropDownField( - selectedItem = locale, - onSelected = { locale = it }, - items = locales - ) { Text(it.localizedDisplayName(ctx)) } + Text(info, Modifier.padding(bottom = 10.dp)) + WithSmallTitle(stringResource(R.string.button_select_language)) { + DropDownField( + selectedItem = locale, + onSelected = { locale = it }, + items = locales + ) { Text(it.localizedDisplayName(ctx)) } + } if (locale.script() != dictLocale.script()) { // whatever, still allow it if the user wants HorizontalDivider() diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/SubtypeDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/SubtypeDialog.kt index f7ed3db5..7da713ec 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/SubtypeDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/SubtypeDialog.kt @@ -4,15 +4,12 @@ package helium314.keyboard.settings.dialogs import android.content.Context import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.DropdownMenu -import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -30,7 +27,6 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.rotate import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -72,8 +68,10 @@ import helium314.keyboard.latin.utils.getStringResourceOrName import helium314.keyboard.latin.utils.mainLayoutName import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.DefaultButton +import helium314.keyboard.settings.DropDownField import helium314.keyboard.settings.SettingsActivity import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.WithSmallTitle import helium314.keyboard.settings.initPreview import helium314.keyboard.settings.layoutFilePicker import helium314.keyboard.settings.layoutIntent @@ -441,63 +439,6 @@ private fun MainLayoutRow( } } -@Composable -private fun WithSmallTitle( - description: String, - content: @Composable () -> Unit, -) { - Column { - Text(description, style = MaterialTheme.typography.titleSmall) - content() - } -} - -@Composable -fun DropDownField( - items: List, - selectedItem: T, - onSelected: (T) -> Unit, - extraButton: @Composable (() -> Unit)? = null, - itemContent: @Composable (T) -> Unit, -) { - var expanded by remember { mutableStateOf(false) } - Box( - Modifier.clickable { expanded = !expanded } - ) { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.padding(start = 8.dp, bottom = 4.dp) - ) { - Box(Modifier.weight(1f)) { - itemContent(selectedItem) - } - IconButton( - onClick = { expanded = !expanded }, - enabled = items.size > 1 - ) { - Icon( - painterResource(R.drawable.ic_arrow_left), - "show dropdown", - Modifier.rotate(-90f) - ) - } - if (extraButton != null) - extraButton() - } - } - DropdownMenu( - expanded = expanded, - onDismissRequest = { expanded = false } - ) { - items.forEach { - DropdownMenuItem( - text = { itemContent(it) }, - onClick = { expanded = false; onSelected(it) } - ) - } - } -} - private fun getAvailableSecondaryLocales(context: Context, mainLocale: Locale): List = getDictionaryLocales(context).filter { it != mainLocale && it.script() == mainLocale.script() } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt index 3abba03c..a7bb82f2 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt @@ -32,8 +32,8 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import helium314.keyboard.latin.R import helium314.keyboard.latin.common.LocaleUtils.localizedDisplayName +import helium314.keyboard.settings.DropDownField import helium314.keyboard.settings.SearchScreen -import helium314.keyboard.settings.dialogs.DropDownField import helium314.keyboard.settings.dialogs.ThreeButtonAlertDialog import java.util.Locale diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 44225e68..566196b3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,7 +11,7 @@ HeliBoard Settings - HeliBoard Spell Checker Settings + HeliBoard Spell Checker Settings Vibrate on keypress