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

View File

@ -2,10 +2,13 @@ package com.github.libretube.preferences
import android.os.Bundle import android.os.Bundle
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreferenceCompat import androidx.preference.SwitchPreferenceCompat
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.activities.SettingsActivity import com.github.libretube.activities.SettingsActivity
import java.util.*
import kotlin.collections.ArrayList
class PlayerSettings : PreferenceFragmentCompat() { class PlayerSettings : PreferenceFragmentCompat() {
val TAG = "PlayerSettings" val TAG = "PlayerSettings"
@ -31,5 +34,25 @@ class PlayerSettings : PreferenceFragmentCompat() {
playerOrientation?.isEnabled = newValue != true playerOrientation?.isEnabled = newValue != true
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() editor.apply()
} }
fun getString(key: String?, defValue: String?): String? { fun getString(key: String?, defValue: String?): String {
return settings.getString(key, defValue) return settings.getString(key, defValue)!!
} }
fun getInt(key: String?, defValue: Int): Int { fun getInt(key: String?, defValue: Int): Int {
@ -124,7 +124,7 @@ object PreferenceHelper {
} }
fun saveToSearchHistory(query: String) { fun saveToSearchHistory(query: String) {
var historyList = getSearchHistory().toMutableList() val historyList = getSearchHistory().toMutableList()
if ((historyList.contains(query))) { if ((historyList.contains(query))) {
// remove from history list if already contained // remove from history list if already contained

View File

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

View File

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

View File

@ -71,6 +71,12 @@
app:summary="@string/buffering_goal_summary" app:summary="@string/buffering_goal_summary"
app:title="@string/buffering_goal" /> 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>
<PreferenceCategory app:title="@string/behavior"> <PreferenceCategory app:title="@string/behavior">