From f9cdd2da5fbb43787ed0ec672d7c2b918884ee43 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 26 Aug 2022 09:04:35 +0200 Subject: [PATCH] code improvements --- .../extensions/SetSliderRangeAndValue.kt | 14 ++++++++++++++ .../libretube/extensions/SliderPreference.kt | 18 ++++++++++++++++-- .../libretube/fragments/PlayerFragment.kt | 5 +++++ .../com/github/libretube/obj/SliderRange.kt | 8 ++++++++ .../libretube/preferences/PreferenceRanges.kt | 15 +++++++++++++++ .../libretube/util/NotificationHelper.kt | 7 +++++-- app/src/main/res/layout/dialog_slider.xml | 2 +- 7 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/github/libretube/extensions/SetSliderRangeAndValue.kt create mode 100644 app/src/main/java/com/github/libretube/obj/SliderRange.kt create mode 100644 app/src/main/java/com/github/libretube/preferences/PreferenceRanges.kt diff --git a/app/src/main/java/com/github/libretube/extensions/SetSliderRangeAndValue.kt b/app/src/main/java/com/github/libretube/extensions/SetSliderRangeAndValue.kt new file mode 100644 index 000000000..2ff773c82 --- /dev/null +++ b/app/src/main/java/com/github/libretube/extensions/SetSliderRangeAndValue.kt @@ -0,0 +1,14 @@ +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 +} diff --git a/app/src/main/java/com/github/libretube/extensions/SliderPreference.kt b/app/src/main/java/com/github/libretube/extensions/SliderPreference.kt index 0ff432fc0..c37fb9dc7 100644 --- a/app/src/main/java/com/github/libretube/extensions/SliderPreference.kt +++ b/app/src/main/java/com/github/libretube/extensions/SliderPreference.kt @@ -7,6 +7,8 @@ import androidx.preference.Preference import com.github.libretube.R import com.github.libretube.databinding.DialogSliderBinding import com.github.libretube.preferences.PreferenceHelper +import com.github.libretube.preferences.PreferenceKeys +import com.github.libretube.preferences.PreferenceRanges import com.google.android.material.dialog.MaterialAlertDialogBuilder /** @@ -19,13 +21,25 @@ class SliderPreference( context, attributeSet ) { + private lateinit var sliderBinding: DialogSliderBinding + override fun onClick() { - val sliderBinding = DialogSliderBinding.inflate( + sliderBinding = DialogSliderBinding.inflate( LayoutInflater.from(context) ) + val range = when (key) { + PreferenceKeys.PLAYBACK_SPEED -> PreferenceRanges.playbackSpeed + PreferenceKeys.BACKGROUND_PLAYBACK_SPEED -> PreferenceRanges.playbackSpeed + else -> null + } + + if (range == null) return + + sliderBinding.slider.setSliderRangeAndValue(range) + sliderBinding.slider.value = PreferenceHelper.getString( key, - "1.0" + range.defaultValue.toString() ).toFloat() MaterialAlertDialogBuilder(context) 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 16dd19e3b..5526499d4 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -55,6 +55,7 @@ import com.github.libretube.dialogs.ShareDialog import com.github.libretube.extensions.BaseFragment import com.github.libretube.extensions.TAG import com.github.libretube.extensions.await +import com.github.libretube.extensions.setSliderRangeAndValue import com.github.libretube.interfaces.DoubleTapInterface import com.github.libretube.interfaces.PlayerOptionsInterface import com.github.libretube.models.PlayerViewModel @@ -64,6 +65,7 @@ import com.github.libretube.obj.Segments import com.github.libretube.obj.Streams import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.preferences.PreferenceKeys +import com.github.libretube.preferences.PreferenceRanges import com.github.libretube.services.BackgroundMode import com.github.libretube.util.AutoPlayHelper import com.github.libretube.util.BackgroundHelper @@ -511,6 +513,9 @@ class PlayerFragment : BaseFragment() { override fun onPlaybackSpeedClicked() { val playbackSpeedBinding = DialogSliderBinding.inflate(layoutInflater) + playbackSpeedBinding.slider.setSliderRangeAndValue( + PreferenceRanges.playbackSpeed + ) playbackSpeedBinding.slider.value = exoPlayer.playbackParameters.speed // change playback speed dialog MaterialAlertDialogBuilder(requireContext()) diff --git a/app/src/main/java/com/github/libretube/obj/SliderRange.kt b/app/src/main/java/com/github/libretube/obj/SliderRange.kt new file mode 100644 index 000000000..3802ebecf --- /dev/null +++ b/app/src/main/java/com/github/libretube/obj/SliderRange.kt @@ -0,0 +1,8 @@ +package com.github.libretube.obj + +data class SliderRange( + val valueFrom: Float, + val valueTo: Float, + val stepSize: Float, + val defaultValue: Float +) diff --git a/app/src/main/java/com/github/libretube/preferences/PreferenceRanges.kt b/app/src/main/java/com/github/libretube/preferences/PreferenceRanges.kt new file mode 100644 index 000000000..36fffda11 --- /dev/null +++ b/app/src/main/java/com/github/libretube/preferences/PreferenceRanges.kt @@ -0,0 +1,15 @@ +package com.github.libretube.preferences + +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 + ) +} diff --git a/app/src/main/java/com/github/libretube/util/NotificationHelper.kt b/app/src/main/java/com/github/libretube/util/NotificationHelper.kt index 5b81cc838..1f83f9c72 100644 --- a/app/src/main/java/com/github/libretube/util/NotificationHelper.kt +++ b/app/src/main/java/com/github/libretube/util/NotificationHelper.kt @@ -189,8 +189,11 @@ class NotificationHelper( .setContentIntent(pendingIntent) .setAutoCancel(true) - if (isSummary) builder.setGroupSummary(true) - else builder.setContentText(description) + if (isSummary) { + builder.setGroupSummary(true) + } else { + builder.setContentText(description) + } with(NotificationManagerCompat.from(context)) { // notificationId is a unique int for each notification that you must define diff --git a/app/src/main/res/layout/dialog_slider.xml b/app/src/main/res/layout/dialog_slider.xml index fab99a531..05f3bd91f 100644 --- a/app/src/main/res/layout/dialog_slider.xml +++ b/app/src/main/res/layout/dialog_slider.xml @@ -11,7 +11,7 @@ android:layout_marginTop="10dp" android:stepSize="0.25" android:value="1" - android:valueFrom="0.25" + android:valueFrom="0" android:valueTo="5" /> \ No newline at end of file