Skip to content

Commit 56d0064

Browse files
Use percentage seekbar for subtitle text size
1 parent 18ff2a6 commit 56d0064

File tree

3 files changed

+12
-18
lines changed

3 files changed

+12
-18
lines changed

app/src/main/java/org/jellyfin/androidtv/ui/preference/dsl/OptionsItemSeekbar.kt

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import java.util.UUID
99
class OptionsItemSeekbar(
1010
private val context: Context
1111
) : OptionsItemMutable<Int>() {
12-
1312
var content: String? = null
1413
var min: Int = 0
1514
var max: Int = 100

app/src/main/java/org/jellyfin/androidtv/ui/preference/screen/PlaybackPreferencesScreen.kt

+12-12
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ import org.jellyfin.androidtv.ui.preference.dsl.checkbox
1313
import org.jellyfin.androidtv.ui.preference.dsl.colorList
1414
import org.jellyfin.androidtv.ui.preference.dsl.enum
1515
import org.jellyfin.androidtv.ui.preference.dsl.link
16-
import org.jellyfin.androidtv.ui.preference.dsl.list
1716
import org.jellyfin.androidtv.ui.preference.dsl.optionsScreen
1817
import org.jellyfin.androidtv.ui.preference.dsl.seekbar
1918
import org.jellyfin.sdk.model.api.MediaSegmentType
2019
import org.koin.android.ext.android.inject
20+
import kotlin.math.roundToInt
2121

2222
class PlaybackPreferencesScreen : OptionsFragment() {
2323
private val userPreferences: UserPreferences by inject()
@@ -126,20 +126,20 @@ class PlaybackPreferencesScreen : OptionsFragment() {
126126
}
127127

128128
@Suppress("MagicNumber")
129-
list {
129+
// Stored in floats (1f = 100%) but seekbar preference works with integers only
130+
seekbar {
130131
setTitle(R.string.pref_subtitles_size)
131-
entries = mapOf(
132-
0.25f to context.getString(R.string.pref_subtitles_size_very_small),
133-
0.5f to context.getString(R.string.pref_subtitles_size_small),
134-
1.0f to context.getString(R.string.pref_subtitles_size_normal),
135-
1.5f to context.getString(R.string.pref_subtitles_size_large),
136-
2.0f to context.getString(R.string.pref_subtitles_size_very_large),
137-
).mapKeys { it.key.toString() }
132+
min = 25 // 0.25f
133+
max = 250 // 2.5f
134+
increment = 25 // 0.25f
135+
valueFormatter = object : DurationSeekBarPreference.ValueFormatter() {
136+
override fun display(value: Int): String = "$value%"
137+
}
138138

139139
bind {
140-
get { userPreferences[UserPreferences.subtitlesTextSize].toString() }
141-
set { value -> userPreferences[UserPreferences.subtitlesTextSize] = value.toFloat() }
142-
default { UserPreferences.subtitlesTextSize.defaultValue.toString() }
140+
get { (userPreferences[UserPreferences.subtitlesTextSize] * 100f).roundToInt() }
141+
set { value -> userPreferences[UserPreferences.subtitlesTextSize] = value / 100f }
142+
default { (UserPreferences.subtitlesTextSize.defaultValue * 100f).roundToInt() }
143143
}
144144
}
145145
}

app/src/main/res/values/strings.xml

-5
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,6 @@
225225
<string name="lbl_subtitle_text_color">Subtitle text color</string>
226226
<string name="lbl_subtitle_background_color">Subtitle background color</string>
227227
<string name="lbl_subtitle_text_stroke_color">Subtitle stroke color</string>
228-
<string name="pref_subtitles_size_very_small">Very small</string>
229-
<string name="pref_subtitles_size_small">Small</string>
230-
<string name="pref_subtitles_size_normal">Normal</string>
231-
<string name="pref_subtitles_size_large">Large</string>
232-
<string name="pref_subtitles_size_very_large">Very large</string>
233228
<string name="lbl_resume_from">Resume from %1$s</string>
234229
<string name="lbl_more_like_this">More like this</string>
235230
<string name="lbl_previous_episode">Previous episode</string>

0 commit comments

Comments
 (0)