diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index 7947ba2ed..e9ad5cb3d 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -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)) diff --git a/app/src/main/java/com/github/libretube/preferences/PlayerSettings.kt b/app/src/main/java/com/github/libretube/preferences/PlayerSettings.kt index ac599363d..df6f2730c 100644 --- a/app/src/main/java/com/github/libretube/preferences/PlayerSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/PlayerSettings.kt @@ -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(PreferenceKeys.DEFAULT_SUBTITLE) + val locales: Array = Locale.getAvailableLocales() + val localeNames = ArrayList() + val localeCodes = ArrayList() + + 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 { preference -> + preference.entry + } } } diff --git a/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt b/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt index 8d677c613..89522853d 100644 --- a/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt +++ b/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt b/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt index 9065b83d2..30954e1ce 100644 --- a/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt +++ b/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt @@ -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 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d234e2b91..f60c5d1c0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -264,4 +264,5 @@ Audio quality Best quality Worst quality + Default subtitle language \ No newline at end of file diff --git a/app/src/main/res/xml/player_settings.xml b/app/src/main/res/xml/player_settings.xml index 32c0d5822..43e83b736 100644 --- a/app/src/main/res/xml/player_settings.xml +++ b/app/src/main/res/xml/player_settings.xml @@ -71,6 +71,12 @@ app:summary="@string/buffering_goal_summary" app:title="@string/buffering_goal" /> + +