mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-19 05:39:10 +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 kotlinx.coroutines.flow.MutableStateFlow
|
||||
|
||||
// todo (roughly in order)
|
||||
// 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)
|
||||
// todo
|
||||
// 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?)
|
||||
// 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?
|
||||
// PRs adding prefs -> need to finish and merge main before finishing this PR
|
||||
// 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
|
||||
// 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
|
||||
// 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)
|
||||
// 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)
|
||||
// does it make sense to put this into PrefDef?
|
||||
// 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)
|
||||
// use context.prefs() outside settings
|
||||
// adjust debug settings
|
||||
// have them in main screen?
|
||||
// allow users to find the individual settings in search even if debug settings are not enabled?
|
||||
// replace the setup wizard
|
||||
|
||||
// consider disabled settings & search
|
||||
// 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.createAppearanceSettings
|
||||
import helium314.keyboard.settings.screens.createCorrectionSettings
|
||||
import helium314.keyboard.settings.screens.createDebugSettings
|
||||
import helium314.keyboard.settings.screens.createGestureTypingSettings
|
||||
import helium314.keyboard.settings.screens.createPreferencesSettings
|
||||
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) +
|
||||
createCorrectionSettings(context) + createPreferencesSettings(context) + createToolbarSettingss(context) +
|
||||
createGestureTypingSettings(context) + createAdvancedSettings(context) + createDebugSettings(context) +
|
||||
createAppearanceSettings(context)
|
||||
createGestureTypingSettings(context) + createAdvancedSettings(context) + createAppearanceSettings(context)
|
||||
|
||||
object SettingsWithoutKey {
|
||||
const val EDIT_PERSONAL_DICTIONARY = "edit_personal_dictionary"
|
||||
|
|
|
@ -3,14 +3,10 @@ package helium314.keyboard.settings.screens
|
|||
|
||||
import android.content.Context
|
||||
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.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.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
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.preferences.SwitchPreference
|
||||
import helium314.keyboard.settings.Theme
|
||||
import helium314.keyboard.settings.dialogs.ConfirmationDialog
|
||||
import helium314.keyboard.settings.keyboardNeedsReload
|
||||
import helium314.keyboard.settings.preferences.PreferenceCategory
|
||||
|
||||
@Composable
|
||||
fun DebugScreen(
|
||||
onClickBack: () -> Unit,
|
||||
) {
|
||||
val ctx = LocalContext.current
|
||||
val settings = createDebugSettings(ctx)
|
||||
val items = listOfNotNull(
|
||||
if (!BuildConfig.DEBUG) DebugSettings.PREF_SHOW_DEBUG_SETTINGS else null,
|
||||
DebugSettings.PREF_DEBUG_MODE,
|
||||
|
@ -44,13 +42,30 @@ fun DebugScreen(
|
|||
R.string.prefs_dump_dynamic_dicts
|
||||
) + DictionaryFacilitator.DYNAMIC_DICTIONARY_TYPES.map { DebugSettingsFragment.PREF_KEY_DUMP_DICT_PREFIX + it }
|
||||
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),
|
||||
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 ->
|
||||
val prefs = LocalContext.current.prefs()
|
||||
SwitchPreference(setting, false)
|
||||
|
@ -58,7 +73,6 @@ fun createDebugSettings(context: Context) = listOf(
|
|||
},
|
||||
Setting(context, DebugSettings.PREF_DEBUG_MODE, R.string.prefs_debug_mode) { setting ->
|
||||
val prefs = LocalContext.current.prefs()
|
||||
var showConfirmDialog by rememberSaveable { mutableStateOf(false) }
|
||||
SwitchPreference(
|
||||
name = setting.title,
|
||||
key = setting.key,
|
||||
|
@ -66,29 +80,14 @@ fun createDebugSettings(context: Context) = listOf(
|
|||
default = false,
|
||||
) {
|
||||
if (!it) prefs.edit().putBoolean(DebugSettings.PREF_SHOW_SUGGESTION_INFOS, false).apply()
|
||||
showConfirmDialog = true
|
||||
}
|
||||
if (showConfirmDialog) {
|
||||
ConfirmationDialog(
|
||||
onDismissRequest = { showConfirmDialog = false },
|
||||
onConfirmed = { Runtime.getRuntime().exit(0) },
|
||||
text = { Text(stringResource(R.string.message_restart_required)) }
|
||||
)
|
||||
needsRestart = true
|
||||
}
|
||||
},
|
||||
Setting(context, DebugSettings.PREF_SHOW_SUGGESTION_INFOS, R.string.prefs_show_suggestion_infos) {
|
||||
SwitchPreference(it, false) { keyboardNeedsReload = true }
|
||||
},
|
||||
Setting(context, DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH, R.string.prefs_force_non_distinct_multitouch) {
|
||||
var showConfirmDialog by rememberSaveable { mutableStateOf(false) }
|
||||
SwitchPreference(it, false) { showConfirmDialog = true }
|
||||
if (showConfirmDialog) {
|
||||
ConfirmationDialog(
|
||||
onDismissRequest = { showConfirmDialog = false },
|
||||
onConfirmed = { Runtime.getRuntime().exit(0) },
|
||||
text = { Text(stringResource(R.string.message_restart_required)) }
|
||||
)
|
||||
}
|
||||
SwitchPreference(it, false) { needsRestart = true }
|
||||
},
|
||||
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)
|
||||
|
|
|
@ -982,6 +982,4 @@ New dictionary:
|
|||
<string name="customize_icons">Customize icons</string>
|
||||
<!-- Confirmation message when resetting all custom icons -->
|
||||
<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>
|
||||
|
|
Loading…
Add table
Reference in a new issue