diff --git a/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt b/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt index 0abe6cba..97bc7cdf 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt @@ -8,6 +8,7 @@ import androidx.preference.PreferenceManager import com.github.damontecres.wholphin.R import com.github.damontecres.wholphin.WholphinApplication import com.github.damontecres.wholphin.ui.nav.Destination +import com.github.damontecres.wholphin.ui.preferences.ConditionalPreferences import com.github.damontecres.wholphin.ui.preferences.PreferenceGroup import com.github.damontecres.wholphin.ui.preferences.PreferenceScreenOption import com.github.damontecres.wholphin.ui.preferences.PreferenceValidation @@ -769,6 +770,7 @@ val advancedPreferences = preferences = listOf( AppPreference.OneClickPause, + AppPreference.GlobalContentScale, AppPreference.SkipIntros, AppPreference.SkipOutros, AppPreference.SkipCommercials, @@ -776,20 +778,27 @@ val advancedPreferences = AppPreference.SkipRecaps, AppPreference.MaxBitrate, AppPreference.PlaybackDebugInfo, - AppPreference.PlayerBackendPref, - AppPreference.MpvHardwareDecoding, ), ), PreferenceGroup( - title = R.string.playback_overrides, - preferences = + title = R.string.player_backend, + preferences = listOf(AppPreference.PlayerBackendPref), + conditionalPreferences = listOf( - AppPreference.GlobalContentScale, - AppPreference.DownMixStereo, - AppPreference.Ac3Supported, - AppPreference.DirectPlayAss, - AppPreference.DirectPlayPgs, - AppPreference.FfmpegPreference, + ConditionalPreferences( + { it.playbackPreferences.playerBackend == PlayerBackend.EXO_PLAYER }, + listOf( + AppPreference.FfmpegPreference, + AppPreference.DownMixStereo, + AppPreference.Ac3Supported, + AppPreference.DirectPlayAss, + AppPreference.DirectPlayPgs, + ), + ), + ConditionalPreferences( + { it.playbackPreferences.playerBackend == PlayerBackend.MPV }, + listOf(AppPreference.MpvHardwareDecoding), + ), ), ), PreferenceGroup( diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferenceUtils.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferenceUtils.kt index ffa6abeb..a88e3a4b 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferenceUtils.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferenceUtils.kt @@ -2,6 +2,7 @@ package com.github.damontecres.wholphin.ui.preferences import androidx.annotation.StringRes import com.github.damontecres.wholphin.preferences.AppPreference +import com.github.damontecres.wholphin.preferences.AppPreferences import kotlinx.serialization.Serializable /** @@ -10,6 +11,12 @@ import kotlinx.serialization.Serializable data class PreferenceGroup( @param:StringRes val title: Int, val preferences: List>, + val conditionalPreferences: List = listOf(), +) + +data class ConditionalPreferences( + val condition: (AppPreferences) -> Boolean, + val preferences: List>, ) /** diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt index 2844207b..92b5f88b 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt @@ -175,7 +175,13 @@ fun PreferencesContent( .padding(top = 8.dp, bottom = 4.dp), ) } - group.preferences.forEachIndexed { prefIndex, pref -> + val groupPreferences = + group.preferences + + group.conditionalPreferences + .filter { it.condition.invoke(preferences) } + .map { it.preferences } + .flatten() + groupPreferences.forEachIndexed { prefIndex, pref -> pref as AppPreference item { val interactionSource = remember { MutableInteractionSource() } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c575edf8..8fd77fbe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -147,6 +147,8 @@ Playback Backend MPV: Use hardware decoding Disable if you experience crashes + MPV Options + ExoPlayer Options %d downloads