feat: allow user to set custom preloading amount

This commit is contained in:
Bnyro 2024-09-17 17:23:28 +02:00
parent b7261b018b
commit ae01341bfa
5 changed files with 28 additions and 19 deletions

View File

@ -53,6 +53,7 @@ import kotlinx.coroutines.runBlocking
import java.util.Locale import java.util.Locale
import java.util.concurrent.Executors import java.util.concurrent.Executors
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
import kotlin.math.max
import kotlin.math.roundToInt import kotlin.math.roundToInt
object PlayerHelper { object PlayerHelper {
@ -543,7 +544,7 @@ object PlayerHelper {
.setBackBuffer(1000 * 60 * 3, true) .setBackBuffer(1000 * 60 * 3, true)
.setBufferDurationsMs( .setBufferDurationsMs(
MINIMUM_BUFFER_DURATION, MINIMUM_BUFFER_DURATION,
bufferingGoal, max(bufferingGoal, MINIMUM_BUFFER_DURATION),
DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS, DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS,
DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS
) )

View File

@ -1,5 +1,7 @@
package com.github.libretube.ui.base package com.github.libretube.ui.base
import android.text.InputType
import android.widget.Toast
import androidx.preference.EditTextPreference import androidx.preference.EditTextPreference
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.MultiSelectListPreference import androidx.preference.MultiSelectListPreference
@ -8,6 +10,7 @@ import androidx.preference.PreferenceFragmentCompat
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.databinding.DialogTextPreferenceBinding import com.github.libretube.databinding.DialogTextPreferenceBinding
import com.github.libretube.ui.activities.SettingsActivity import com.github.libretube.ui.activities.SettingsActivity
import com.github.libretube.ui.preferences.EditNumberPreference
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
/** /**
@ -76,11 +79,21 @@ abstract class BasePreferenceFragment : PreferenceFragmentCompat() {
is EditTextPreference -> { is EditTextPreference -> {
val binding = DialogTextPreferenceBinding.inflate(layoutInflater) val binding = DialogTextPreferenceBinding.inflate(layoutInflater)
binding.input.setText(preference.text) binding.input.setText(preference.text)
if (preference is EditNumberPreference) {
binding.input.inputType = InputType.TYPE_NUMBER_FLAG_SIGNED
}
MaterialAlertDialogBuilder(requireContext()) MaterialAlertDialogBuilder(requireContext())
.setTitle(preference.title) .setTitle(preference.title)
.setView(binding.root) .setView(binding.root)
.setPositiveButton(android.R.string.ok) { _, _ -> .setPositiveButton(android.R.string.ok) { _, _ ->
val newValue = binding.input.text.toString() val newValue = binding.input.text.toString()
if (preference is EditNumberPreference && newValue.any { !it.isDigit() }) {
Toast.makeText(context, R.string.invalid_input, Toast.LENGTH_LONG).show()
return@setPositiveButton
}
if (preference.callChangeListener(newValue)) { if (preference.callChangeListener(newValue)) {
preference.text = newValue preference.text = newValue
} }

View File

@ -0,0 +1,12 @@
package com.github.libretube.ui.preferences
import android.content.Context
import android.util.AttributeSet
import androidx.preference.EditTextPreference
import com.github.libretube.ui.base.BasePreferenceFragment
/**
* [EditTextPreference] that only allows numeric input.
* The actual functionality is done in [BasePreferenceFragment].
*/
class EditNumberPreference(context: Context, attributeSet: AttributeSet?): EditTextPreference(context, attributeSet)

View File

@ -200,21 +200,6 @@
<item>6</item> <item>6</item>
</string-array> </string-array>
<string-array name="bufferingGoal">
<item>50s</item>
<item>100s</item>
<item>200s</item>
<item>300s</item>
<item>450s</item>
</string-array>
<string-array name="bufferingGoalValues">
<item>50</item>
<item>100</item>
<item>200</item>
<item>300</item>
<item>450</item>
</string-array>
<string-array name="playerVideoFormat"> <string-array name="playerVideoFormat">
<item>WEBM</item> <item>WEBM</item>
<item>MPEG_4</item> <item>MPEG_4</item>

View File

@ -203,11 +203,9 @@
<PreferenceCategory app:title="@string/misc"> <PreferenceCategory app:title="@string/misc">
<ListPreference <com.github.libretube.ui.preferences.EditNumberPreference
android:icon="@drawable/ic_time" android:icon="@drawable/ic_time"
app:defaultValue="50" app:defaultValue="50"
app:entries="@array/bufferingGoal"
app:entryValues="@array/bufferingGoalValues"
app:key="buffering_goal" app:key="buffering_goal"
app:summary="@string/buffering_goal_summary" app:summary="@string/buffering_goal_summary"
app:title="@string/buffering_goal" /> app:title="@string/buffering_goal" />