diff --git a/app/src/main/java/com/rosetta/messenger/ui/settings/ThemeScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/settings/ThemeScreen.kt index b9608d1..7305279 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/settings/ThemeScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/settings/ThemeScreen.kt @@ -281,6 +281,7 @@ fun ThemeScreen( WallpaperSelectorRow( isDarkTheme = isDarkTheme, selectedWallpaperId = wallpaperId, + wallpapers = ThemeWallpapers.forTheme(isDarkTheme), textColor = textColor, secondaryTextColor = secondaryTextColor, onWallpaperSelected = { selectedId -> @@ -292,7 +293,12 @@ fun ThemeScreen( ) 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 ) @@ -454,6 +460,7 @@ private fun TelegramInfoText(text: String, secondaryTextColor: Color) { private fun WallpaperSelectorRow( isDarkTheme: Boolean, selectedWallpaperId: String, + wallpapers: List, textColor: Color, secondaryTextColor: Color, 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( title = wallpaper.name, wallpaperResId = wallpaper.drawableRes, diff --git a/app/src/main/java/com/rosetta/messenger/ui/settings/ThemeWallpapers.kt b/app/src/main/java/com/rosetta/messenger/ui/settings/ThemeWallpapers.kt index 7aa5668..fe3cf59 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/settings/ThemeWallpapers.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/settings/ThemeWallpapers.kt @@ -6,28 +6,94 @@ import com.rosetta.messenger.R data class ThemeWallpaper( val id: String, val name: String, + val preferredTheme: WallpaperTheme, @DrawableRes val drawableRes: Int ) +enum class WallpaperTheme { + DARK, + LIGHT +} + object ThemeWallpapers { // Desktop parity: keep the same order/mapping as desktop WALLPAPERS. val all: List = listOf( - ThemeWallpaper(id = "back_3", name = "Wallpaper 1", drawableRes = R.drawable.wallpaper_back_3), - ThemeWallpaper(id = "back_4", name = "Wallpaper 2", drawableRes = R.drawable.wallpaper_back_4), - ThemeWallpaper(id = "back_5", name = "Wallpaper 3", drawableRes = R.drawable.wallpaper_back_5), - ThemeWallpaper(id = "back_6", name = "Wallpaper 4", drawableRes = R.drawable.wallpaper_back_6), - ThemeWallpaper(id = "back_7", name = "Wallpaper 5", drawableRes = R.drawable.wallpaper_back_7), - 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(id = "back_10", name = "Wallpaper 8", drawableRes = R.drawable.wallpaper_back_10), - ThemeWallpaper(id = "back_11", name = "Wallpaper 9", drawableRes = R.drawable.wallpaper_back_11), - ThemeWallpaper(id = "back_1", name = "Wallpaper 10", drawableRes = R.drawable.wallpaper_back_1), - ThemeWallpaper(id = "back_2", name = "Wallpaper 11", drawableRes = R.drawable.wallpaper_back_2) + ThemeWallpaper( + id = "back_3", + name = "Wallpaper 1", + preferredTheme = WallpaperTheme.DARK, + drawableRes = R.drawable.wallpaper_back_3 + ), + ThemeWallpaper( + id = "back_4", + name = "Wallpaper 2", + preferredTheme = WallpaperTheme.LIGHT, + 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 forTheme(isDarkTheme: Boolean): List { + val targetTheme = if (isDarkTheme) WallpaperTheme.DARK else WallpaperTheme.LIGHT + return all.filter { it.preferredTheme == targetTheme } + } + @DrawableRes fun drawableResOrNull(id: String): Int? = findById(id)?.drawableRes }