From 2da1df96edba86ea6480e1d44ce8085a103b9afa Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Sat, 17 Jan 2026 21:05:57 +0700 Subject: [PATCH] fix: Migrate fallback styling to Material 3 Expressive for consistent look in Backup & Restore Signed-off-by: Pun Butrach --- .../lawnchair/backup/ui/CreateBackupScreen.kt | 48 +++++++++++-------- .../backup/ui/RestoreBackupScreen.kt | 36 ++++++++------ 2 files changed, 51 insertions(+), 33 deletions(-) diff --git a/lawnchair/src/app/lawnchair/backup/ui/CreateBackupScreen.kt b/lawnchair/src/app/lawnchair/backup/ui/CreateBackupScreen.kt index 666524c787..aca163b59e 100644 --- a/lawnchair/src/app/lawnchair/backup/ui/CreateBackupScreen.kt +++ b/lawnchair/src/app/lawnchair/backup/ui/CreateBackupScreen.kt @@ -16,6 +16,8 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -42,9 +44,11 @@ import app.lawnchair.ui.preferences.components.DummyLauncherBox import app.lawnchair.ui.preferences.components.WallpaperAccessPermissionDialog import app.lawnchair.ui.preferences.components.WallpaperPreview import app.lawnchair.ui.preferences.components.WithWallpaper +import app.lawnchair.ui.preferences.components.controls.ClickablePreference import app.lawnchair.ui.preferences.components.controls.FlagSwitchPreference import app.lawnchair.ui.preferences.components.layout.PreferenceGroup import app.lawnchair.ui.preferences.components.layout.PreferenceLayout +import app.lawnchair.ui.preferences.navigation.AppDrawerFolder import app.lawnchair.util.BackHandler import app.lawnchair.util.FileAccessState import app.lawnchair.util.hasFlag @@ -52,6 +56,7 @@ import app.lawnchair.util.removeFlag import com.android.launcher3.R import kotlinx.coroutines.launch +@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun CreateBackupScreen( viewModel: CreateBackupViewModel, @@ -151,25 +156,29 @@ fun CreateBackupScreen( } PreferenceGroup(heading = stringResource(id = R.string.what_to_backup)) { - FlagSwitchPreference( - flags = contents, - setFlags = viewModel::setBackupContents, - mask = LawnchairBackup.INCLUDE_LAYOUT_AND_SETTINGS, - label = stringResource(id = R.string.backup_content_layout_and_settings), - ) - FlagSwitchPreference( - flags = contents, - setFlags = { - if (it.hasFlag(LawnchairBackup.INCLUDE_WALLPAPER) && !hasWallpaperPermission) { - showPermissionDialog = true - } else { - viewModel.setBackupContents(it) - } - }, - mask = LawnchairBackup.INCLUDE_WALLPAPER, - label = stringResource(id = R.string.backup_content_wallpaper), - enabled = !hasLiveWallpaper, - ) + Item { + FlagSwitchPreference( + flags = contents, + setFlags = viewModel::setBackupContents, + mask = LawnchairBackup.INCLUDE_LAYOUT_AND_SETTINGS, + label = stringResource(id = R.string.backup_content_layout_and_settings), + ) + } + Item { + FlagSwitchPreference( + flags = contents, + setFlags = { + if (it.hasFlag(LawnchairBackup.INCLUDE_WALLPAPER) && !hasWallpaperPermission) { + showPermissionDialog = true + } else { + viewModel.setBackupContents(it) + } + }, + mask = LawnchairBackup.INCLUDE_WALLPAPER, + label = stringResource(id = R.string.backup_content_wallpaper), + enabled = !hasLiveWallpaper, + ) + } } Box( modifier = Modifier @@ -183,6 +192,7 @@ fun CreateBackupScreen( .align(Alignment.CenterEnd) .fillMaxWidth(), enabled = contents != 0 && screenshotDone && !creatingBackup, + shapes = ButtonDefaults.shapes() ) { Text(text = stringResource(id = R.string.action_create)) } diff --git a/lawnchair/src/app/lawnchair/backup/ui/RestoreBackupScreen.kt b/lawnchair/src/app/lawnchair/backup/ui/RestoreBackupScreen.kt index ac12eff170..bafa37a0da 100644 --- a/lawnchair/src/app/lawnchair/backup/ui/RestoreBackupScreen.kt +++ b/lawnchair/src/app/lawnchair/backup/ui/RestoreBackupScreen.kt @@ -16,7 +16,9 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -110,6 +112,7 @@ fun RestoreBackupScreen( } } +@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun ColumnScope.RestoreBackupOptions( isPortrait: Boolean, @@ -177,20 +180,24 @@ fun ColumnScope.RestoreBackupOptions( modifier = modifier, heading = stringResource(id = R.string.what_to_restore), ) { - FlagSwitchPreference( - flags = contents, - setFlags = viewModel::setBackupContents, - mask = LawnchairBackup.INCLUDE_LAYOUT_AND_SETTINGS, - label = stringResource(id = R.string.backup_content_layout_and_settings), - enabled = backupContents.hasFlag(LawnchairBackup.INCLUDE_LAYOUT_AND_SETTINGS), - ) - FlagSwitchPreference( - flags = contents, - setFlags = viewModel::setBackupContents, - mask = LawnchairBackup.INCLUDE_WALLPAPER, - label = stringResource(id = R.string.backup_content_wallpaper), - enabled = backupContents.hasFlag(LawnchairBackup.INCLUDE_WALLPAPER), - ) + Item { + FlagSwitchPreference( + flags = contents, + setFlags = viewModel::setBackupContents, + mask = LawnchairBackup.INCLUDE_LAYOUT_AND_SETTINGS, + label = stringResource(id = R.string.backup_content_layout_and_settings), + enabled = backupContents.hasFlag(LawnchairBackup.INCLUDE_LAYOUT_AND_SETTINGS), + ) + } + Item { + FlagSwitchPreference( + flags = contents, + setFlags = viewModel::setBackupContents, + mask = LawnchairBackup.INCLUDE_WALLPAPER, + label = stringResource(id = R.string.backup_content_wallpaper), + enabled = backupContents.hasFlag(LawnchairBackup.INCLUDE_WALLPAPER), + ) + } } Box( modifier = Modifier @@ -204,6 +211,7 @@ fun ColumnScope.RestoreBackupOptions( .align(Alignment.CenterEnd) .fillMaxWidth(), enabled = contents != 0 && !restoringBackup, + shapes = ButtonDefaults.shapes() ) { Text(text = stringResource(id = R.string.action_restore)) }