diff --git a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceActivity.kt b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceActivity.kt index 19bf9f12be..d1d71aaf63 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceActivity.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceActivity.kt @@ -16,9 +16,7 @@ package app.lawnchair.ui.preferences -import android.app.Activity import android.content.Context -import android.content.ContextWrapper import android.content.Intent import android.graphics.Color import android.os.Bundle @@ -73,12 +71,6 @@ class PreferenceActivity : AppCompatActivity() { } } -fun Context.findActivity(): Activity? = when (this) { - is Activity -> this - is ContextWrapper -> baseContext.findActivity() - else -> null -} - /** * The default light scrim, as defined by androidx and the platform: * https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity/src/main/java/androidx/activity/EdgeToEdge.kt;l=35-38;drc=27e7d52e8604a080133e8b842db10c89b4482598 diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/PreferencesDashboard.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/PreferencesDashboard.kt index 1c6ded92a4..40a703cbed 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/PreferencesDashboard.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/PreferencesDashboard.kt @@ -7,6 +7,7 @@ import android.content.Intent import android.content.pm.LauncherApps import android.os.Process import android.provider.Settings +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Spacer @@ -20,9 +21,11 @@ import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text +import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp @@ -33,7 +36,6 @@ import app.lawnchair.backup.ui.restoreBackupOpener import app.lawnchair.preferences.observeAsState import app.lawnchair.preferences.preferenceManager import app.lawnchair.ui.OverflowMenu -import app.lawnchair.ui.preferences.LocalNavController import app.lawnchair.ui.preferences.components.AnnouncementPreference import app.lawnchair.ui.preferences.components.controls.PreferenceCategory import app.lawnchair.ui.preferences.components.controls.WarningPreference @@ -43,6 +45,7 @@ import app.lawnchair.ui.preferences.components.layout.PreferenceLayout import app.lawnchair.ui.preferences.components.layout.PreferenceTemplate import app.lawnchair.ui.preferences.data.liveinfo.SyncLiveInformation import app.lawnchair.ui.preferences.navigation.Routes +import app.lawnchair.ui.util.addIf import app.lawnchair.util.isDefaultLauncher import app.lawnchair.util.restartLauncher import com.android.launcher3.BuildConfig @@ -62,7 +65,7 @@ fun PreferencesDashboard( modifier = modifier, verticalArrangement = Arrangement.Top, backArrowVisible = false, - actions = { PreferencesOverflowMenu() }, + actions = { PreferencesOverflowMenu(currentRoute = currentRoute, onNavigate = onNavigate) }, ) { AnnouncementPreference() @@ -162,21 +165,38 @@ fun PreferencesDashboard( @Composable fun PreferencesOverflowMenu( + currentRoute: String, + onNavigate: (String) -> Unit, modifier: Modifier = Modifier, ) { - val navController = LocalNavController.current val enableDebug by preferenceManager().enableDebugMenu.observeAsState() + val highlightColor = MaterialTheme.colorScheme.surfaceColorAtElevation(4.dp) + val highlightShape = MaterialTheme.shapes.large + val experimentalFeaturesRoute = Routes.EXPERIMENTAL_FEATURES if (enableDebug) { val resolvedRoute = Routes.DEBUG_MENU ClickableIcon( imageVector = Icons.Rounded.Build, - onClick = { navController.navigate(resolvedRoute) }, + onClick = { onNavigate(resolvedRoute) }, + modifier = Modifier.addIf(currentRoute.contains(resolvedRoute)) { + Modifier + .clip(highlightShape) + .background(highlightColor) + } ) } val openRestoreBackup = restoreBackupOpener() OverflowMenu( - modifier = modifier, + modifier = modifier.addIf( + listOf(Routes.CREATE_BACKUP, Routes.RESTORE_BACKUP, experimentalFeaturesRoute).any { + currentRoute.contains(it) + }, + ) { + Modifier + .clip(highlightShape) + .background(highlightColor) + }, ) { val context = LocalContext.current DropdownMenuItem(onClick = { @@ -192,14 +212,14 @@ fun PreferencesOverflowMenu( Text(text = stringResource(id = R.string.debug_restart_launcher)) }) DropdownMenuItem(onClick = { - navController.navigate(experimentalFeaturesRoute) + onNavigate(experimentalFeaturesRoute) hideMenu() }, text = { Text(text = stringResource(id = R.string.experimental_features_label)) }) PreferenceDivider(modifier = Modifier.padding(vertical = 8.dp)) DropdownMenuItem(onClick = { - navController.navigate(Routes.CREATE_BACKUP) + onNavigate(Routes.CREATE_BACKUP) hideMenu() }, text = { Text(text = stringResource(id = R.string.create_backup))