[Android] New equalizer: get rid of the useless state binding variable

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 12 09:29:02 2025 +0200| [229028c6ba4f3d35b1addf037c0f33c7e27d5b32] | committer: Nicolas Pomepuy

New equalizer: get rid of the useless state binding variable

> https://code.videolan.org/videolan/vlc-android/commit/229028c6ba4f3d35b1addf037c0f33c7e27d5b32
---

 .../vlc-android/res/layout/dialog_equalizer.xml    | 22 ++++++++-----
 .../vlc/gui/AudioPlayerContainerActivity.kt        |  4 +--
 .../vlc/gui/dialogs/EqualizerFragmentDialog.kt     | 38 ++--------------------
 3 files changed, 17 insertions(+), 47 deletions(-)

diff --git a/application/vlc-android/res/layout/dialog_equalizer.xml b/application/vlc-android/res/layout/dialog_equalizer.xml
index 92855498aa..b6932a49a7 100644
--- a/application/vlc-android/res/layout/dialog_equalizer.xml
+++ b/application/vlc-android/res/layout/dialog_equalizer.xml
@@ -31,10 +31,14 @@
 
         <import type="android.view.View" />
 
+        <variable
+                name="name"
+                type="String" />
 
         <variable
-                name="state"
-                type="org.videolan.vlc.gui.dialogs.EqualizerFragmentDialog.EqualizerState" />
+                name="custom"
+                type="Boolean" />
+
     </data>
 
     <androidx.core.widget.NestedScrollView
@@ -139,7 +143,7 @@
                                 android:contentDescription="@string/edit_eq_preset"
                                 android:focusable="true"
                                 android:padding="12dp"
-                                android:visibility="@{state.type == 0 ? View.VISIBLE : View.GONE}"
+                                android:visibility="@{custom ? View.GONE : View.VISIBLE}"
                                 app:layout_constraintBottom_toBottomOf="@+id/top_bar"
                                 app:layout_constraintEnd_toEndOf="parent"
                                 app:layout_constraintHorizontal_bias="0.5"
@@ -158,7 +162,7 @@
                                 android:contentDescription="@string/reset"
                                 android:focusable="true"
                                 android:padding="12dp"
-                                android:visibility="@{state.type != 0 ? View.VISIBLE : View.GONE}"
+                                android:visibility="@{custom ? View.VISIBLE : View.GONE}"
                                 app:layout_constraintBottom_toBottomOf="@+id/top_bar"
                                 app:layout_constraintEnd_toEndOf="parent"
                                 app:layout_constraintHorizontal_bias="0.5"
@@ -177,7 +181,7 @@
                                 android:contentDescription="@string/save"
                                 android:focusable="true"
                                 android:padding="12dp"
-                                android:visibility="@{state.type != 0 ? View.VISIBLE : View.GONE}"
+                                android:visibility="@{custom ? View.VISIBLE : View.GONE}"
                                 app:layout_constraintBottom_toBottomOf="@+id/top_bar"
                                 app:layout_constraintEnd_toEndOf="parent"
                                 app:layout_constraintHorizontal_bias="0.5"
@@ -194,10 +198,10 @@
                             android:layout_height="wrap_content"
                             android:layout_marginStart="8dp"
                             android:layout_marginEnd="8dp"
-                            android:text="@{state.name}"
+                            android:text="@{name}"
                             android:textColor="?attr/font_default"
                             android:textSize="16sp"
-                            android:visibility="@{state.type == 0 ? View.VISIBLE : View.GONE}"
+                            android:visibility="@{custom ? View.GONE : View.VISIBLE}"
                             app:layout_constraintBottom_toBottomOf="@+id/linearLayout8"
                             app:layout_constraintEnd_toStartOf="@+id/linearLayout8"
                             app:layout_constraintStart_toStartOf="parent"
@@ -213,8 +217,8 @@
                             android:ems="10"
                             android:inputType="text"
                             android:maxLines="1"
-                            android:text="@{state.name}"
-                            android:visibility="@{state.type != 0 ? View.VISIBLE : View.GONE}"
+                            android:text="@{name}"
+                            android:visibility="@{custom ? View.VISIBLE : View.GONE}"
                             app:layout_constraintBottom_toBottomOf="@+id/linearLayout8"
                             app:layout_constraintEnd_toStartOf="@+id/linearLayout8"
                             app:layout_constraintStart_toStartOf="parent"
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt
index b807d77df5..c72137ab8d 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt
@@ -88,7 +88,7 @@ import org.videolan.vlc.VlcMigrationHelper
 import org.videolan.vlc.gui.audio.AudioPlayer
 import org.videolan.vlc.gui.audio.AudioPlaylistTipsDelegate
 import org.videolan.vlc.gui.audio.AudioTipsDelegate
-import org.videolan.vlc.gui.audio.EqualizerFragment
+import org.videolan.vlc.gui.dialogs.EqualizerFragmentDialog
 import org.videolan.vlc.gui.helpers.BottomNavigationBehavior
 import org.videolan.vlc.gui.helpers.KeycodeListener
 import org.videolan.vlc.gui.helpers.PlayerBehavior
@@ -451,7 +451,7 @@ open class AudioPlayerContainerActivity : BaseActivity(), KeycodeListener, Sched
     }
 
     override fun showEqualizer() {
-        EqualizerFragment().show(supportFragmentManager, "equalizer")
+        EqualizerFragmentDialog().show(supportFragmentManager, "equalizer")
     }
 
     override fun increaseRate() {
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 04c02dab89..aeb1e37715 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
@@ -32,9 +32,6 @@ import android.view.ViewGroup.LayoutParams
 import android.widget.LinearLayout
 import androidx.core.content.edit
 import androidx.core.view.children
-import androidx.databinding.ObservableBoolean
-import androidx.databinding.ObservableField
-import androidx.databinding.ObservableInt
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.lifecycleScope
 import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED
@@ -73,7 +70,6 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
     }
 
     private lateinit var binding: DialogEqualizerBinding
-    private val state = EqualizerState()
 
     private val eqBandsViews = ArrayList<EqualizerBar>()
     var oldEqualiserSets = listOf<String>()
@@ -92,7 +88,6 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
         savedInstanceState: Bundle?
     ): View? {
         binding = DialogEqualizerBinding.inflate(layoutInflater, container, false)
-        binding.state = state
         return binding.root
     }
 
@@ -236,7 +231,8 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
      */
     fun selectPreset() {
         updateEqualizer()
-        state.name.set(viewModel.getCurrentEqualizer().equalizerEntry.name)
+        binding.name = viewModel.getCurrentEqualizer().equalizerEntry.name
+        binding.custom = getEqualizerType() == TYPE_CUSTOM
         val selectedChip = binding.equalizerPresets.findViewWithTag<Chip>(viewModel.getCurrentEqualizer().equalizerEntry.id)
         binding.equalizerPresets.check(selectedChip.id)
         updateEnabledState()
@@ -299,30 +295,6 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
         }
     }
 
-    /**
-     * Equalizer state
-     *
-     * @constructor Create empty Equalizer state
-     */
-    inner class EqualizerState {
-
-        internal var saved = true
-        var saveButtonVisibility = ObservableBoolean(false)
-        var revertButtonVisibility = ObservableBoolean(false)
-        var deleteButtonVisibility = ObservableBoolean(false)
-        var name = ObservableField<String>()
-        var type = ObservableInt(TYPE_PRESET)
-
-        fun update(newSaved: Boolean) {
-            saved = newSaved
-            name.set(viewModel.getCurrentEqualizer().equalizerEntry.name)
-            type.set(getEqualizerType())
-            saveButtonVisibility.set(!newSaved)
-            revertButtonVisibility.set(!newSaved)
-            deleteButtonVisibility.set(newSaved && getEqualizerType() == TYPE_CUSTOM)
-        }
-    }
-
     /**
      * Band listener
      *
@@ -346,12 +318,6 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
             if (!binding.equalizerButton.isChecked)
                 binding.equalizerButton.isChecked = true
 
-            if (getEqualizerType() == TYPE_PRESET) {
-                state.update(false)
-            } else if (getEqualizerType() == TYPE_CUSTOM) {
-                state.update(false)
-            }
-
             /**
              * Snap bands
              */



More information about the Android mailing list