[Android] Allow disabling a VLC equalizer preset

Nicolas Pomepuy git at videolan.org
Fri Jul 25 11:46:43 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue Jun 17 11:19:47 2025 +0200| [d40d5f52883589ed005962015c7e6b5a4b4e3a65] | committer: Nicolas Pomepuy

Allow disabling a VLC equalizer preset

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

 .../src/main/java/org/videolan/vlc/database/EqualizerDao.kt  |  4 ++++
 application/resources/src/main/res/values/strings.xml        |  1 +
 application/vlc-android/res/layout/dialog_equalizer.xml      |  6 +-----
 .../org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt  |  9 +++++++--
 .../src/org/videolan/vlc/repository/EqualizerRepository.kt   |  2 +-
 .../src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt    | 12 +++++++++---
 6 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt b/application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt
index c71790f8a8..dfdb46cc9e 100644
--- a/application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt
+++ b/application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt
@@ -52,6 +52,10 @@ interface EqualizerDao {
     @Query("SELECT * FROM equalizer_entry ORDER BY preset_index ASC")
     fun getAllEqualizerEntries(): Flow<List<EqualizerWithBands>>
 
+    @Transaction
+    @Query("SELECT * FROM equalizer_entry WHERE is_disabled = 0 ORDER BY preset_index ASC")
+    fun getEnabledEqualizerEntries(): Flow<List<EqualizerWithBands>>
+
     @Query("SELECT * FROM equalizer_entry WHERE id = :id")
     fun getCurrentEqualizer(id: Long): EqualizerWithBands
 
diff --git a/application/resources/src/main/res/values/strings.xml b/application/resources/src/main/res/values/strings.xml
index d4b5df52ca..71a719864a 100644
--- a/application/resources/src/main/res/values/strings.xml
+++ b/application/resources/src/main/res/values/strings.xml
@@ -68,6 +68,7 @@
     <string name="info">Information</string>
     <string name="confirm_delete">Delete the file \'%1$s\'?</string>
     <string name="confirm_delete_eq">Are you sure you want to delete this preset?</string>
+    <string name="confirm_delete_vlc_eq">Are you sure you want to hide this preset?\nYou can restore it in the equalizer settings.</string>
     <string name="confirm_replace_playlist">Are you sure you want to replace the playlist \'%1$s\'?</string>
     <string name="invalid_settings_file">Invalid settings file</string>
     <string name="confirm_delete_message">This is permanent and cannot be undone.</string>
diff --git a/application/vlc-android/res/layout/dialog_equalizer.xml b/application/vlc-android/res/layout/dialog_equalizer.xml
index bd98d737d1..63d026d544 100644
--- a/application/vlc-android/res/layout/dialog_equalizer.xml
+++ b/application/vlc-android/res/layout/dialog_equalizer.xml
@@ -132,8 +132,7 @@
                             android:id="@+id/warning_text"
                             android:layout_width="0dp"
                             android:layout_height="wrap_content"
-                            android:layout_marginStart="8dp"
-                            android:layout_marginEnd="8dp"
+                            android:layout_margin="8dp"
                             android:layout_weight="1"
                             android:fontFamily="sans-serif-medium"
                             android:text="@string/confirm_delete_eq" />
@@ -148,7 +147,6 @@
                             android:contentDescription="@string/save"
                             android:focusable="true"
                             android:padding="12dp"
-                            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"
@@ -167,7 +165,6 @@
                             android:contentDescription="@string/save"
                             android:focusable="true"
                             android:padding="12dp"
-                            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"
@@ -258,7 +255,6 @@
                                 android:contentDescription="@string/save"
                                 android:focusable="true"
                                 android:padding="12dp"
-                                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"
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 7e30dacb66..6044c2fd7d 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
@@ -157,6 +157,11 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
         binding.delete.setOnClickListener {
             binding.warningContainer.setVisible()
             viewModel.presetToDelete = viewModel.getCurrentEqualizer()
+            if (getEqualizerType() == TYPE_CUSTOM) {
+                binding.warningText.text = getString(R.string.confirm_delete_eq)
+            } else {
+                binding.warningText.text = getString(R.string.confirm_delete_vlc_eq)
+            }
         }
 
         binding.warningCancel.setOnClickListener {
@@ -165,7 +170,7 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
         }
         binding.warningConfirm.setOnClickListener {
             binding.warningContainer.setGone()
-            viewModel.deleteEqualizer()
+            viewModel.deleteEqualizer(requireActivity())
         }
 
         binding.edit.setOnClickListener {
@@ -288,7 +293,7 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
         binding.equalizerBands.children.forEach {
             it.isEnabled = eqCardEnabled
         }
-        binding.delete.isEnabled = eqCardEnabled
+        binding.delete.isEnabled = isChecked
         binding.edit.isEnabled = isChecked
         binding.undo.isEnabled = eqCardEnabled && viewModel.history.isNotEmpty()
         binding.presetTitleEdit.isEnabled = eqCardEnabled
diff --git a/application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt b/application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt
index cc3b6ed9a4..e26842f372 100644
--- a/application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt
+++ b/application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt
@@ -38,7 +38,7 @@ class EqualizerRepository(private val equalizerDao: EqualizerDao, private val co
 
 
     val equalizerEntries by lazy {
-            equalizerDao.getAllEqualizerEntries()
+            equalizerDao.getEnabledEqualizerEntries()
     }
 
     fun getCurrentEqualizer(context: Context) = equalizerDao.getCurrentEqualizer(Settings.getInstance(context).getLong(KEY_CURRENT_EQUALIZER_ID, 1L))
diff --git a/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt b/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
index 314c75b4bb..b2d331a27e 100644
--- a/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
+++ b/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
@@ -125,11 +125,17 @@ class EqualizerViewModel(context: Context, private val equalizerRepository: Equa
         currentEqualizerId = equalizerRepository.addOrUpdateEqualizerWithBands(context, newEq)
     }
 
-    fun deleteEqualizer() {
+    fun deleteEqualizer(context: Context) {
         presetToDelete?.let {
-            currentEqualizerId = equalizerEntries.value!!.first { it.equalizerEntry.id != currentEqualizerId }.equalizerEntry.id
             viewModelScope.launch(Dispatchers.IO) {
-                equalizerRepository.delete(it.equalizerEntry)
+                if (it.equalizerEntry.presetIndex != -1) {
+                    currentEqualizerId = equalizerEntries.value!!.first { it.equalizerEntry.id != currentEqualizerId }.equalizerEntry.id
+                    val newEq = it.copy(equalizerEntry = it.equalizerEntry.copy(isDisabled = true).apply { id = it.equalizerEntry.id })
+                    equalizerRepository.addOrUpdateEqualizerWithBands(context, newEq)
+                } else {
+                    currentEqualizerId = equalizerEntries.value!!.first { it.equalizerEntry.id != currentEqualizerId }.equalizerEntry.id
+                    equalizerRepository.delete(it.equalizerEntry)
+                }
             }
             presetToDelete = null
         }



More information about the Android mailing list