diff --git a/app/src/main/java/helium314/keyboard/latin/utils/Ktx.kt b/app/src/main/java/helium314/keyboard/latin/utils/Ktx.kt index 9db547342..2c3171dd4 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/Ktx.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/Ktx.kt @@ -1,6 +1,9 @@ package helium314.keyboard.latin.utils import android.content.Context +import android.content.ContextWrapper +import android.content.SharedPreferences +import androidx.activity.ComponentActivity // generic extension functions @@ -13,10 +16,9 @@ inline fun Iterable.sumOf(selector: (T) -> Float): Float { return sum } -// todo: string instead of CharSequence for compose? because resource STRINGs should be strings anyway... -fun CharSequence.getStringResourceOrName(prefix: String, context: Context): CharSequence { +fun CharSequence.getStringResourceOrName(prefix: String, context: Context): String { val resId = context.resources.getIdentifier(prefix + this, "string", context.packageName) - return if (resId == 0) this else context.getString(resId) + return if (resId == 0) this.toString() else context.getString(resId) } /** @@ -55,3 +57,14 @@ fun MutableList.replaceFirst(predicate: (T) -> Boolean, with: (T) -> T) { val i = indexOfFirst(predicate) if (i >= 0) this[i] = with(this[i]) } + +fun Context.getActivity(): ComponentActivity? { + val componentActivity = when (this) { + is ComponentActivity -> this + is ContextWrapper -> baseContext.getActivity() + else -> null + } + return componentActivity +} + +fun Context.prefs(): SharedPreferences = DeviceProtectedUtils.getSharedPreferences(this) diff --git a/app/src/main/java/helium314/keyboard/settings/AllPrefs.kt b/app/src/main/java/helium314/keyboard/settings/AllPrefs.kt index 4e7d134ff..a94613a3c 100644 --- a/app/src/main/java/helium314/keyboard/settings/AllPrefs.kt +++ b/app/src/main/java/helium314/keyboard/settings/AllPrefs.kt @@ -2,12 +2,8 @@ package helium314.keyboard.settings import android.content.Context -import android.content.ContextWrapper -import android.content.SharedPreferences -import androidx.activity.ComponentActivity import androidx.annotation.StringRes import androidx.compose.runtime.Composable -import helium314.keyboard.latin.utils.DeviceProtectedUtils import helium314.keyboard.settings.screens.createAboutPrefs import helium314.keyboard.settings.screens.createAdvancedPrefs import helium314.keyboard.settings.screens.createAppearancePrefs @@ -62,18 +58,6 @@ private fun createPrefDefs(context: Context) = createAboutPrefs(context) + createGestureTypingPrefs(context) + createAdvancedPrefs(context) + createDebugPrefs(context) + createAppearancePrefs(context) -// todo: move somewhere else -fun Context.getActivity(): ComponentActivity? { - val componentActivity = when (this) { - is ComponentActivity -> this - is ContextWrapper -> baseContext.getActivity() - else -> null - } - return componentActivity -} - -fun Context.prefs(): SharedPreferences = DeviceProtectedUtils.getSharedPreferences(this) - object NonSettingsPrefs { const val EDIT_PERSONAL_DICTIONARY = "edit_personal_dictionary" const val APP = "app" @@ -89,7 +73,3 @@ object NonSettingsPrefs { const val DEBUG_SETTINGS = "screen_debug" const val LOAD_GESTURE_LIB = "load_gesture_library" } - -@JvmField -// todo: maybe better name it "reloadKeyboard"? -var themeChanged = false diff --git a/app/src/main/java/helium314/keyboard/settings/Preference.kt b/app/src/main/java/helium314/keyboard/settings/Preference.kt index ffdacf138..77b3495f1 100644 --- a/app/src/main/java/helium314/keyboard/settings/Preference.kt +++ b/app/src/main/java/helium314/keyboard/settings/Preference.kt @@ -39,6 +39,8 @@ import androidx.compose.ui.unit.dp import androidx.core.content.edit import helium314.keyboard.latin.R import helium314.keyboard.latin.utils.Log +import helium314.keyboard.latin.utils.getActivity +import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.dialogs.ListPickerDialog import helium314.keyboard.settings.dialogs.SliderDialog diff --git a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt index 537d7448e..faa31112c 100644 --- a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt +++ b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt @@ -10,72 +10,63 @@ import androidx.compose.ui.platform.ComposeView import androidx.core.view.isGone import helium314.keyboard.latin.R import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.utils.prefs import kotlinx.coroutines.flow.MutableStateFlow -// todo +// todo (roughly in order) // make all prefs actually work +// make the pref lists more compact (compare with old settings) +// try making text size similar to old state (also in dialogs) +// check whether dialogs have the same colors, i think currently it's a bit inconsistent +// rename both settingsActivities +// work on todos in other files +// use better / more structured and clear names and arrangement of files +// animations when stuff (dis)appears +// LaunchedEffect, AnimatedVisibility +// performance +// find a nice way of testing (probably add logs for measuring time and recompositions) +// consider that stuff in composables can get called quite often on any changes -> use remember for things that are slow +// improve performance when loading screens with many settings (lazyColumn?) +// first check whether it's really necessary (test advanced or correction screen normal and with lazyColumn) +// screens could have a lazy column of preferences and category separators, and the list has an if-setting-then-null for hiding +// lazyColumn also has a "key", this should be used and be the pref name (or maybe title because that's also for category separators) +// nice arrows (in top bar, and as next-screen indicator) // PRs adding prefs -> need to do before continuing // 1319 (soon) // 1263 (no response for 3 weeks) // merge main to implement all the new settings // consider IME insets when searching -// consider that stuff in composables can get called quite often on any changes -> use remember for things that are slow (maybe add test logging) // dialogs should be rememberSaveable to survive display orientation change and stuff? // default buttons for toolbar key(s) customizer and toolbar reorder dialog +// try making old fragment back stuff work better, and try the different themes (with and without top bar) +// any way to get rid of the "old" background on starting settings? probably comes from app theme, can we avoid it? +// consider using simple list picker dialog (but the "full" one is probably better for language settings stuff) +// spdx headers everywhere + +// what should be done, but not in this PR +// in general: changes to anything outside the new settings (unless necessary), and changes to how screens / fragments work +// re-organize screens, no need to keep exactly the same arrangement +// language settings (should change more than just move to compose) +// user dictionary settings (or maybe leave old state for a while?) +// color settings (should at least change how colors are stored, and have a color search/filter) +// one single place for default values (to be used in composables and settings) +// make auto_correct_threshold a float directly with the list pref (needs pref upgrade) +// using context.prefs() outside settings +// merge PREF_TOOLBAR_CUSTOM_KEY_CODES and PREF_TOOLBAR_CUSTOM_LONGPRESS_CODES into one pref (don't forget settings upgrade) +// adjust debug settings +// have them in main screen? +// allow users to find the individual settings in search even if debug settings are not enabled? -// later -// improve performance when loading screens with many settings (lazyColumn?) -// first check whether it's really necessary (test advanced or correction screen normal and with lazyColumn) -// screens could have a lazy column of preferences and category separators, and the list has an if-setting-then-null for hiding -// lazyColumn also has the key, this should be used! and must be unique -// nice arrows (in top bar, and as next-screen indicator) -// animations when stuff (dis)appears -// LaunchedEffect, AnimatedVisibility -// remove PrefScreen if not used -// rename some classes -// split the preferences in allPrefs.createDefs into multiple files, this will get horribly long -// maybe have sub-lists in the pref screens using the settings? -// spdx headers everywhere (except DragDropColumn, which is from stackoverflow without explicit license) -// changes to anything but the compose settings package should not be in the initial PR -// commit them separately if possible -// though some might be necessary -// toolbar key enabled state can be wrong -// go to correction settings, open search, toggle autocorrect toolbar key, and then toggle setting -// -> now toolbar key always has the wrong state -// color settings needs a color search -// more convenient access to prefs -// merge PREF_TOOLBAR_CUSTOM_KEY_CODES and PREF_TOOLBAR_CUSTOM_LONGPRESS_CODES -// should be single pref containing both -// needs settings upgrade of course... // consider disabled settings & search // don't show -> users confused // show as disabled -> users confused // show (but change will not do anything because another setting needs to be enabled first) -// -> users confused, but probably better than the 2 above -// adjust layout a little, there is too much empty space and titles are too large (dialogs!) -// check dialogs have the same colors -// list preference -> we can make auto_correct_threshold a float directly (needs pref upgrade -// actually test all the settings -// when starting keyboard from settings, initially there is the "old" background color before compose stuff starts -// language settings (separate commit / PR, should change more than just move to compose) -// user dictionary settings (separate commit / PR, or maybe leave old state for a while?) -// color settings (separate commit / PR, should at least change how colors are stored) -// one single place for default values (to be used in composables and settings) -// better a separate commit +// -> last is probably best, but people will probably open issues no matter what -// maybe later -// weird problem with app sometimes closing on back, but that's related to "old" settings (don't care if all are removed before next release) -// bottom text field (though we have the search now anyway) -// remove navHost? but probably too useful to have... -// lazyColumn for prefs (or just in category?) -// should improve loading time for screens with many settings -// but needs a bit of work for probably not so much benefit -// adjust the debug settings thing, so that users can always find them in search but nowhere else? unless debug mode +// maybe do after the PR +// bottom dummy text field (though we have the search now anyway, and thus maybe don't need it) // search only in current pref screen, except when in main? // try getting rid of appcompat stuff (activity, dialogs, ...) -// re-organize screens, no need to keep exactly the same arrangement -// use simple list picker -// exclude all debug settings from search results if they are not enabled // rearrange settings screens? now it should be very simple to do (definitely separate PR) // preliminary results: @@ -104,22 +95,25 @@ class SettingsActivity2 : AppCompatActivity(), SharedPreferences.OnSharedPrefere if (Settings.getInstance().current == null) Settings.init(this) -// val cv = ComposeView(context = this) allPrefs = AllPrefs(this) -// setContentView(cv) // todo: later, but for showing both old and new style settings, the layout is better + + // todo: when removing old settings completely, remove settings_activity.xml and supportFragmentManager stuff +// val cv = ComposeView(context = this) +// setContentView(cv) setContentView(R.layout.settings_activity) supportFragmentManager.addOnBackStackChangedListener { updateContainerVisibility() } -// cv.setContent { // also later... +// cv.setContent { // todo: when removing old settings findViewById(R.id.navHost).setContent { Theme { Surface { SettingsNavHost( onClickBack = { - if (supportFragmentManager.findFragmentById(R.id.settingsFragmentContainer) == null) // todo: remove after migration is complete +// this.finish() // todo: when removing old settings + if (supportFragmentManager.findFragmentById(R.id.settingsFragmentContainer) == null) this.finish() - else supportFragmentManager.popBackStack() // todo: remove after migration is complete + else supportFragmentManager.popBackStack() } ) } @@ -127,7 +121,7 @@ class SettingsActivity2 : AppCompatActivity(), SharedPreferences.OnSharedPrefere } } - private fun updateContainerVisibility() { // todo: remove after migration is complete + private fun updateContainerVisibility() { // todo: remove when removing old settings findViewById(R.id.settingsFragmentContainer).isGone = supportFragmentManager.findFragmentById(R.id.settingsFragmentContainer) == null } @@ -150,3 +144,6 @@ class SettingsActivity2 : AppCompatActivity(), SharedPreferences.OnSharedPrefere prefChanged.value++ } } + +@JvmField +var needsKeyboardReload = false diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/ToolbarKeysCustomizer.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/ToolbarKeysCustomizer.kt index b13f5ab6e..2c131efb3 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/ToolbarKeysCustomizer.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/ToolbarKeysCustomizer.kt @@ -33,11 +33,11 @@ import helium314.keyboard.latin.utils.ToolbarKey import helium314.keyboard.latin.utils.getCodeForToolbarKey import helium314.keyboard.latin.utils.getCodeForToolbarKeyLongClick import helium314.keyboard.latin.utils.getStringResourceOrName +import helium314.keyboard.latin.utils.prefs import helium314.keyboard.latin.utils.readCustomKeyCodes import helium314.keyboard.latin.utils.readCustomLongpressCodes import helium314.keyboard.latin.utils.writeCustomKeyCodes import helium314.keyboard.latin.utils.writeCustomLongpressCodes -import helium314.keyboard.settings.prefs import helium314.keyboard.settings.screens.GetIcon // todo: @@ -63,7 +63,7 @@ fun ToolbarKeysCustomizer( modifier = Modifier.clickable { showKeyCustomizer = it }.fillParentMaxWidth() ) { KeyboardIconsSet.instance.GetIcon(it.name) - Text(it.name.lowercase().getStringResourceOrName("", ctx).toString()) + Text(it.name.lowercase().getStringResourceOrName("", ctx)) } } } @@ -102,7 +102,7 @@ private fun ToolbarKeyCustomizer( ) { Text(stringResource(android.R.string.ok)) } }, dismissButton = { TextButton(onClick = onDismissRequest) { Text(stringResource(android.R.string.cancel)) } }, - title = { Text(key.name.lowercase().getStringResourceOrName("", ctx).toString()) }, + title = { Text(key.name.lowercase().getStringResourceOrName("", ctx)) }, text = { Column { Row(verticalAlignment = Alignment.CenterVertically) { diff --git a/app/src/main/java/helium314/keyboard/settings/screens/AboutScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/AboutScreen.kt index 48f744135..c4da740df 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/AboutScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/AboutScreen.kt @@ -27,6 +27,8 @@ import helium314.keyboard.latin.R import helium314.keyboard.latin.settings.DebugSettings import helium314.keyboard.latin.utils.Log import helium314.keyboard.latin.utils.SpannableStringUtils +import helium314.keyboard.latin.utils.getActivity +import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.AllPrefs import helium314.keyboard.settings.NonSettingsPrefs import helium314.keyboard.settings.PrefDef @@ -34,8 +36,6 @@ import helium314.keyboard.settings.Preference import helium314.keyboard.settings.SearchPrefScreen import helium314.keyboard.settings.SettingsActivity2 import helium314.keyboard.settings.Theme -import helium314.keyboard.settings.getActivity -import helium314.keyboard.settings.prefs import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt index ed7d274f0..2f3eedd26 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt @@ -16,6 +16,7 @@ import helium314.keyboard.latin.R import helium314.keyboard.latin.SystemBroadcastReceiver import helium314.keyboard.latin.settings.DebugSettings import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.AllPrefs import helium314.keyboard.settings.ListPreference import helium314.keyboard.settings.NonSettingsPrefs @@ -28,8 +29,7 @@ import helium314.keyboard.settings.SettingsDestination import helium314.keyboard.settings.SliderPreference import helium314.keyboard.settings.SwitchPreference import helium314.keyboard.settings.Theme -import helium314.keyboard.settings.prefs -import helium314.keyboard.settings.themeChanged +import helium314.keyboard.settings.needsKeyboardReload @Composable fun AdvancedSettingsScreen( @@ -89,7 +89,6 @@ fun createAdvancedPrefs(context: Context) = listOf( ) }, PrefDef(context, Settings.PREF_SPACE_HORIZONTAL_SWIPE, R.string.show_horizontal_space_swipe) { def -> - // todo: get rid of the arrays from old settings val items = listOf( stringResource(R.string.space_swipe_move_cursor_entry) to "move_cursor", stringResource(R.string.switch_language) to "switch_language", @@ -99,7 +98,6 @@ fun createAdvancedPrefs(context: Context) = listOf( ListPreference(def, items, "move_cursor") }, PrefDef(context, Settings.PREF_SPACE_VERTICAL_SWIPE, R.string.show_vertical_space_swipe) { def -> - // todo: get rid of the arrays from old settings val items = listOf( stringResource(R.string.space_swipe_move_cursor_entry) to "move_cursor", stringResource(R.string.switch_language) to "switch_language", @@ -166,7 +164,6 @@ fun createAdvancedPrefs(context: Context) = listOf( // if (showDialog) todo: show the currency customizer }, PrefDef(context, Settings.PREF_MORE_POPUP_KEYS, R.string.show_popup_keys_title) { def -> - // todo: get rid of the arrays from old settings val items = listOf( stringResource(R.string.show_popup_keys_normal) to "normal", stringResource(R.string.show_popup_keys_main) to "main", @@ -232,7 +229,7 @@ fun createAdvancedPrefs(context: Context) = listOf( else -> "version unknown" } }, - onValueChanged = { themeChanged = true } + onValueChanged = { needsKeyboardReload = true } ) }, PrefDef(context, Settings.PREF_URL_DETECTION, R.string.url_detection_title, R.string.url_detection_summary) { diff --git a/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt index 82c03d6cb..0fc2cec07 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt @@ -17,7 +17,9 @@ import helium314.keyboard.keyboard.KeyboardTheme import helium314.keyboard.latin.R import helium314.keyboard.latin.settings.Settings import helium314.keyboard.latin.utils.Log +import helium314.keyboard.latin.utils.getActivity import helium314.keyboard.latin.utils.getStringResourceOrName +import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.AllPrefs import helium314.keyboard.settings.ListPreference import helium314.keyboard.settings.PrefDef @@ -26,12 +28,8 @@ import helium314.keyboard.settings.PreferenceCategory import helium314.keyboard.settings.SearchPrefScreen import helium314.keyboard.settings.SettingsActivity2 import helium314.keyboard.settings.SettingsDestination -import helium314.keyboard.settings.SliderPreference import helium314.keyboard.settings.SwitchPreference import helium314.keyboard.settings.Theme -import helium314.keyboard.settings.getActivity -import helium314.keyboard.settings.prefs -import helium314.keyboard.settings.themeChanged @Composable fun AppearanceScreen( @@ -60,7 +58,7 @@ fun createAppearancePrefs(context: Context) = listOf( PrefDef(context, Settings.PREF_THEME_STYLE, R.string.theme_style) { def -> val ctx = LocalContext.current val items = KeyboardTheme.STYLES.map { - it.getStringResourceOrName("style_name_", ctx).toString() to it + it.getStringResourceOrName("style_name_", ctx) to it } ListPreference( def, @@ -71,7 +69,7 @@ fun createAppearancePrefs(context: Context) = listOf( PrefDef(context, Settings.PREF_ICON_STYLE, R.string.icon_style) { def -> val ctx = LocalContext.current val items = KeyboardTheme.STYLES.map { - it.getStringResourceOrName("style_name_", ctx).toString() to it + it.getStringResourceOrName("style_name_", ctx) to it } ListPreference( def, @@ -92,7 +90,7 @@ fun createAppearancePrefs(context: Context) = listOf( val items = KeyboardTheme.COLORS.mapNotNull { if (it == KeyboardTheme.THEME_HOLO_WHITE && currentStyle == KeyboardTheme.STYLE_HOLO) return@mapNotNull null - it.getStringResourceOrName("theme_name_", ctx).toString() to it + it.getStringResourceOrName("theme_name_", ctx) to it } ListPreference( def, @@ -106,7 +104,7 @@ fun createAppearancePrefs(context: Context) = listOf( val items = KeyboardTheme.COLORS.mapNotNull { if (it == KeyboardTheme.THEME_HOLO_WHITE && currentStyle == KeyboardTheme.STYLE_HOLO) return@mapNotNull null - it.getStringResourceOrName("theme_name_", ctx).toString() to it + it.getStringResourceOrName("theme_name_", ctx) to it } ListPreference( def, diff --git a/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt index edfde2887..2debd25f9 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt @@ -13,6 +13,7 @@ import helium314.keyboard.latin.DictionaryFacilitator import helium314.keyboard.latin.R import helium314.keyboard.latin.settings.DebugSettings import helium314.keyboard.latin.settings.DebugSettingsFragment +import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.AllPrefs import helium314.keyboard.settings.PrefDef import helium314.keyboard.settings.Preference @@ -21,8 +22,7 @@ import helium314.keyboard.settings.SearchPrefScreen import helium314.keyboard.settings.SettingsActivity2 import helium314.keyboard.settings.SwitchPreference import helium314.keyboard.settings.Theme -import helium314.keyboard.settings.prefs -import helium314.keyboard.settings.themeChanged +import helium314.keyboard.settings.needsKeyboardReload @Composable fun DebugScreen( @@ -63,7 +63,7 @@ fun createDebugPrefs(context: Context) = listOf( } }, PrefDef(context, DebugSettings.PREF_SHOW_SUGGESTION_INFOS, R.string.prefs_show_suggestion_infos) { def -> - SwitchPreference(def, false) { themeChanged = true } + SwitchPreference(def, false) { needsKeyboardReload = true } }, PrefDef(context, DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH, R.string.prefs_force_non_distinct_multitouch) { def -> SwitchPreference(def, false) { needsRestart = true } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/GestureTypingScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/GestureTypingScreen.kt index 49365377c..228c05cd4 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/GestureTypingScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/GestureTypingScreen.kt @@ -11,6 +11,8 @@ import androidx.compose.ui.tooling.preview.Preview import helium314.keyboard.latin.R import helium314.keyboard.latin.settings.Settings import helium314.keyboard.latin.utils.Log +import helium314.keyboard.latin.utils.getActivity +import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.AllPrefs import helium314.keyboard.settings.PrefDef import helium314.keyboard.settings.SearchPrefScreen @@ -18,9 +20,7 @@ import helium314.keyboard.settings.SettingsActivity2 import helium314.keyboard.settings.SliderPreference import helium314.keyboard.settings.SwitchPreference import helium314.keyboard.settings.Theme -import helium314.keyboard.settings.getActivity -import helium314.keyboard.settings.prefs -import helium314.keyboard.settings.themeChanged +import helium314.keyboard.settings.needsKeyboardReload @Composable fun GestureTypingScreen( @@ -74,7 +74,7 @@ fun createGestureTypingPrefs(context: Context) = listOf( SwitchPreference( def = it, default = true - ) { themeChanged = true } + ) { needsKeyboardReload = true } }, PrefDef(context, Settings.PREF_GESTURE_SPACE_AWARE, R.string.gesture_space_aware, R.string.gesture_space_aware_summary) { SwitchPreference( @@ -106,7 +106,7 @@ fun createGestureTypingPrefs(context: Context) = listOf( range = 100f..1900f, description = { stringResource(R.string.abbreviation_unit_milliseconds, (it + 100).toString()) }, // todo: 50 ms steps? - ) { themeChanged = true } + ) { needsKeyboardReload = true } }, ) diff --git a/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt index 4c560203a..6b7c837ba 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt @@ -25,11 +25,11 @@ import helium314.keyboard.latin.settings.LanguageSettingsFragment import helium314.keyboard.latin.settings.PreferencesSettingsFragment import helium314.keyboard.latin.settings.ToolbarSettingsFragment import helium314.keyboard.latin.utils.JniUtils +import helium314.keyboard.latin.utils.getActivity import helium314.keyboard.settings.Preference import helium314.keyboard.settings.PreferenceCategory import helium314.keyboard.settings.SearchPrefScreen import helium314.keyboard.settings.Theme -import helium314.keyboard.settings.getActivity @Composable fun MainSettingsScreen( diff --git a/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt index c16ccfe32..91e92d4d6 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt @@ -24,6 +24,8 @@ import helium314.keyboard.latin.permissions.PermissionsUtil import helium314.keyboard.latin.settings.Settings import helium314.keyboard.latin.settings.UserDictionaryListFragment import helium314.keyboard.latin.utils.Log +import helium314.keyboard.latin.utils.getActivity +import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.AllPrefs import helium314.keyboard.settings.ListPreference import helium314.keyboard.settings.NonSettingsPrefs @@ -35,10 +37,7 @@ import helium314.keyboard.settings.SettingsActivity2 import helium314.keyboard.settings.SwitchPreference import helium314.keyboard.settings.Theme import helium314.keyboard.settings.dialogs.ConfirmationDialog -import helium314.keyboard.settings.dialogs.ListPickerDialog -import helium314.keyboard.settings.getActivity -import helium314.keyboard.settings.prefs -import helium314.keyboard.settings.themeChanged +import helium314.keyboard.settings.needsKeyboardReload @Composable fun TextCorrectionScreen( @@ -205,7 +204,7 @@ fun createCorrectionPrefs(context: Context) = listOf( R.string.bigram_prediction, R.string.bigram_prediction_summary ) { - SwitchPreference(it, true) { themeChanged = true } + SwitchPreference(it, true) { needsKeyboardReload = true } }, PrefDef(context, Settings.PREF_CENTER_SUGGESTION_TEXT_TO_ENTER, diff --git a/app/src/main/java/helium314/keyboard/settings/screens/ToolbarScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/ToolbarScreen.kt index 77241785a..1b012670d 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/ToolbarScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/ToolbarScreen.kt @@ -43,7 +43,7 @@ import helium314.keyboard.settings.Theme import helium314.keyboard.settings.dialogs.ReorderDialog import helium314.keyboard.settings.dialogs.ToolbarKeysCustomizer import helium314.keyboard.settings.prefs -import helium314.keyboard.settings.themeChanged +import helium314.keyboard.settings.needsKeyboardReload @Composable fun ToolbarScreen( @@ -123,7 +123,7 @@ fun createToolbarPrefs(context: Context) = listOf( SwitchPreference( def, false, - ) { themeChanged = true } + ) { needsKeyboardReload = true } }, PrefDef(context, Settings.PREF_AUTO_SHOW_TOOLBAR, R.string.auto_show_toolbar, R.string.auto_show_toolbar_summary) { def -> SwitchPreference( @@ -164,7 +164,7 @@ fun ToolbarKeyReorderDialog( onConfirmed = { reorderedItems -> val value = reorderedItems.joinToString(";") { it.name + "," + it.state } prefs.edit().putString(prefKey, value).apply() - themeChanged = true + needsKeyboardReload = true }, onDismissRequest = onDismiss, items = items, @@ -173,7 +173,7 @@ fun ToolbarKeyReorderDialog( var checked by remember { mutableStateOf(item.state) } Row(verticalAlignment = Alignment.CenterVertically) { KeyboardIconsSet.instance.GetIcon(item.name) - val text = item.name.lowercase().getStringResourceOrName("", ctx).toString() + val text = item.name.lowercase().getStringResourceOrName("", ctx) Text(text, Modifier.weight(1f)) Switch( checked = checked,