mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-29 00:10:32 +05:30
feat: allow user to set custom preloading amount
This commit is contained in:
parent
b7261b018b
commit
ae01341bfa
@ -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
|
||||||
)
|
)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
@ -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>
|
||||||
|
@ -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" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user