Add a debug menu in preferences

This commit is contained in:
Suphon Thanakornpakapong
2021-10-13 12:40:12 +07:00
parent 97209503ff
commit 63ed74c038
5 changed files with 54 additions and 0 deletions
@@ -14,9 +14,11 @@ import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import androidx.core.widget.addTextChangedListener
import app.lawnchair.launcher
import app.lawnchair.preferences.PreferenceManager
import app.lawnchair.search.LawnchairAppSearchAlgorithm
import com.android.launcher3.ExtendedEditText
import com.android.launcher3.Insettable
import com.android.launcher3.LauncherState
import com.android.launcher3.R
import com.android.launcher3.allapps.*
import com.android.launcher3.allapps.search.AllAppsSearchBarController
@@ -57,6 +59,13 @@ class AllAppsSearchInput(context: Context, attrs: AttributeSet?) : LinearLayout(
actionButton.setOnClickListener {
input.reset()
}
input.addTextChangedListener {
if (input.text.toString() == "/lawnchairdebug") {
val enableDebugMenu = PreferenceManager.getInstance(context).enableDebugMenu
enableDebugMenu.set(!enableDebugMenu.get())
launcher.stateManager.goToState(LauncherState.NORMAL)
}
}
}
override fun onAttachedToWindow() {
@@ -84,6 +84,7 @@ class PreferenceManager private constructor(private val context: Context) : Base
val showStatusBar = BoolPref("pref_showStatusBar", true, recreate)
val allAppsIconLabels = BoolPref("pref_allAppsIconLabels", true, reloadGrid)
val searchAutoShowKeyboard = BoolPref("pref_searchAutoShowKeyboard", false)
val enableDebugMenu = BoolPref("pref_enableDebugMenu", false)
private val fontCache = FontCache.INSTANCE.get(context)
val workspaceFont = FontPref("pref_workspaceFont", fontCache.uiTextMedium, recreate)
@@ -0,0 +1,27 @@
package app.lawnchair.ui.preferences
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.runtime.Composable
import androidx.navigation.NavGraphBuilder
import app.lawnchair.ui.preferences.components.*
@ExperimentalMaterialApi
@ExperimentalAnimationApi
fun NavGraphBuilder.debugMenuGraph(route: String) {
preferenceGraph(route, { DebugMenuPreferences() })
}
/**
* A screen to house unfinished preferences and debug flags
*/
@ExperimentalMaterialApi
@ExperimentalAnimationApi
@Composable
fun DebugMenuPreferences() {
PreferenceLayout(
label = "Debug Menu"
) {
}
}
@@ -45,6 +45,7 @@ object Routes {
const val FOLDERS: String = "folders"
const val QUICKSTEP: String = "quickstep"
const val FONT_SELECTION: String = "fontSelection"
const val DEBUG_MENU: String = "debugMenu"
}
val LocalNavController = staticCompositionLocalOf<NavController> {
@@ -89,6 +90,7 @@ fun Preferences(interactor: PreferenceInteractor = viewModel<PreferenceViewModel
quickstepGraph(route = subRoute(Routes.QUICKSTEP))
aboutGraph(route = subRoute(Routes.ABOUT))
fontSelectionGraph(route = subRoute(Routes.FONT_SELECTION))
debugMenuGraph(route = subRoute(Routes.DEBUG_MENU))
}
}
}
@@ -6,7 +6,10 @@ import android.content.pm.LauncherApps
import android.os.Process
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.material.DropdownMenuItem
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.Build
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
@@ -14,7 +17,9 @@ import androidx.core.content.getSystemService
import app.lawnchair.LawnchairApp
import app.lawnchair.LawnchairLauncher
import app.lawnchair.preferences.Versioning
import app.lawnchair.preferences.preferenceManager
import app.lawnchair.ui.OverflowMenu
import app.lawnchair.ui.preferences.components.ClickableIcon
import app.lawnchair.ui.preferences.components.PreferenceCategory
import app.lawnchair.ui.preferences.components.PreferenceLayout
import app.lawnchair.util.restartLauncher
@@ -85,6 +90,16 @@ fun PreferencesDashboard() {
@Composable
fun PreferencesOverflowMenu() {
val enableDebug by preferenceManager().enableDebugMenu
if (enableDebug) {
val navController = LocalNavController.current
val resolvedRoute = subRoute(name = Routes.DEBUG_MENU)
ClickableIcon(
imageVector = Icons.Rounded.Build,
onClick = { navController.navigate(resolvedRoute) },
tint = MaterialTheme.colors.onSurface
)
}
OverflowMenu {
val context = LocalContext.current
DropdownMenuItem(onClick = {