Improve PreferenceDashboard UI
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user