fix: Migrate fallback styling to Material 3 Expressive for consistent look in Backup & Restore

Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
This commit is contained in:
Pun Butrach
2026-01-17 21:05:57 +07:00
parent 4400f59024
commit 2da1df96ed
2 changed files with 51 additions and 33 deletions
@@ -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))
}
@@ -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))
}