|
|
|
@ -10,6 +10,9 @@ import androidx.compose.foundation.ExperimentalFoundationApi
|
|
|
|
|
import androidx.compose.foundation.Image
|
|
|
|
|
import androidx.compose.foundation.border
|
|
|
|
|
import androidx.compose.foundation.clickable
|
|
|
|
|
import androidx.compose.foundation.layout.Arrangement
|
|
|
|
|
import androidx.compose.foundation.layout.Column
|
|
|
|
|
import androidx.compose.foundation.layout.Row
|
|
|
|
|
import androidx.compose.foundation.layout.aspectRatio
|
|
|
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
|
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
|
|
@ -24,6 +27,8 @@ import androidx.compose.material.Snackbar
|
|
|
|
|
import androidx.compose.material.SnackbarDuration
|
|
|
|
|
import androidx.compose.material.SnackbarHost
|
|
|
|
|
import androidx.compose.material.Surface
|
|
|
|
|
import androidx.compose.material.Switch
|
|
|
|
|
import androidx.compose.material.SwitchDefaults
|
|
|
|
|
import androidx.compose.material.Text
|
|
|
|
|
import androidx.compose.material.TextButton
|
|
|
|
|
import androidx.compose.material.rememberScaffoldState
|
|
|
|
@ -57,6 +62,8 @@ import java.util.Locale
|
|
|
|
|
* @param selectedWallpaper The currently selected wallpaper.
|
|
|
|
|
* @param onSelectWallpaper Callback for when a new wallpaper is selected.
|
|
|
|
|
* @param onViewWallpaper Callback for when the view action is clicked from snackbar.
|
|
|
|
|
* @param tapLogoSwitchChecked Enabled state for switch controlling taps to change wallpaper.
|
|
|
|
|
* @param onTapLogoSwitchCheckedChange Callback for when state of above switch is updated.
|
|
|
|
|
*/
|
|
|
|
|
@Composable
|
|
|
|
|
@Suppress("LongParameterList")
|
|
|
|
@ -67,6 +74,8 @@ fun WallpaperSettings(
|
|
|
|
|
selectedWallpaper: Wallpaper,
|
|
|
|
|
onSelectWallpaper: (Wallpaper) -> Unit,
|
|
|
|
|
onViewWallpaper: () -> Unit,
|
|
|
|
|
tapLogoSwitchChecked: Boolean,
|
|
|
|
|
onTapLogoSwitchCheckedChange: (Boolean) -> Unit
|
|
|
|
|
) {
|
|
|
|
|
val coroutineScope = rememberCoroutineScope()
|
|
|
|
|
val scaffoldState = rememberScaffoldState()
|
|
|
|
@ -80,7 +89,7 @@ fun WallpaperSettings(
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
) {
|
|
|
|
|
Surface(color = FirefoxTheme.colors.layer2) {
|
|
|
|
|
Column {
|
|
|
|
|
WallpaperThumbnails(
|
|
|
|
|
wallpapers = wallpapers,
|
|
|
|
|
defaultWallpaper = defaultWallpaper,
|
|
|
|
@ -96,6 +105,7 @@ fun WallpaperSettings(
|
|
|
|
|
onSelectWallpaper(updatedWallpaper)
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
WallpaperLogoSwitch(tapLogoSwitchChecked, onCheckedChange = onTapLogoSwitchCheckedChange)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -158,18 +168,20 @@ private fun WallpaperThumbnails(
|
|
|
|
|
numColumns: Int = 3,
|
|
|
|
|
onSelectWallpaper: (Wallpaper) -> Unit,
|
|
|
|
|
) {
|
|
|
|
|
LazyVerticalGrid(
|
|
|
|
|
cells = GridCells.Fixed(numColumns),
|
|
|
|
|
modifier = Modifier.padding(vertical = 30.dp, horizontal = 20.dp)
|
|
|
|
|
) {
|
|
|
|
|
items(wallpapers) { wallpaper ->
|
|
|
|
|
WallpaperThumbnailItem(
|
|
|
|
|
wallpaper = wallpaper,
|
|
|
|
|
defaultWallpaper = defaultWallpaper,
|
|
|
|
|
loadWallpaperResource = loadWallpaperResource,
|
|
|
|
|
isSelected = selectedWallpaper == wallpaper,
|
|
|
|
|
onSelect = onSelectWallpaper
|
|
|
|
|
)
|
|
|
|
|
Surface(color = FirefoxTheme.colors.layer2) {
|
|
|
|
|
LazyVerticalGrid(
|
|
|
|
|
cells = GridCells.Fixed(numColumns),
|
|
|
|
|
modifier = Modifier.padding(vertical = 30.dp, horizontal = 20.dp)
|
|
|
|
|
) {
|
|
|
|
|
items(wallpapers) { wallpaper ->
|
|
|
|
|
WallpaperThumbnailItem(
|
|
|
|
|
wallpaper = wallpaper,
|
|
|
|
|
defaultWallpaper = defaultWallpaper,
|
|
|
|
|
loadWallpaperResource = loadWallpaperResource,
|
|
|
|
|
isSelected = selectedWallpaper == wallpaper,
|
|
|
|
|
onSelect = onSelectWallpaper
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -227,6 +239,45 @@ private fun WallpaperThumbnailItem(
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
|
private fun WallpaperLogoSwitch(
|
|
|
|
|
checked: Boolean,
|
|
|
|
|
onCheckedChange: (Boolean) -> Unit
|
|
|
|
|
) {
|
|
|
|
|
Column(
|
|
|
|
|
modifier = Modifier.padding(horizontal = 12.dp, vertical = 16.dp),
|
|
|
|
|
) {
|
|
|
|
|
Row(
|
|
|
|
|
horizontalArrangement = Arrangement.SpaceBetween,
|
|
|
|
|
modifier = Modifier.fillMaxWidth()
|
|
|
|
|
) {
|
|
|
|
|
Text(
|
|
|
|
|
text = stringResource(R.string.wallpaper_tap_to_change_switch_label),
|
|
|
|
|
color = FirefoxTheme.colors.textPrimary,
|
|
|
|
|
fontSize = 18.sp,
|
|
|
|
|
modifier = Modifier.padding(start = 4.dp)
|
|
|
|
|
)
|
|
|
|
|
Switch(
|
|
|
|
|
checked = checked,
|
|
|
|
|
onCheckedChange = onCheckedChange,
|
|
|
|
|
colors = SwitchDefaults.colors(
|
|
|
|
|
checkedThumbColor = FirefoxTheme.colors.formSelected,
|
|
|
|
|
checkedTrackColor = FirefoxTheme.colors.formSurface,
|
|
|
|
|
uncheckedTrackColor = FirefoxTheme.colors.formSurface
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Text(
|
|
|
|
|
text = stringResource(R.string.wallpaper_tap_to_change_switch_description),
|
|
|
|
|
color = FirefoxTheme.colors.textDisabled,
|
|
|
|
|
fontSize = 12.sp,
|
|
|
|
|
fontFamily = FontFamily(Font(R.font.metropolis_semibold)),
|
|
|
|
|
modifier = Modifier.padding(start = 8.dp, top = 16.dp)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Preview
|
|
|
|
|
@Composable
|
|
|
|
|
private fun WallpaperThumbnailsPreview() {
|
|
|
|
@ -243,6 +294,8 @@ private fun WallpaperThumbnailsPreview() {
|
|
|
|
|
selectedWallpaper = wallpaperManager.currentWallpaper,
|
|
|
|
|
onSelectWallpaper = {},
|
|
|
|
|
onViewWallpaper = {},
|
|
|
|
|
tapLogoSwitchChecked = false,
|
|
|
|
|
onTapLogoSwitchCheckedChange = {}
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|