[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