Make Cached playlist optional (#11)

This commit is contained in:
vfsfitvnm 2022-07-13 19:24:22 +02:00
parent fe95805f98
commit 48e8055f21
3 changed files with 51 additions and 32 deletions

View file

@ -321,39 +321,41 @@ fun HomeScreen() {
}
}
item {
Box(
modifier = Modifier
.padding(all = 8.dp)
.clickable(
indication = rememberRipple(bounded = true),
interactionSource = remember { MutableInteractionSource() },
onClick = {
builtInPlaylistRoute(BuiltInPlaylist.Cached)
}
if (preferences.isCachedPlaylistShown) {
item {
Box(
modifier = Modifier
.padding(all = 8.dp)
.clickable(
indication = rememberRipple(bounded = true),
interactionSource = remember { MutableInteractionSource() },
onClick = {
builtInPlaylistRoute(BuiltInPlaylist.Cached)
}
)
.background(colorPalette.lightBackground)
.size(108.dp)
) {
Image(
painter = painterResource(R.drawable.download),
contentDescription = null,
colorFilter = ColorFilter.tint(colorPalette.blue),
modifier = Modifier
.align(Alignment.Center)
.size(24.dp)
)
.background(colorPalette.lightBackground)
.size(108.dp)
) {
Image(
painter = painterResource(R.drawable.download),
contentDescription = null,
colorFilter = ColorFilter.tint(colorPalette.blue),
modifier = Modifier
.align(Alignment.Center)
.size(24.dp)
)
BasicText(
text = "Cached",
style = typography.xxs.semiBold,
maxLines = 2,
overflow = TextOverflow.Ellipsis,
modifier = Modifier
.fillMaxWidth()
.align(Alignment.BottomStart)
.padding(horizontal = 8.dp, vertical = 4.dp)
)
BasicText(
text = "Cached",
style = typography.xxs.semiBold,
maxLines = 2,
overflow = TextOverflow.Ellipsis,
modifier = Modifier
.fillMaxWidth()
.align(Alignment.BottomStart)
.padding(horizontal = 8.dp, vertical = 4.dp)
)
}
}
}

View file

@ -96,7 +96,18 @@ fun AppearanceSettingsScreen() {
preferences.thumbnailRoundness = it
}
)
SettingsEntryGroupText(title = "OTHER")
SwitchSettingEntry(
title = "Cached playlist",
text = "Display a playlist whose songs can be played offline",
isChecked = preferences.isCachedPlaylistShown,
onCheckedChange = {
preferences.isCachedPlaylistShown = it
}
)
}
}
}
}
}

View file

@ -26,6 +26,7 @@ class Preferences(
initialVolumeNormalization: Boolean,
initialPersistentQueue: Boolean,
initialIsInvincibilityEnabled: Boolean,
initialIsCachedPlaylistShown: Boolean,
) {
constructor(preferences: SharedPreferences) : this(
edit = { action: SharedPreferences.Editor.() -> Unit ->
@ -44,6 +45,7 @@ class Preferences(
initialVolumeNormalization = preferences.getBoolean(Keys.volumeNormalization, false),
initialPersistentQueue = preferences.getBoolean(Keys.persistentQueue, false),
initialIsInvincibilityEnabled = preferences.getBoolean(Keys.isInvincibilityEnabled, false),
initialIsCachedPlaylistShown = preferences.getBoolean(Keys.isCachedPlaylistShown, false),
)
var isFirstLaunch = initialIsFirstLaunch
@ -85,6 +87,9 @@ class Preferences(
var isInvincibilityEnabled = initialIsInvincibilityEnabled
set(value) = edit { putBoolean(Keys.isInvincibilityEnabled, value) }
var isCachedPlaylistShown = initialIsCachedPlaylistShown
set(value) = edit { putBoolean(Keys.isCachedPlaylistShown, value) }
object Keys {
const val isFirstLaunch = "isFirstLaunch"
const val songSortOrder = "songSortOrder"
@ -99,6 +104,7 @@ class Preferences(
const val volumeNormalization = "volumeNormalization"
const val persistentQueue = "persistentQueue"
const val isInvincibilityEnabled = "isInvincibilityEnabled"
const val isCachedPlaylistShown = "isCachedPlaylistShown"
}
companion object {