Music widget: add preference to make progress bar non-interactive

This commit is contained in:
MM20
2025-07-04 17:49:23 +02:00
parent 720d2ab52a
commit ca4979abaf
5 changed files with 53 additions and 20 deletions
@@ -0,0 +1,28 @@
package de.mm20.launcher2.widgets
import de.mm20.launcher2.database.entities.PartialWidgetEntity
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import java.util.UUID
@Serializable
data class MusicWidgetConfig(
val interactiveProgressBar: Boolean = false
)
data class MusicWidget(
override val id: UUID,
val config: MusicWidgetConfig = MusicWidgetConfig(),
) : Widget() {
override fun toDatabaseEntity(): PartialWidgetEntity {
return PartialWidgetEntity(
id = id,
type = Type,
config = Json.encodeToString(config),
)
}
companion object {
const val Type = "music"
}
}
@@ -32,7 +32,11 @@ sealed class Widget {
?: WeatherWidgetConfig()
WeatherWidget(entity.id, config)
}
MusicWidget.Type -> MusicWidget(entity.id)
MusicWidget.Type -> MusicWidget(
entity.id,
Json.decodeFromStringOrNull(entity.config?.takeIf { it.isNotBlank() })
?: MusicWidgetConfig(),
)
CalendarWidget.Type -> {
val config: CalendarWidgetConfig =
Json.decodeFromStringOrNull(entity.config?.takeIf { it.isNotBlank() })
@@ -68,23 +72,6 @@ sealed class Widget {
}
data class MusicWidget(
override val id: UUID,
) : Widget() {
override fun toDatabaseEntity(): PartialWidgetEntity {
return PartialWidgetEntity(
id = id,
type = Type,
config = null
)
}
companion object {
const val Type = "music"
}
}
enum class WidgetType(val value: String) {
INTERNAL("internal"),