From 56d0064319b6757ec7016b9e72d43c5f23b9fefd Mon Sep 17 00:00:00 2001 From: Niels van Velzen Date: Tue, 5 Nov 2024 22:06:56 +0100 Subject: [PATCH] Use percentage seekbar for subtitle text size --- .../ui/preference/dsl/OptionsItemSeekbar.kt | 1 - .../screen/PlaybackPreferencesScreen.kt | 24 +++++++++---------- app/src/main/res/values/strings.xml | 5 ---- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/jellyfin/androidtv/ui/preference/dsl/OptionsItemSeekbar.kt b/app/src/main/java/org/jellyfin/androidtv/ui/preference/dsl/OptionsItemSeekbar.kt index 9e64be026e..7c78faf734 100644 --- a/app/src/main/java/org/jellyfin/androidtv/ui/preference/dsl/OptionsItemSeekbar.kt +++ b/app/src/main/java/org/jellyfin/androidtv/ui/preference/dsl/OptionsItemSeekbar.kt @@ -9,7 +9,6 @@ import java.util.UUID class OptionsItemSeekbar( private val context: Context ) : OptionsItemMutable() { - var content: String? = null var min: Int = 0 var max: Int = 100 diff --git a/app/src/main/java/org/jellyfin/androidtv/ui/preference/screen/PlaybackPreferencesScreen.kt b/app/src/main/java/org/jellyfin/androidtv/ui/preference/screen/PlaybackPreferencesScreen.kt index 09c2ca0425..e11b8ae482 100644 --- a/app/src/main/java/org/jellyfin/androidtv/ui/preference/screen/PlaybackPreferencesScreen.kt +++ b/app/src/main/java/org/jellyfin/androidtv/ui/preference/screen/PlaybackPreferencesScreen.kt @@ -13,11 +13,11 @@ import org.jellyfin.androidtv.ui.preference.dsl.checkbox import org.jellyfin.androidtv.ui.preference.dsl.colorList import org.jellyfin.androidtv.ui.preference.dsl.enum import org.jellyfin.androidtv.ui.preference.dsl.link -import org.jellyfin.androidtv.ui.preference.dsl.list import org.jellyfin.androidtv.ui.preference.dsl.optionsScreen import org.jellyfin.androidtv.ui.preference.dsl.seekbar import org.jellyfin.sdk.model.api.MediaSegmentType import org.koin.android.ext.android.inject +import kotlin.math.roundToInt class PlaybackPreferencesScreen : OptionsFragment() { private val userPreferences: UserPreferences by inject() @@ -126,20 +126,20 @@ class PlaybackPreferencesScreen : OptionsFragment() { } @Suppress("MagicNumber") - list { + // Stored in floats (1f = 100%) but seekbar preference works with integers only + seekbar { setTitle(R.string.pref_subtitles_size) - entries = mapOf( - 0.25f to context.getString(R.string.pref_subtitles_size_very_small), - 0.5f to context.getString(R.string.pref_subtitles_size_small), - 1.0f to context.getString(R.string.pref_subtitles_size_normal), - 1.5f to context.getString(R.string.pref_subtitles_size_large), - 2.0f to context.getString(R.string.pref_subtitles_size_very_large), - ).mapKeys { it.key.toString() } + min = 25 // 0.25f + max = 250 // 2.5f + increment = 25 // 0.25f + valueFormatter = object : DurationSeekBarPreference.ValueFormatter() { + override fun display(value: Int): String = "$value%" + } bind { - get { userPreferences[UserPreferences.subtitlesTextSize].toString() } - set { value -> userPreferences[UserPreferences.subtitlesTextSize] = value.toFloat() } - default { UserPreferences.subtitlesTextSize.defaultValue.toString() } + get { (userPreferences[UserPreferences.subtitlesTextSize] * 100f).roundToInt() } + set { value -> userPreferences[UserPreferences.subtitlesTextSize] = value / 100f } + default { (UserPreferences.subtitlesTextSize.defaultValue * 100f).roundToInt() } } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2333a7694a..6e3056b5df 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -225,11 +225,6 @@ Subtitle text color Subtitle background color Subtitle stroke color - Very small - Small - Normal - Large - Very large Resume from %1$s More like this Previous episode