Разделил обои на наборы для темной и светлой темы

This commit is contained in:
2026-03-19 16:28:18 +05:00
parent 13b61cf720
commit 09df7586e7
2 changed files with 86 additions and 13 deletions

View File

@@ -281,6 +281,7 @@ fun ThemeScreen(
WallpaperSelectorRow( WallpaperSelectorRow(
isDarkTheme = isDarkTheme, isDarkTheme = isDarkTheme,
selectedWallpaperId = wallpaperId, selectedWallpaperId = wallpaperId,
wallpapers = ThemeWallpapers.forTheme(isDarkTheme),
textColor = textColor, textColor = textColor,
secondaryTextColor = secondaryTextColor, secondaryTextColor = secondaryTextColor,
onWallpaperSelected = { selectedId -> onWallpaperSelected = { selectedId ->
@@ -292,7 +293,12 @@ fun ThemeScreen(
) )
TelegramInfoText( TelegramInfoText(
text = "Selected wallpaper is used for chat backgrounds.", text =
if (isDarkTheme) {
"Showing wallpapers for dark theme. Switch to light mode to choose light wallpapers."
} else {
"Showing wallpapers for light theme. Switch to dark mode to choose dark wallpapers."
},
secondaryTextColor = secondaryTextColor secondaryTextColor = secondaryTextColor
) )
@@ -454,6 +460,7 @@ private fun TelegramInfoText(text: String, secondaryTextColor: Color) {
private fun WallpaperSelectorRow( private fun WallpaperSelectorRow(
isDarkTheme: Boolean, isDarkTheme: Boolean,
selectedWallpaperId: String, selectedWallpaperId: String,
wallpapers: List<ThemeWallpaper>,
textColor: Color, textColor: Color,
secondaryTextColor: Color, secondaryTextColor: Color,
onWallpaperSelected: (String) -> Unit onWallpaperSelected: (String) -> Unit
@@ -475,7 +482,7 @@ private fun WallpaperSelectorRow(
) )
} }
items(items = ThemeWallpapers.all, key = { it.id }) { wallpaper -> items(items = wallpapers, key = { it.id }) { wallpaper ->
WallpaperSelectorItem( WallpaperSelectorItem(
title = wallpaper.name, title = wallpaper.name,
wallpaperResId = wallpaper.drawableRes, wallpaperResId = wallpaper.drawableRes,

View File

@@ -6,28 +6,94 @@ import com.rosetta.messenger.R
data class ThemeWallpaper( data class ThemeWallpaper(
val id: String, val id: String,
val name: String, val name: String,
val preferredTheme: WallpaperTheme,
@DrawableRes val drawableRes: Int @DrawableRes val drawableRes: Int
) )
enum class WallpaperTheme {
DARK,
LIGHT
}
object ThemeWallpapers { object ThemeWallpapers {
// Desktop parity: keep the same order/mapping as desktop WALLPAPERS. // Desktop parity: keep the same order/mapping as desktop WALLPAPERS.
val all: List<ThemeWallpaper> = val all: List<ThemeWallpaper> =
listOf( listOf(
ThemeWallpaper(id = "back_3", name = "Wallpaper 1", drawableRes = R.drawable.wallpaper_back_3), ThemeWallpaper(
ThemeWallpaper(id = "back_4", name = "Wallpaper 2", drawableRes = R.drawable.wallpaper_back_4), id = "back_3",
ThemeWallpaper(id = "back_5", name = "Wallpaper 3", drawableRes = R.drawable.wallpaper_back_5), name = "Wallpaper 1",
ThemeWallpaper(id = "back_6", name = "Wallpaper 4", drawableRes = R.drawable.wallpaper_back_6), preferredTheme = WallpaperTheme.DARK,
ThemeWallpaper(id = "back_7", name = "Wallpaper 5", drawableRes = R.drawable.wallpaper_back_7), drawableRes = R.drawable.wallpaper_back_3
ThemeWallpaper(id = "back_8", name = "Wallpaper 6", drawableRes = R.drawable.wallpaper_back_8), ),
ThemeWallpaper(id = "back_9", name = "Wallpaper 7", drawableRes = R.drawable.wallpaper_back_9), ThemeWallpaper(
ThemeWallpaper(id = "back_10", name = "Wallpaper 8", drawableRes = R.drawable.wallpaper_back_10), id = "back_4",
ThemeWallpaper(id = "back_11", name = "Wallpaper 9", drawableRes = R.drawable.wallpaper_back_11), name = "Wallpaper 2",
ThemeWallpaper(id = "back_1", name = "Wallpaper 10", drawableRes = R.drawable.wallpaper_back_1), preferredTheme = WallpaperTheme.LIGHT,
ThemeWallpaper(id = "back_2", name = "Wallpaper 11", drawableRes = R.drawable.wallpaper_back_2) drawableRes = R.drawable.wallpaper_back_4
),
ThemeWallpaper(
id = "back_5",
name = "Wallpaper 3",
preferredTheme = WallpaperTheme.DARK,
drawableRes = R.drawable.wallpaper_back_5
),
ThemeWallpaper(
id = "back_6",
name = "Wallpaper 4",
preferredTheme = WallpaperTheme.LIGHT,
drawableRes = R.drawable.wallpaper_back_6
),
ThemeWallpaper(
id = "back_7",
name = "Wallpaper 5",
preferredTheme = WallpaperTheme.LIGHT,
drawableRes = R.drawable.wallpaper_back_7
),
ThemeWallpaper(
id = "back_8",
name = "Wallpaper 6",
preferredTheme = WallpaperTheme.LIGHT,
drawableRes = R.drawable.wallpaper_back_8
),
ThemeWallpaper(
id = "back_9",
name = "Wallpaper 7",
preferredTheme = WallpaperTheme.LIGHT,
drawableRes = R.drawable.wallpaper_back_9
),
ThemeWallpaper(
id = "back_10",
name = "Wallpaper 8",
preferredTheme = WallpaperTheme.LIGHT,
drawableRes = R.drawable.wallpaper_back_10
),
ThemeWallpaper(
id = "back_11",
name = "Wallpaper 9",
preferredTheme = WallpaperTheme.DARK,
drawableRes = R.drawable.wallpaper_back_11
),
ThemeWallpaper(
id = "back_1",
name = "Wallpaper 10",
preferredTheme = WallpaperTheme.LIGHT,
drawableRes = R.drawable.wallpaper_back_1
),
ThemeWallpaper(
id = "back_2",
name = "Wallpaper 11",
preferredTheme = WallpaperTheme.DARK,
drawableRes = R.drawable.wallpaper_back_2
)
) )
fun findById(id: String): ThemeWallpaper? = all.firstOrNull { it.id == id } fun findById(id: String): ThemeWallpaper? = all.firstOrNull { it.id == id }
fun forTheme(isDarkTheme: Boolean): List<ThemeWallpaper> {
val targetTheme = if (isDarkTheme) WallpaperTheme.DARK else WallpaperTheme.LIGHT
return all.filter { it.preferredTheme == targetTheme }
}
@DrawableRes @DrawableRes
fun drawableResOrNull(id: String): Int? = findById(id)?.drawableRes fun drawableResOrNull(id: String): Int? = findById(id)?.drawableRes
} }