diff --git a/library/ui-strings/src/main/res/values/strings_sc.xml b/library/ui-strings/src/main/res/values/strings_sc.xml index db66fd6627..7bfaa47de2 100644 --- a/library/ui-strings/src/main/res/values/strings_sc.xml +++ b/library/ui-strings/src/main/res/values/strings_sc.xml @@ -158,6 +158,8 @@ Schildi-debugging Enable additional logs or debugging features + Additional logs + Visual debugging info Read marker debugging Timeline consistency debugging Show displayIndex in timeline diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsScDebuggingFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsScDebuggingFragment.kt index 0a0f863b52..f4f7c63c4a 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsScDebuggingFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsScDebuggingFragment.kt @@ -2,6 +2,7 @@ package im.vector.app.features.settings import androidx.annotation.StringRes import androidx.preference.Preference +import androidx.preference.PreferenceGroup import de.spiritcroc.matrixsdk.util.DbgUtil import im.vector.app.R import im.vector.app.core.preference.VectorSwitchPreference @@ -14,31 +15,44 @@ class VectorSettingsScDebuggingFragment @Inject constructor( override var titleRes = R.string.settings_sc_debugging override val preferenceXmlRes = R.xml.vector_settings_sc_debugging + companion object { + const val SC_DEBUGGING_CATEGORY_LOGS = "SC_DEBUGGING_CATEGORY_LOGS" + const val SC_DEBUGGING_CATEGORY_VISUALS = "SC_DEBUGGING_CATEGORY_VISUALS" + } + data class DbgPref(val key: String, @StringRes val stringRes: Int) - val dbgPrefs = arrayOf( + private val dbgLoggingPrefs = arrayOf( DbgPref(DbgUtil.DBG_TIMELINE_CHUNKS, R.string.settings_sc_dbg_timeline_chunks), - DbgPref(DbgUtil.DBG_SHOW_DISPLAY_INDEX, R.string.settings_sc_dbg_show_display_index), DbgPref(DbgUtil.DBG_READ_MARKER, R.string.settings_sc_dbg_read_marker), - DbgPref(DbgUtil.DBG_SHOW_READ_TRACKING, R.string.settings_sc_dbg_show_read_tracking), DbgPref(DbgUtil.DBG_READ_RECEIPTS, R.string.settings_sc_dbg_read_receipts), DbgPref(DbgUtil.DBG_VIEW_PAGER, R.string.settings_sc_dbg_view_pager), + ) + private val dbgVisualsPrefs = arrayOf( + DbgPref(DbgUtil.DBG_SHOW_DISPLAY_INDEX, R.string.settings_sc_dbg_show_display_index), + DbgPref(DbgUtil.DBG_SHOW_READ_TRACKING, R.string.settings_sc_dbg_show_read_tracking), DbgPref(DbgUtil.DBG_VIEW_PAGER_VISUALS, R.string.settings_sc_dbg_view_pager_visuals), ) + val dbgPrefs = dbgLoggingPrefs + dbgVisualsPrefs - override fun bindPref() { - dbgPrefs.forEach { dbgPref -> + private fun addScDbgPrefs(prefs: Array, group: PreferenceGroup) { + prefs.forEach { dbgPref -> var pref: VectorSwitchPreference? = findPreference(dbgPref.key) if (pref == null) { pref = VectorSwitchPreference(requireContext()) pref.key = dbgPref.key pref.title = getString(dbgPref.stringRes) - preferenceScreen.addPreference(pref) + group.addPreference(pref) } pref.isChecked = DbgUtil.isDbgEnabled(pref.key) pref.onPreferenceChangeListener = preferenceChangeListener } } + override fun bindPref() { + findPreference(SC_DEBUGGING_CATEGORY_LOGS)?.let { addScDbgPrefs(dbgLoggingPrefs, it) } + findPreference(SC_DEBUGGING_CATEGORY_VISUALS)?.let { addScDbgPrefs(dbgVisualsPrefs, it) } + } + private val preferenceChangeListener = Preference.OnPreferenceChangeListener { preference, newValue -> if (newValue is Boolean && dbgPrefs.any { preference.key == it.key }) { DbgUtil.onPreferenceChanged(requireContext(), preference.key as String, newValue) diff --git a/vector/src/main/res/xml/vector_settings_sc_debugging.xml b/vector/src/main/res/xml/vector_settings_sc_debugging.xml index 0192e4d66c..8c167946dd 100644 --- a/vector/src/main/res/xml/vector_settings_sc_debugging.xml +++ b/vector/src/main/res/xml/vector_settings_sc_debugging.xml @@ -3,7 +3,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> - + + +