From beb52d322fdf5c7c2ebdf410588f195db1267f98 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 30 Jun 2024 09:03:13 +0200 Subject: [PATCH] safeguard against potential issues with custom currency key --- .../internal/keyboard_parser/LocaleKeyboardInfos.kt | 2 +- .../keyboard/latin/settings/AdvancedSettingsFragment.kt | 8 ++++++-- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt index d29af818d..766aeab60 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt @@ -277,7 +277,7 @@ private fun getCurrencyKey(locale: Locale): Pair> { Settings.getInstance().readCustomCurrencyKey().takeIf { it.isNotBlank() }?.let { val split = it.trim().splitOnWhitespace() if (split.isNotEmpty()) - return split[0] to (split.toSet() + genericCurrencyPopupKeys).filterNot { it == split[0] } + return split[0] to (split.toSet() + genericCurrencyPopupKeys).filterNot { it == split[0] }.take(6) } if (locale.country.matches(euroCountries)) return euro diff --git a/app/src/main/java/helium314/keyboard/latin/settings/AdvancedSettingsFragment.kt b/app/src/main/java/helium314/keyboard/latin/settings/AdvancedSettingsFragment.kt index 79988c0d9..a0b262f40 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/AdvancedSettingsFragment.kt +++ b/app/src/main/java/helium314/keyboard/latin/settings/AdvancedSettingsFragment.kt @@ -19,6 +19,7 @@ import helium314.keyboard.latin.utils.Log import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog import androidx.core.content.edit +import androidx.core.widget.doAfterTextChanged import androidx.preference.Preference import androidx.preference.PreferenceManager import kotlinx.serialization.encodeToString @@ -43,6 +44,7 @@ import helium314.keyboard.latin.SystemBroadcastReceiver import helium314.keyboard.latin.checkVersionUpgrade import helium314.keyboard.latin.common.FileUtils import helium314.keyboard.latin.common.LocaleUtils.constructLocale +import helium314.keyboard.latin.common.splitOnWhitespace import helium314.keyboard.latin.settings.SeekBarDialogPreference.ValueProxy import helium314.keyboard.latin.utils.AdditionalSubtypeUtils import helium314.keyboard.latin.utils.CUSTOM_FUNCTIONAL_LAYOUT_NORMAL @@ -469,7 +471,7 @@ class AdvancedSettingsFragment : SubScreenFragment() { layout.addView(et) val padding = ResourceUtils.toPx(8, resources) layout.setPadding(3 * padding, padding, padding, padding) - AlertDialog.Builder(requireContext()) + val d = AlertDialog.Builder(requireContext()) .setTitle(R.string.customize_currencies) .setView(layout) .setPositiveButton(android.R.string.ok) { _, _ -> @@ -478,7 +480,9 @@ class AdvancedSettingsFragment : SubScreenFragment() { } .setNegativeButton(android.R.string.cancel, null) .setNeutralButton(R.string.button_default) { _, _ -> sharedPreferences.edit { putString(Settings.PREF_CUSTOM_CURRENCY_KEY, "") } } - .show() + .create() + et.doAfterTextChanged { d.getButton(AlertDialog.BUTTON_POSITIVE)?.isEnabled = et.text.toString().splitOnWhitespace().none { it.length > 8 } } + d.show() } private fun setupKeyLongpressTimeoutSettings() { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index accb00bc6..15a2a8eaf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -504,7 +504,7 @@ disposition rather than other common dispositions for Latin languages. [CHAR LIM Customize currencies - Set main and secondary currency symbols, separated with space + Set main and up to 6 secondary currency symbols, separated with space Set image for day or night mode?