[Android] Equalizer settings: add option menu with show/hide all
Nicolas Pomepuy
git at videolan.org
Fri Jul 25 11:46:43 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Wed Jun 18 13:43:52 2025 +0200| [5bc2711175d15018e7043f6a6f846f2f7da1475f] | committer: Nicolas Pomepuy
Equalizer settings: add option menu with show/hide all
> https://code.videolan.org/videolan/vlc-android/commit/5bc2711175d15018e7043f6a6f846f2f7da1475f
---
.../resources/src/main/res/drawable/ic_import.xml | 12 +++++
.../src/main/res/drawable/ic_options_equalizer.xml | 11 +++++
.../resources/src/main/res/values/strings.xml | 3 ++
.../res/menu/equalizer_settings_option.xml | 54 ++++++++++++++++++++++
.../videolan/vlc/gui/EqualizerSettingsActivity.kt | 25 +++++++++-
5 files changed, 104 insertions(+), 1 deletion(-)
diff --git a/application/resources/src/main/res/drawable/ic_import.xml b/application/resources/src/main/res/drawable/ic_import.xml
new file mode 100644
index 0000000000..8adb3355cc
--- /dev/null
+++ b/application/resources/src/main/res/drawable/ic_import.xml
@@ -0,0 +1,12 @@
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ tools:fillColor="#ffffff"
+ android:fillColor="?attr/colorControlNormal"
+ android:pathData="m440,474 l-75,75q-12,12 -28.5,11.5T308,548q-11,-12 -11.5,-28t11.5,-28l144,-144q6,-6 13,-8.5t15,-2.5q8,0 15,2.5t13,8.5l144,144q12,12 11.5,28T652,548q-12,12 -28.5,12.5T595,549l-75,-75v286q0,17 -11.5,28.5T480,800q-17,0 -28.5,-11.5T440,760v-286ZM160,320v-80q0,-33 23.5,-56.5T240,160h480q33,0 56.5,23.5T800,240v80q0,17 -11.5,28.5T760,360q-17,0 -28.5,-11.5T720,320v-80L240,240v80q0,17 -11.5,28.5T200,360q-17,0 -28.5,-11.5T160,320Z" />
+</vector>
diff --git a/application/resources/src/main/res/drawable/ic_options_equalizer.xml b/application/resources/src/main/res/drawable/ic_options_equalizer.xml
new file mode 100644
index 0000000000..7923f5365e
--- /dev/null
+++ b/application/resources/src/main/res/drawable/ic_options_equalizer.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ tools:fillColor="#ffffff"
+ android:fillColor="?attr/colorControlNormal"
+ android:pathData="M240,800q-17,0 -28.5,-11.5T200,760v-240h-40q-17,0 -28.5,-11.5T120,480q0,-17 11.5,-28.5T160,440h160q17,0 28.5,11.5T360,480q0,17 -11.5,28.5T320,520h-40v240q0,17 -11.5,28.5T240,800ZM240,360q-17,0 -28.5,-11.5T200,320v-120q0,-17 11.5,-28.5T240,160q17,0 28.5,11.5T280,200v120q0,17 -11.5,28.5T240,360ZM400,360q-17,0 -28.5,-11.5T360,320q0,-17 11.5,-28.5T400,280h40v-80q0,-17 11.5,-28.5T480,160q17,0 28.5,11.5T520,200v80h40q17,0 28.5,11.5T600,320q0,17 -11.5,28.5T560,360L400,360ZM480,800q-17,0 -28.5,-11.5T440,760v-280q0,-17 11.5,-28.5T480,440q17,0 28.5,11.5T520,480v280q0,17 -11.5,28.5T480,800ZM720,800q-17,0 -28.5,-11.5T680,760v-80h-40q-17,0 -28.5,-11.5T600,640q0,-17 11.5,-28.5T640,600h160q17,0 28.5,11.5T840,640q0,17 -11.5,28.5T800,680h-40v80q0,17 -11.5,28.5T720,800ZM720,520q-17,0 -28.5,-11.5T680,480v-280q0,-17 11.5,-28.5T720,160q17,0 28.5,11.5T760,200v280q0,17 -11.5,28.5T720,520Z" />
+</vector>
diff --git a/application/resources/src/main/res/values/strings.xml b/application/resources/src/main/res/values/strings.xml
index c8e08a6afa..3a61c00f83 100644
--- a/application/resources/src/main/res/values/strings.xml
+++ b/application/resources/src/main/res/values/strings.xml
@@ -136,6 +136,9 @@
<string name="video">Video</string>
<string name="bookmarks">Bookmarks</string>
<string name="equalizer">Equalizer</string>
+ <string name="import_equalizer">Import equalizer</string>
+ <string name="show_all">Show all</string>
+ <string name="hide_all">Hide all</string>
<string name="all_albums">All albums</string>
<string name="genres">Genres</string>
<string name="playlists">Playlists</string>
diff --git a/application/vlc-android/res/menu/equalizer_settings_option.xml b/application/vlc-android/res/menu/equalizer_settings_option.xml
new file mode 100644
index 0000000000..01e77f01f4
--- /dev/null
+++ b/application/vlc-android/res/menu/equalizer_settings_option.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ *************************************************************************
+ ~ widget_configure_option.xml
+ ~ **************************************************************************
+ ~ Copyright © 2022 VLC authors and VideoLAN
+ ~ Author: Nicolas POMEPUY
+ ~ This program is free software; you can redistribute it and/or modify
+ ~ it under the terms of the GNU General Public License as published by
+ ~ the Free Software Foundation; either version 2 of the License, or
+ ~ (at your option) any later version.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ along with this program; if not, write to the Free Software
+ ~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ ~ ***************************************************************************
+ ~
+ ~
+ -->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:vlc="http://schemas.android.com/apk/res-auto">
+
+ <item
+ android:orderInCategory="1"
+ android:id="@+id/show_equalizer"
+ android:icon="@drawable/ic_options_equalizer"
+ android:title="@string/equalizer"
+ vlc:showAsAction="ifRoom"/>
+ <item
+ android:orderInCategory="2"
+ android:id="@+id/equalizer_import"
+ android:icon="@drawable/ic_import"
+ android:title="@string/import_equalizer"
+ vlc:showAsAction="ifRoom"/>
+
+ <item
+ android:orderInCategory="2"
+ android:id="@+id/equalizer_show_all"
+ android:title="@string/show_all"
+ vlc:showAsAction="never"/>
+ <item
+ android:orderInCategory="2"
+ android:id="@+id/equalizer_hide_all"
+ android:title="@string/hide_all"
+ vlc:showAsAction="never"/>
+
+
+</menu>
\ No newline at end of file
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/EqualizerSettingsActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/EqualizerSettingsActivity.kt
index f5527d4d1e..ca76a16bd5 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/EqualizerSettingsActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/EqualizerSettingsActivity.kt
@@ -11,6 +11,7 @@ import android.os.Bundle
import android.util.Log
import android.util.TypedValue
import android.view.LayoutInflater
+import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
@@ -38,6 +39,7 @@ import org.videolan.vlc.BuildConfig
import org.videolan.vlc.R
import org.videolan.vlc.databinding.EqualizerSettingItemBinding
import org.videolan.vlc.databinding.EqualizerSettingsActivityBinding
+import org.videolan.vlc.gui.dialogs.EqualizerFragmentDialog
import org.videolan.vlc.gui.helpers.SelectorViewHolder
import org.videolan.vlc.gui.helpers.UiTools
import org.videolan.vlc.mediadb.models.EqualizerWithBands
@@ -94,9 +96,17 @@ class EqualizerSettingsActivity : BaseActivity() {
}
+ override fun onCreateOptionsMenu(menu: Menu?): Boolean {
+ menuInflater.inflate(R.menu.equalizer_settings_option, menu)
+ return true
+ }
+
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> finish()
+ R.id.show_equalizer -> EqualizerFragmentDialog().show(supportFragmentManager, "equalizer")
+ R.id.equalizer_show_all -> model.showAll(this)
+ R.id.equalizer_hide_all -> model.hideAll(this)
}
return super.onOptionsItemSelected(item)
}
@@ -105,6 +115,7 @@ class EqualizerSettingsActivity : BaseActivity() {
class EqualizerSettingsModel(private val equalizerRepository: EqualizerRepository) : ViewModel() {
private var oldEqualizer: EqualizerWithBands? = null
+ val equalizerEntries = equalizerRepository.equalizerEntriesUnfiltered.asLiveData()
fun enable(context: Context, equalizer: EqualizerWithBands) = viewModelScope.launch(Dispatchers.IO) {
equalizerRepository.addOrUpdateEqualizerWithBands(context, equalizer.copy(equalizerEntry = equalizer.equalizerEntry.copy(isDisabled = false).apply { id = equalizer.equalizerEntry.id }))
@@ -127,7 +138,19 @@ class EqualizerSettingsModel(private val equalizerRepository: EqualizerRepositor
//todo add export
}
- val equalizerEntries = equalizerRepository.equalizerEntriesUnfiltered.asLiveData()
+ fun showAll(context: Context) = viewModelScope.launch(Dispatchers.IO) {
+ equalizerEntries.value?.forEach {
+ if (it.equalizerEntry.presetIndex != -1 && it.equalizerEntry.isDisabled)
+ equalizerRepository.addOrUpdateEqualizerWithBands(context, it.copy(equalizerEntry = it.equalizerEntry.copy(isDisabled = false).apply { id = it.equalizerEntry.id }))
+ }
+ }
+
+ fun hideAll(context: Context) = viewModelScope.launch(Dispatchers.IO) {
+ equalizerEntries.value?.forEach {
+ if (it.equalizerEntry.presetIndex != -1 && !it.equalizerEntry.isDisabled)
+ equalizerRepository.addOrUpdateEqualizerWithBands(context, it.copy(equalizerEntry = it.equalizerEntry.copy(isDisabled = true).apply { id = it.equalizerEntry.id }))
+ }
+ }
}
class EqualizerSettingsModelFactory(private val context: Context, private val repository: EqualizerRepository) : ViewModelProvider.Factory {
More information about the Android
mailing list