diff --git a/app/src/main/java/helium314/keyboard/latin/settings/DebugSettingsFragment.java b/app/src/main/java/helium314/keyboard/latin/settings/DebugSettingsFragment.java index 778e0510..578c0fae 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/DebugSettingsFragment.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/DebugSettingsFragment.java @@ -30,7 +30,7 @@ import helium314.keyboard.latin.R; public final class DebugSettingsFragment extends SubScreenFragment implements Preference.OnPreferenceClickListener { private static final String PREF_KEY_DUMP_DICTS = "dump_dictionaries"; - private static final String PREF_KEY_DUMP_DICT_PREFIX = "dump_dictionaries"; + public static final String PREF_KEY_DUMP_DICT_PREFIX = "dump_dictionaries"; private boolean mServiceNeedsRestart = false; private TwoStatePreference mDebugMode; diff --git a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt index 45e9caab..086ef8f5 100644 --- a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt +++ b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt @@ -13,8 +13,11 @@ import helium314.keyboard.latin.settings.Settings import kotlinx.coroutines.flow.MutableStateFlow // todo +// test release vs old release for settings start speed +// also when coming from keyboard +// good way to measure startup time? e.g. sth in activity, or in composable, compared to settings button +// check if there are simple ways to improve it (try kicking out "everything" at start) // more pref screens -// debug // appearance // colors // personal dictionary @@ -55,7 +58,8 @@ import kotlinx.coroutines.flow.MutableStateFlow // -> 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 +// list preference -> we can make auto_correct_threshold a float directly (needs pref upgrade +// actually test all the settings // maybe later // weird problem with app sometimes closing on back, but that's related to "old" settings (don't care if all are removed) 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 576311bb..edfde288 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt @@ -1,20 +1,28 @@ package helium314.keyboard.settings.screens import android.content.Context +import android.content.Intent import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview +import helium314.keyboard.latin.BuildConfig +import helium314.keyboard.latin.DictionaryDumpBroadcastReceiver +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.settings.AllPrefs import helium314.keyboard.settings.PrefDef +import helium314.keyboard.settings.Preference import helium314.keyboard.settings.PreferenceCategory 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 @Composable fun DebugScreen( @@ -30,29 +38,52 @@ fun DebugScreen( SettingsActivity2.allPrefs.map[DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH]!!.Preference() SettingsActivity2.allPrefs.map[DebugSettings.PREF_SLIDING_KEY_INPUT_PREVIEW]!!.Preference() PreferenceCategory(stringResource(R.string.prefs_dump_dynamic_dicts)) { - // todo: fill it + DictionaryFacilitator.DYNAMIC_DICTIONARY_TYPES.forEach { + SettingsActivity2.allPrefs.map[DebugSettingsFragment.PREF_KEY_DUMP_DICT_PREFIX + it]!!.Preference() + } } } } fun createDebugPrefs(context: Context) = listOf( PrefDef(context, DebugSettings.PREF_SHOW_DEBUG_SETTINGS, R.string.prefs_show_debug_settings) { def -> - SwitchPreference(def, false) + val prefs = LocalContext.current.prefs() + SwitchPreference( + name = def.title, + pref = def.key, + default = false, + description = stringResource(R.string.version_text, BuildConfig.VERSION_NAME) + ) { if (!it) prefs.edit().putBoolean(DebugSettings.PREF_DEBUG_MODE, false).apply() } }, PrefDef(context, DebugSettings.PREF_DEBUG_MODE, R.string.prefs_debug_mode) { def -> - SwitchPreference(def, false) + val prefs = LocalContext.current.prefs() + SwitchPreference(def, false) { + needsRestart = true + if (!it) prefs.edit().putBoolean(DebugSettings.PREF_SHOW_SUGGESTION_INFOS, false).apply() + } }, PrefDef(context, DebugSettings.PREF_SHOW_SUGGESTION_INFOS, R.string.prefs_show_suggestion_infos) { def -> - SwitchPreference(def, false) + SwitchPreference(def, false) { themeChanged = true } }, PrefDef(context, DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH, R.string.prefs_force_non_distinct_multitouch) { def -> - SwitchPreference(def, false) + SwitchPreference(def, false) { needsRestart = true } }, PrefDef(context, DebugSettings.PREF_SLIDING_KEY_INPUT_PREVIEW, R.string.sliding_key_input_preview, R.string.sliding_key_input_preview_summary) { def -> SwitchPreference(def, false) }, - // todo: what about "dump dictionaries"? -) +) + DictionaryFacilitator.DYNAMIC_DICTIONARY_TYPES.map { + PrefDef(context, DebugSettingsFragment.PREF_KEY_DUMP_DICT_PREFIX + it, R.string.button_default) { def -> + val ctx = LocalContext.current + Preference( + name = "Dump $it dictionary", + onClick = { + val intent = Intent(DictionaryDumpBroadcastReceiver.DICTIONARY_DUMP_INTENT_ACTION) + intent.putExtra(DictionaryDumpBroadcastReceiver.DICTIONARY_NAME_KEY, it) + ctx.sendBroadcast(intent) + } + ) + } +} @Preview @Composable @@ -64,3 +95,6 @@ private fun Preview() { } } } + +// todo: actually use it +var needsRestart = false