package de.waypointaudio.data /** * Quelle der Begleitmusik für eine Tour. */ enum class MusicSourceType { LOCAL_PLAYLIST, STREAM_URL } /** * Verhalten der Begleitmusik, wenn ein Wegpunkt-Audio abgespielt wird. */ enum class WaypointMusicBehavior { /** Begleitmusik pausieren, danach fortsetzen. */ PAUSE_RESUME, /** Begleitmusik ausblenden (Fade-out), Wegpunkt abspielen, danach einblenden (Fade-in). */ FADE_OUT_IN, /** Begleitmusik auf duckVolume leise stellen, Wegpunkt parallel abspielen, danach wiederherstellen. */ DUCK_UNDERLAY, /** Begleitmusik unveränderter Lautstärke weiterspielen, Wegpunkt parallel abspielen. */ CONTINUE_UNDERLAY } /** * Ein einzelnes Element in der lokalen Playlist. */ data class PlaylistItem( val uriString: String, val displayName: String ) /** * Begleitmusik-Einstellungen für eine Tour. * * @param enabled Ob Begleitmusik für diese Tour aktiv ist. * @param sourceType Quelle: lokale Playlist oder Stream-URL. * @param localPlaylist Liste von Audiodateien (content:// URIs) aus dem lokalen Speicher. * @param streamUrl Direkte HTTP/HTTPS-Stream-URL (z. B. Internetradio). * @param behavior Verhalten wenn Wegpunkt-Audio abgespielt wird. * @param fadeDurationMs Dauer des Fade-Effekts in Millisekunden. * @param duckVolume Lautstärke (0.0–1.0) während des Duck-Modus. * @param shuffle Playlist zufällig abspielen. * @param autoStartAfterWaypoint Nach Wegpunkt-Audio Begleitmusik automatisch starten, * auch wenn sie vorher nicht spielte. */ data class TourAudioSettings( val enabled: Boolean = false, val sourceType: MusicSourceType = MusicSourceType.LOCAL_PLAYLIST, val localPlaylist: List = emptyList(), val streamUrl: String? = null, val behavior: WaypointMusicBehavior = WaypointMusicBehavior.PAUSE_RESUME, val fadeDurationMs: Long = 1500L, val duckVolume: Float = 0.25f, val shuffle: Boolean = false, val autoStartAfterWaypoint: Boolean = false )