Add a debug menu in preferences
This commit is contained in:
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user