Merge pull request #878 from Bnyro/master

option to set default subtitle language
This commit is contained in:
Bnyro 2022-07-26 19:55:05 +02:00 committed by GitHub
commit 412937f9bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 53 additions and 9 deletions

View File

@ -166,6 +166,7 @@ class PlayerFragment : Fragment() {
private var defRes = ""
private var bufferingGoal = 50000
private var seekBarPreview = false
private var defaultSubtitle = ""
/**
* for autoplay
@ -255,12 +256,12 @@ class PlayerFragment : Fragment() {
playbackSpeed = PreferenceHelper.getString(
PreferenceKeys.PLAYBACK_SPEED,
"1"
)!!.replace("F", "") // due to old way to handle it (with float)
).replace("F", "") // due to old way to handle it (with float)
fullscreenOrientationPref = PreferenceHelper.getString(
PreferenceKeys.FULLSCREEN_ORIENTATION,
"ratio"
)!!
)
pausePlayerOnScreenOffEnabled = PreferenceHelper.getBoolean(
PreferenceKeys.PAUSE_ON_SCREEN_OFF,
@ -285,27 +286,36 @@ class PlayerFragment : Fragment() {
seekIncrement = PreferenceHelper.getString(
PreferenceKeys.SEEK_INCREMENT,
"5"
)?.toLong()!! * 1000
).toLong() * 1000
videoFormatPreference = PreferenceHelper.getString(
PreferenceKeys.PLAYER_VIDEO_FORMAT,
"webm"
)!!
)
defRes = PreferenceHelper.getString(
PreferenceKeys.DEFAULT_RESOLUTION,
""
)!!
)
bufferingGoal = PreferenceHelper.getString(
PreferenceKeys.BUFFERING_GOAL,
"50"
)?.toInt()!! * 1000
).toInt() * 1000
seekBarPreview = PreferenceHelper.getBoolean(
PreferenceKeys.SEEKBAR_PREVIEW,
false
)
defaultSubtitle = PreferenceHelper.getString(
PreferenceKeys.DEFAULT_SUBTITLE,
""
)
if (defaultSubtitle.contains("-")) {
defaultSubtitle = defaultSubtitle.split("-")[0]
}
}
private fun setSponsorBlockPrefs() {
@ -1490,7 +1500,10 @@ class PlayerFragment : Fragment() {
)
.build()
// set the subtitle if default subtitle selected
trackSelector = DefaultTrackSelector(requireContext())
if (defaultSubtitle != "") trackSelector.buildUponParameters()
.setPreferredTextLanguage(defaultSubtitle)
exoPlayer = ExoPlayer.Builder(requireContext())
.setMediaSourceFactory(DefaultMediaSourceFactory(dataSourceFactory))

View File

@ -2,10 +2,13 @@ package com.github.libretube.preferences
import android.os.Bundle
import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreferenceCompat
import com.github.libretube.R
import com.github.libretube.activities.SettingsActivity
import java.util.*
import kotlin.collections.ArrayList
class PlayerSettings : PreferenceFragmentCompat() {
val TAG = "PlayerSettings"
@ -31,5 +34,25 @@ class PlayerSettings : PreferenceFragmentCompat() {
playerOrientation?.isEnabled = newValue != true
true
}
val defaultSubtitle = findPreference<ListPreference>(PreferenceKeys.DEFAULT_SUBTITLE)
val locales: Array<Locale> = Locale.getAvailableLocales()
val localeNames = ArrayList<String>()
val localeCodes = ArrayList<String>()
localeNames.add(context?.getString(R.string.none)!!)
localeCodes.add("")
locales.forEach {
if (!localeNames.contains(it.getDisplayLanguage())) {
localeNames.add(it.getDisplayLanguage())
localeCodes.add(it.language)
}
}
defaultSubtitle?.entries = localeNames.toTypedArray()
defaultSubtitle?.entryValues = localeCodes.toTypedArray()
defaultSubtitle?.summaryProvider = Preference.SummaryProvider<ListPreference> { preference ->
preference.entry
}
}
}

View File

@ -45,8 +45,8 @@ object PreferenceHelper {
editor.apply()
}
fun getString(key: String?, defValue: String?): String? {
return settings.getString(key, defValue)
fun getString(key: String?, defValue: String?): String {
return settings.getString(key, defValue)!!
}
fun getInt(key: String?, defValue: Int): Int {
@ -124,7 +124,7 @@ object PreferenceHelper {
}
fun saveToSearchHistory(query: String) {
var historyList = getSearchHistory().toMutableList()
val historyList = getSearchHistory().toMutableList()
if ((historyList.contains(query))) {
// remove from history list if already contained

View File

@ -56,6 +56,7 @@ object PreferenceKeys {
const val SEEKBAR_PREVIEW = "seekbar_preview"
const val PLAYER_AUDIO_FORMAT = "player_audio_format"
const val PLAYER_AUDIO_QUALITY = "player_audio_quality"
const val DEFAULT_SUBTITLE = "default_subtitle"
/**
* Download

View File

@ -264,4 +264,5 @@
<string name="playerAudioQuality">Audio quality</string>
<string name="best_quality">Best quality</string>
<string name="worst_quality">Worst quality</string>
<string name="default_subtitle_language">Default subtitle language</string>
</resources>

View File

@ -71,6 +71,12 @@
app:summary="@string/buffering_goal_summary"
app:title="@string/buffering_goal" />
<ListPreference
android:defaultValue="none"
android:icon="@drawable/ic_caption"
app:key="default_subtitle"
app:title="@string/default_subtitle_language" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/behavior">