[Android] Add a "new equalizer" button in the equalizer dialog
Nicolas Pomepuy
git at videolan.org
Fri Jul 25 11:46:43 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Jun 19 15:12:29 2025 +0200| [8cb65a585f43869c9917fed97aa57f2129f95884] | committer: Nicolas Pomepuy
Add a "new equalizer" button in the equalizer dialog
> https://code.videolan.org/videolan/vlc-android/commit/8cb65a585f43869c9917fed97aa57f2129f95884
---
.../resources/src/main/res/values/strings.xml | 2 ++
.../vlc-android/res/layout/dialog_equalizer.xml | 19 ++++++++++++++++-
.../vlc/gui/dialogs/EqualizerFragmentDialog.kt | 4 ++++
.../videolan/vlc/viewmodels/EqualizerViewModel.kt | 24 +++++++++++++++++++---
4 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/application/resources/src/main/res/values/strings.xml b/application/resources/src/main/res/values/strings.xml
index ddfcb50adb..410dec9f0b 100644
--- a/application/resources/src/main/res/values/strings.xml
+++ b/application/resources/src/main/res/values/strings.xml
@@ -144,6 +144,8 @@
<string name="equalizer">Equalizer</string>
<string name="import_equalizer">Import equalizer</string>
<string name="equalizer_exported">Equalizer exported to %s</string>
+ <string name="equalizer_copy_template">(copy%s)</string>
+ <string name="new_equalizer_copy_template">New equalizer%s</string>
<string name="show_all">Show all</string>
<string name="hide_all">Hide all</string>
<string name="all_albums">All albums</string>
diff --git a/application/vlc-android/res/layout/dialog_equalizer.xml b/application/vlc-android/res/layout/dialog_equalizer.xml
index af7375a5d7..bc1ff22354 100644
--- a/application/vlc-android/res/layout/dialog_equalizer.xml
+++ b/application/vlc-android/res/layout/dialog_equalizer.xml
@@ -64,7 +64,7 @@
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="@string/equalizer"
- app:layout_constraintEnd_toStartOf="@+id/equalizer_settings"
+ app:layout_constraintEnd_toStartOf="@+id/equalizer_add"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -99,6 +99,23 @@
app:srcCompat="@drawable/ic_settings"
app:tint="?attr/colorControlNormal" />
+ <androidx.appcompat.widget.AppCompatImageView
+ android:id="@+id/equalizer_add"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="8dp"
+ android:background="?attr/actionBarItemBackground"
+ android:clickable="true"
+ android:contentDescription="@string/preferences"
+ android:focusable="true"
+ android:padding="12dp"
+ app:layout_constraintBottom_toBottomOf="@+id/eq_title"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/equalizer_settings"
+ app:layout_constraintTop_toTopOf="@+id/eq_title"
+ app:srcCompat="@drawable/ic_add"
+ app:tint="?attr/colorControlNormal" />
+
<HorizontalScrollView
android:id="@+id/equalizer_presets_container"
android:layout_width="0dp"
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 ce85a94480..2a328cf314 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
@@ -165,6 +165,10 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
startActivity(Intent(requireActivity(), EqualizerSettingsActivity::class.java))
}
+ binding.equalizerAdd.setOnClickListener {
+ viewModel.createCustomEqualizer(requireActivity(), true)
+ }
+
binding.undo.setOnClickListener {
viewModel.undoFromHistory(requireActivity())
updateBars()
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 41f3ca66d8..edc07ca37b 100644
--- a/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
+++ b/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
@@ -47,6 +47,7 @@ import org.videolan.vlc.gui.dialogs.EqualizerFragmentDialog
import org.videolan.vlc.gui.helpers.UiTools
import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate.Companion.getWritePermission
import org.videolan.vlc.mediadb.models.EqualizerBand
+import org.videolan.vlc.mediadb.models.EqualizerEntry
import org.videolan.vlc.mediadb.models.EqualizerWithBands
import org.videolan.vlc.repository.EqualizerRepository
import org.videolan.vlc.util.JsonUtil
@@ -143,9 +144,26 @@ class EqualizerViewModel(context: Context, private val equalizerRepository: Equa
equalizerRepository.addOrUpdateEqualizerWithBands(context, getCurrentEqualizer().copy(bands = bands.sortedBy { it.index }))
}
- fun createCustomEqualizer(context: Context) = viewModelScope.launch(Dispatchers.IO) {
- val currentEqualizer = getCurrentEqualizer()
- val newEq = currentEqualizer.copy(equalizerEntry = currentEqualizer.equalizerEntry.copy(presetIndex = -1, name = currentEqualizer.equalizerEntry.name + " (copy)").apply { id = 0 })
+ fun createCustomEqualizer(context: Context, fromScratch: Boolean = false) = viewModelScope.launch(Dispatchers.IO) {
+ val currentEqualizer = if (fromScratch)
+ EqualizerWithBands(EqualizerEntry("", 0F, -1, false), buildList { for (i in 0 until bandCount) add(EqualizerBand(i, 0F)) })
+ else
+ getCurrentEqualizer()
+
+ var newNameTemplate = if (fromScratch)
+ context.getString(R.string.new_equalizer_copy_template, "")
+ else
+ currentEqualizer.equalizerEntry.name + " " + context.getString(R.string.equalizer_copy_template, "")
+
+ var i = 0
+ while (!isNameAllowed(newNameTemplate)) {
+ ++i
+ newNameTemplate = if (fromScratch)
+ context.getString(R.string.new_equalizer_copy_template, " $i")
+ else
+ currentEqualizer.equalizerEntry.name + " " + context.getString(R.string.equalizer_copy_template, " $i")
+ }
+ val newEq = currentEqualizer.copy(equalizerEntry = currentEqualizer.equalizerEntry.copy(presetIndex = -1, name = newNameTemplate).apply { id = 0 })
currentEqualizerId = equalizerRepository.addOrUpdateEqualizerWithBands(context, newEq)
}
More information about the Android
mailing list