mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-20 06:09:09 +00:00
use old way of restarting with debug settings
and hide debug settings from search
This commit is contained in:
parent
6e18c9af8c
commit
b849c696c5
4 changed files with 36 additions and 42 deletions
|
@ -13,9 +13,7 @@ import helium314.keyboard.latin.settings.Settings
|
||||||
import helium314.keyboard.latin.utils.prefs
|
import helium314.keyboard.latin.utils.prefs
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
|
||||||
// todo (roughly in order)
|
// todo
|
||||||
// any way to get rid of the "old" background on starting settings? probably comes from app theme, can we avoid it?
|
|
||||||
// try making old fragment back stuff work better, and try the different themes (with and without top bar, it should only appear for old fragments)
|
|
||||||
// calling KeyboardSwitcher.getInstance().forceUpdateKeyboardTheme(requireContext()) while keyboard is showing shows just full screen background
|
// calling KeyboardSwitcher.getInstance().forceUpdateKeyboardTheme(requireContext()) while keyboard is showing shows just full screen background
|
||||||
// but reload while keyboard is showing would be great (isn't it at least semi-done when changing one-handed mode?)
|
// but reload while keyboard is showing would be great (isn't it at least semi-done when changing one-handed mode?)
|
||||||
// bg image inconsistent about being on toolbar or not (is this new?)
|
// bg image inconsistent about being on toolbar or not (is this new?)
|
||||||
|
@ -27,25 +25,25 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
// maybe related to lazy column?
|
// maybe related to lazy column?
|
||||||
// PRs adding prefs -> need to finish and merge main before finishing this PR
|
// PRs adding prefs -> need to finish and merge main before finishing this PR
|
||||||
// 1263 (no response for several weeks now...)
|
// 1263 (no response for several weeks now...)
|
||||||
// really use the restart dialog for debug settings stuff?
|
|
||||||
// could do it the old way, and hide debug settings from search
|
|
||||||
|
|
||||||
// what should be done, but not in this PR
|
// what should be done, but not in this PR
|
||||||
|
// merge PREF_TOOLBAR_CUSTOM_KEY_CODES and PREF_TOOLBAR_CUSTOM_LONGPRESS_CODES into one pref (don't forget settings upgrade)
|
||||||
|
// replace the setup wizard
|
||||||
|
// platformActivityTheme background color should align with compose background (also consider dynamic colors)
|
||||||
|
// probably no need for appcompat any more
|
||||||
|
// replace color settings (should at least change how colors are stored, and have a color search/filter)
|
||||||
// in general: changes to anything outside the new settings (unless necessary), and changes to how screens / fragments work
|
// 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
|
// re-organize screens, no need to keep exactly the same arrangement
|
||||||
// language settings (should change more than just move to compose)
|
// language settings (should change more than just move to compose)
|
||||||
// user dictionary settings (or maybe leave old state for a while?)
|
// 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)
|
|
||||||
// allow users to add custom themes instead of only having a single one (maybe also switchable in colors settings)
|
// allow users to add custom themes instead of only having a single one (maybe also switchable in colors settings)
|
||||||
// one single place for default values (to be used in composables and settings)
|
// one single place for default values (to be used in composables and settings)
|
||||||
// does it make sense to put this into PrefDef?
|
// does it make sense to put this into PrefDef?
|
||||||
// make auto_correct_threshold a float directly with the list pref (needs pref upgrade)
|
// make auto_correct_threshold a float directly with the list pref (needs pref upgrade)
|
||||||
// using context.prefs() outside settings
|
// use 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
|
// adjust debug settings
|
||||||
// have them in main screen?
|
// have them in main screen?
|
||||||
// allow users to find the individual settings in search even if debug settings are not enabled?
|
// allow users to find the individual settings in search even if debug settings are not enabled?
|
||||||
// replace the setup wizard
|
|
||||||
|
|
||||||
// consider disabled settings & search
|
// consider disabled settings & search
|
||||||
// don't show -> users confused
|
// don't show -> users confused
|
||||||
|
|
|
@ -8,7 +8,6 @@ import helium314.keyboard.settings.screens.createAboutSettings
|
||||||
import helium314.keyboard.settings.screens.createAdvancedSettings
|
import helium314.keyboard.settings.screens.createAdvancedSettings
|
||||||
import helium314.keyboard.settings.screens.createAppearanceSettings
|
import helium314.keyboard.settings.screens.createAppearanceSettings
|
||||||
import helium314.keyboard.settings.screens.createCorrectionSettings
|
import helium314.keyboard.settings.screens.createCorrectionSettings
|
||||||
import helium314.keyboard.settings.screens.createDebugSettings
|
|
||||||
import helium314.keyboard.settings.screens.createGestureTypingSettings
|
import helium314.keyboard.settings.screens.createGestureTypingSettings
|
||||||
import helium314.keyboard.settings.screens.createPreferencesSettings
|
import helium314.keyboard.settings.screens.createPreferencesSettings
|
||||||
import helium314.keyboard.settings.screens.createToolbarSettingss
|
import helium314.keyboard.settings.screens.createToolbarSettingss
|
||||||
|
@ -54,10 +53,10 @@ class Setting(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// intentionally not putting individual debug settings in here so user knows the context
|
||||||
private fun createSettings(context: Context) = createAboutSettings(context) +
|
private fun createSettings(context: Context) = createAboutSettings(context) +
|
||||||
createCorrectionSettings(context) + createPreferencesSettings(context) + createToolbarSettingss(context) +
|
createCorrectionSettings(context) + createPreferencesSettings(context) + createToolbarSettingss(context) +
|
||||||
createGestureTypingSettings(context) + createAdvancedSettings(context) + createDebugSettings(context) +
|
createGestureTypingSettings(context) + createAdvancedSettings(context) + createAppearanceSettings(context)
|
||||||
createAppearanceSettings(context)
|
|
||||||
|
|
||||||
object SettingsWithoutKey {
|
object SettingsWithoutKey {
|
||||||
const val EDIT_PERSONAL_DICTIONARY = "edit_personal_dictionary"
|
const val EDIT_PERSONAL_DICTIONARY = "edit_personal_dictionary"
|
||||||
|
|
|
@ -3,14 +3,10 @@ package helium314.keyboard.settings.screens
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material3.Surface
|
import androidx.compose.material3.Surface
|
||||||
import androidx.compose.material3.Text
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
|
||||||
import androidx.compose.runtime.mutableStateOf
|
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.runtime.saveable.rememberSaveable
|
|
||||||
import androidx.compose.runtime.setValue
|
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
@ -28,13 +24,15 @@ import helium314.keyboard.settings.SearchPrefScreen
|
||||||
import helium314.keyboard.settings.SettingsActivity
|
import helium314.keyboard.settings.SettingsActivity
|
||||||
import helium314.keyboard.settings.preferences.SwitchPreference
|
import helium314.keyboard.settings.preferences.SwitchPreference
|
||||||
import helium314.keyboard.settings.Theme
|
import helium314.keyboard.settings.Theme
|
||||||
import helium314.keyboard.settings.dialogs.ConfirmationDialog
|
|
||||||
import helium314.keyboard.settings.keyboardNeedsReload
|
import helium314.keyboard.settings.keyboardNeedsReload
|
||||||
|
import helium314.keyboard.settings.preferences.PreferenceCategory
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DebugScreen(
|
fun DebugScreen(
|
||||||
onClickBack: () -> Unit,
|
onClickBack: () -> Unit,
|
||||||
) {
|
) {
|
||||||
|
val ctx = LocalContext.current
|
||||||
|
val settings = createDebugSettings(ctx)
|
||||||
val items = listOfNotNull(
|
val items = listOfNotNull(
|
||||||
if (!BuildConfig.DEBUG) DebugSettings.PREF_SHOW_DEBUG_SETTINGS else null,
|
if (!BuildConfig.DEBUG) DebugSettings.PREF_SHOW_DEBUG_SETTINGS else null,
|
||||||
DebugSettings.PREF_DEBUG_MODE,
|
DebugSettings.PREF_DEBUG_MODE,
|
||||||
|
@ -44,13 +42,30 @@ fun DebugScreen(
|
||||||
R.string.prefs_dump_dynamic_dicts
|
R.string.prefs_dump_dynamic_dicts
|
||||||
) + DictionaryFacilitator.DYNAMIC_DICTIONARY_TYPES.map { DebugSettingsFragment.PREF_KEY_DUMP_DICT_PREFIX + it }
|
) + DictionaryFacilitator.DYNAMIC_DICTIONARY_TYPES.map { DebugSettingsFragment.PREF_KEY_DUMP_DICT_PREFIX + it }
|
||||||
SearchPrefScreen(
|
SearchPrefScreen(
|
||||||
onClickBack = onClickBack,
|
onClickBack = {
|
||||||
|
if (needsRestart) {
|
||||||
|
val intent = Intent.makeRestartActivityTask(ctx.packageManager.getLaunchIntentForPackage(ctx.packageName)?.component)
|
||||||
|
intent.setPackage(ctx.packageName)
|
||||||
|
ctx.startActivity(intent)
|
||||||
|
Runtime.getRuntime().exit(0)
|
||||||
|
}
|
||||||
|
onClickBack()
|
||||||
|
},
|
||||||
title = stringResource(R.string.debug_settings_title),
|
title = stringResource(R.string.debug_settings_title),
|
||||||
prefs = items
|
prefs = items
|
||||||
)
|
) {
|
||||||
|
LazyColumn {
|
||||||
|
items(items, key = { it }) { item ->
|
||||||
|
if (item is Int) PreferenceCategory(stringResource(item))
|
||||||
|
else settings.first { it.key == item }.Preference()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createDebugSettings(context: Context) = listOf(
|
private var needsRestart = false
|
||||||
|
|
||||||
|
private fun createDebugSettings(context: Context) = listOf(
|
||||||
Setting(context, DebugSettings.PREF_SHOW_DEBUG_SETTINGS, R.string.prefs_show_debug_settings) { setting ->
|
Setting(context, DebugSettings.PREF_SHOW_DEBUG_SETTINGS, R.string.prefs_show_debug_settings) { setting ->
|
||||||
val prefs = LocalContext.current.prefs()
|
val prefs = LocalContext.current.prefs()
|
||||||
SwitchPreference(setting, false)
|
SwitchPreference(setting, false)
|
||||||
|
@ -58,7 +73,6 @@ fun createDebugSettings(context: Context) = listOf(
|
||||||
},
|
},
|
||||||
Setting(context, DebugSettings.PREF_DEBUG_MODE, R.string.prefs_debug_mode) { setting ->
|
Setting(context, DebugSettings.PREF_DEBUG_MODE, R.string.prefs_debug_mode) { setting ->
|
||||||
val prefs = LocalContext.current.prefs()
|
val prefs = LocalContext.current.prefs()
|
||||||
var showConfirmDialog by rememberSaveable { mutableStateOf(false) }
|
|
||||||
SwitchPreference(
|
SwitchPreference(
|
||||||
name = setting.title,
|
name = setting.title,
|
||||||
key = setting.key,
|
key = setting.key,
|
||||||
|
@ -66,29 +80,14 @@ fun createDebugSettings(context: Context) = listOf(
|
||||||
default = false,
|
default = false,
|
||||||
) {
|
) {
|
||||||
if (!it) prefs.edit().putBoolean(DebugSettings.PREF_SHOW_SUGGESTION_INFOS, false).apply()
|
if (!it) prefs.edit().putBoolean(DebugSettings.PREF_SHOW_SUGGESTION_INFOS, false).apply()
|
||||||
showConfirmDialog = true
|
needsRestart = true
|
||||||
}
|
|
||||||
if (showConfirmDialog) {
|
|
||||||
ConfirmationDialog(
|
|
||||||
onDismissRequest = { showConfirmDialog = false },
|
|
||||||
onConfirmed = { Runtime.getRuntime().exit(0) },
|
|
||||||
text = { Text(stringResource(R.string.message_restart_required)) }
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Setting(context, DebugSettings.PREF_SHOW_SUGGESTION_INFOS, R.string.prefs_show_suggestion_infos) {
|
Setting(context, DebugSettings.PREF_SHOW_SUGGESTION_INFOS, R.string.prefs_show_suggestion_infos) {
|
||||||
SwitchPreference(it, false) { keyboardNeedsReload = true }
|
SwitchPreference(it, false) { keyboardNeedsReload = true }
|
||||||
},
|
},
|
||||||
Setting(context, DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH, R.string.prefs_force_non_distinct_multitouch) {
|
Setting(context, DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH, R.string.prefs_force_non_distinct_multitouch) {
|
||||||
var showConfirmDialog by rememberSaveable { mutableStateOf(false) }
|
SwitchPreference(it, false) { needsRestart = true }
|
||||||
SwitchPreference(it, false) { showConfirmDialog = true }
|
|
||||||
if (showConfirmDialog) {
|
|
||||||
ConfirmationDialog(
|
|
||||||
onDismissRequest = { showConfirmDialog = false },
|
|
||||||
onConfirmed = { Runtime.getRuntime().exit(0) },
|
|
||||||
text = { Text(stringResource(R.string.message_restart_required)) }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
Setting(context, DebugSettings.PREF_SLIDING_KEY_INPUT_PREVIEW, R.string.sliding_key_input_preview, R.string.sliding_key_input_preview_summary) { def ->
|
Setting(context, DebugSettings.PREF_SLIDING_KEY_INPUT_PREVIEW, R.string.sliding_key_input_preview, R.string.sliding_key_input_preview_summary) { def ->
|
||||||
SwitchPreference(def, false)
|
SwitchPreference(def, false)
|
||||||
|
|
|
@ -982,6 +982,4 @@ New dictionary:
|
||||||
<string name="customize_icons">Customize icons</string>
|
<string name="customize_icons">Customize icons</string>
|
||||||
<!-- Confirmation message when resetting all custom icons -->
|
<!-- Confirmation message when resetting all custom icons -->
|
||||||
<string name="customize_icons_reset_message">Really reset all customized icons?</string>
|
<string name="customize_icons_reset_message">Really reset all customized icons?</string>
|
||||||
<!-- Dialog message when restart of the app is required (sometimes actually does start again) -->
|
|
||||||
<string name="message_restart_required">Application restart is required to apply the changes. Quit now?</string>
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Add table
Reference in a new issue