[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