[Android] New equalizer: manage the enabled state of the views
Nicolas Pomepuy
git at videolan.org
Fri Jul 25 11:46:42 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Jun 5 14:15:30 2025 +0200| [9e9d61b529463eacb739c7e43bc5bc647aafab5e] | committer: Nicolas Pomepuy
New equalizer: manage the enabled state of the views
> https://code.videolan.org/videolan/vlc-android/commit/9e9d61b529463eacb739c7e43bc5bc647aafab5e
---
.../vlc/gui/dialogs/EqualizerFragmentDialog.kt | 25 ++++++++++++++++++++++
.../src/org/videolan/vlc/gui/view/EqualizerBar.kt | 5 +++++
2 files changed, 30 insertions(+)
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt
index cc755aabff..8132ed07fc 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt
@@ -29,6 +29,7 @@ import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams
import android.widget.LinearLayout
+import androidx.core.view.children
import androidx.databinding.ObservableBoolean
import androidx.databinding.ObservableField
import androidx.databinding.ObservableInt
@@ -140,6 +141,13 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment() {
val pos = allSets.indexOf(VLCOptions.getEqualizerNameFromSettings(requireActivity()))
+ // on/off
+ binding.equalizerButton.isChecked = VLCOptions.getEqualizerEnabledState(requireActivity())
+ binding.equalizerButton.setOnCheckedChangeListener { _, isChecked ->
+ PlaybackService.equalizer.setValue(if (isChecked) equalizer else null)
+ updateEnabledState()
+ }
+
var selectedChip: Chip? = null
binding.equalizerPresets.removeAllViews()
allSets.forEachIndexed { index, item ->
@@ -161,9 +169,12 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment() {
}
fillBands()
+ updateEnabledState()
}
+ private fun getCurrentPosition(): Int = allSets.indexOf(binding.state?.name?.get())
+
/**
* Fill the equalizer bands
*
@@ -195,6 +206,19 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment() {
eqBandsViews[eqBandsViews.size - 1].nextFocusRightId = R.id.snapBands
}
+ fun updateEnabledState() {
+ val isChecked = binding.equalizerButton.isChecked
+ binding.equalizerPresets.children.forEach {
+ it.isEnabled = isChecked
+ }
+ val eqCardEnabled = isChecked && getEqualizerType(getCurrentPosition()) == TYPE_CUSTOM
+ binding.equalizerPreamp.isEnabled = eqCardEnabled
+ binding.equalizerBands.children.forEach {
+ it.isEnabled = eqCardEnabled
+ }
+ binding.snapBands.isEnabled = eqCardEnabled
+ }
+
/**
* Select preset by name and update the equalizer
*
@@ -208,6 +232,7 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment() {
state.type.set(getEqualizerType(pos))
val selectedChip = binding.equalizerPresets.findViewWithTag<Chip>(preset)
binding.equalizerPresets.check(selectedChip.id)
+ updateEnabledState()
}
/**
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/view/EqualizerBar.kt b/application/vlc-android/src/org/videolan/vlc/gui/view/EqualizerBar.kt
index 94e85b11c0..e432c1ec8f 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/view/EqualizerBar.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/view/EqualizerBar.kt
@@ -120,6 +120,11 @@ class EqualizerBar : LinearLayout {
verticalSlider.id = id
}
+ override fun setEnabled(enabled: Boolean) {
+ super.setEnabled(enabled)
+ verticalSlider.isEnabled = enabled
+ }
+
fun getSliderId() = verticalSlider.id
companion object {
More information about the Android
mailing list