Merge pull request #1413 from Bnyro/master

slider preference cleanup
This commit is contained in:
Bnyro 2022-09-29 20:25:06 +02:00 committed by GitHub
commit c10b0b55ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 48 additions and 73 deletions

View File

@ -1,22 +0,0 @@
package com.github.libretube.constants
import com.github.libretube.obj.SliderRange
/**
* Stores the ranges for the [SliderPreference]
*/
object PreferenceRanges {
val playbackSpeed = SliderRange(
0.25f,
6.0f,
0.25f,
1.0f
)
val seekIncrement = SliderRange(
5f,
60f,
5f,
10f
)
}

View File

@ -1,14 +0,0 @@
package com.github.libretube.extensions
import com.github.libretube.obj.SliderRange
import com.google.android.material.slider.Slider
/**
* set the range of the slider preference
*/
fun Slider.setSliderRangeAndValue(range: SliderRange) {
this.valueFrom = range.valueFrom
this.valueTo = range.valueTo
this.stepSize = range.stepSize
this.value = range.defaultValue
}

View File

@ -1,8 +0,0 @@
package com.github.libretube.obj
data class SliderRange(
val valueFrom: Float,
val valueTo: Float,
val stepSize: Float,
val defaultValue: Float
)

View File

@ -11,11 +11,9 @@ import android.view.View
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.constants.PreferenceKeys import com.github.libretube.constants.PreferenceKeys
import com.github.libretube.constants.PreferenceRanges
import com.github.libretube.databinding.DialogSliderBinding import com.github.libretube.databinding.DialogSliderBinding
import com.github.libretube.databinding.DoubleTapOverlayBinding import com.github.libretube.databinding.DoubleTapOverlayBinding
import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
import com.github.libretube.extensions.setSliderRangeAndValue
import com.github.libretube.models.interfaces.DoubleTapInterface import com.github.libretube.models.interfaces.DoubleTapInterface
import com.github.libretube.models.interfaces.PlayerOptionsInterface import com.github.libretube.models.interfaces.PlayerOptionsInterface
import com.github.libretube.obj.BottomSheetItem import com.github.libretube.obj.BottomSheetItem
@ -337,10 +335,12 @@ internal class CustomExoPlayerView(
val playbackSpeedBinding = DialogSliderBinding.inflate( val playbackSpeedBinding = DialogSliderBinding.inflate(
LayoutInflater.from(context) LayoutInflater.from(context)
) )
playbackSpeedBinding.slider.setSliderRangeAndValue( playbackSpeedBinding.slider.apply {
PreferenceRanges.playbackSpeed valueFrom = 0.25f
) valueTo = 4.0f
playbackSpeedBinding.slider.value = player?.playbackParameters?.speed ?: 1f stepSize = 0.25f
value = player?.playbackParameters?.speed ?: 1f
}
// change playback speed dialog // change playback speed dialog
MaterialAlertDialogBuilder(context) MaterialAlertDialogBuilder(context)
.setTitle(R.string.change_playback_speed) .setTitle(R.string.change_playback_speed)

View File

@ -5,10 +5,7 @@ import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.preference.Preference import androidx.preference.Preference
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.constants.PreferenceKeys
import com.github.libretube.constants.PreferenceRanges
import com.github.libretube.databinding.DialogSliderBinding import com.github.libretube.databinding.DialogSliderBinding
import com.github.libretube.extensions.setSliderRangeAndValue
import com.github.libretube.util.PreferenceHelper import com.github.libretube.util.PreferenceHelper
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
@ -24,26 +21,28 @@ class SliderPreference(
) { ) {
private lateinit var sliderBinding: DialogSliderBinding private lateinit var sliderBinding: DialogSliderBinding
val typedArray = context.obtainStyledAttributes(attributeSet, R.styleable.SliderPreference)
override fun onClick() { override fun onClick() {
val defValue = typedArray.getFloat(R.styleable.SliderPreference_defValue, 1.0f)
val valueFrom = typedArray.getFloat(R.styleable.SliderPreference_valueFrom, 1.0f)
val valueTo = typedArray.getFloat(R.styleable.SliderPreference_valueTo, 10.0f)
val stepSize = typedArray.getFloat(R.styleable.SliderPreference_stepSize, 1.0f)
sliderBinding = DialogSliderBinding.inflate( sliderBinding = DialogSliderBinding.inflate(
LayoutInflater.from(context) LayoutInflater.from(context)
) )
val range = when (key) {
PreferenceKeys.PLAYBACK_SPEED -> PreferenceRanges.playbackSpeed sliderBinding.slider.apply {
PreferenceKeys.BACKGROUND_PLAYBACK_SPEED -> PreferenceRanges.playbackSpeed value = PreferenceHelper.getString(
PreferenceKeys.SEEK_INCREMENT -> PreferenceRanges.seekIncrement key,
else -> null defValue.toString()
).toFloat()
this.valueFrom = valueFrom
this.valueTo = valueTo
this.stepSize = stepSize
} }
if (range == null) return
sliderBinding.slider.setSliderRangeAndValue(range)
sliderBinding.slider.value = PreferenceHelper.getString(
key,
range.defaultValue.toString()
).toFloat()
MaterialAlertDialogBuilder(context) MaterialAlertDialogBuilder(context)
.setTitle(title) .setTitle(title)
.setView(sliderBinding.root) .setView(sliderBinding.root)

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="SliderPreference">
<attr name="valueFrom" format="float" />
<attr name="valueTo" format="float" />
<attr name="stepSize" format="float" />
<attr name="defValue" format="float" />
</declare-styleable>
</resources>

View File

@ -78,9 +78,12 @@
<com.github.libretube.ui.views.SliderPreference <com.github.libretube.ui.views.SliderPreference
android:icon="@drawable/ic_speed" android:icon="@drawable/ic_speed"
app:defaultValue="1.0" app:defValue="1.0"
app:key="background_playback_speed" app:key="background_playback_speed"
app:title="@string/playback_speed" /> app:stepSize="0.25"
app:title="@string/playback_speed"
app:valueFrom="0.25"
app:valueTo="4.0" />
</PreferenceCategory> </PreferenceCategory>

View File

@ -6,15 +6,21 @@
<com.github.libretube.ui.views.SliderPreference <com.github.libretube.ui.views.SliderPreference
android:icon="@drawable/ic_speed" android:icon="@drawable/ic_speed"
app:defaultValue="1.0" app:defValue="1.0"
app:key="playback_speed" app:key="playback_speed"
app:title="@string/playback_speed" /> app:stepSize="0.25"
app:title="@string/playback_speed"
app:valueFrom="0.25"
app:valueTo="4.0" />
<com.github.libretube.ui.views.SliderPreference <com.github.libretube.ui.views.SliderPreference
android:icon="@drawable/ic_skip" android:icon="@drawable/ic_skip"
app:defaultValue="5" app:defValue="10.0"
app:key="seek_increment" app:key="seek_increment"
app:title="@string/seek_increment" /> app:stepSize="5.0"
app:title="@string/seek_increment"
app:valueFrom="5.0"
app:valueTo="60.0" />
<ListPreference <ListPreference
android:icon="@drawable/ic_time" android:icon="@drawable/ic_time"