[Android] Fix new equalizer history undo
Nicolas Pomepuy
git at videolan.org
Fri Jul 25 11:46:43 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Mon Jun 16 09:34:53 2025 +0200| [d81a07fa02ed32dd29a7c06263393e1fa13afe09] | committer: Nicolas Pomepuy
Fix new equalizer history undo
> https://code.videolan.org/videolan/vlc-android/commit/d81a07fa02ed32dd29a7c06263393e1fa13afe09
---
.../src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt | 5 ++++-
.../src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt | 9 ++++++++-
2 files changed, 12 insertions(+), 2 deletions(-)
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 04d916724b..fbafb95311 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
@@ -95,6 +95,7 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.equalizerEntries.observe(this) {
+ if (BuildConfig.DEBUG) Log.d(TAG, "Received new equalizer entries")
val newEqualizerSets = it.map { it.equalizerEntry.name }
if (oldEqualiserSets != newEqualizerSets) fillPresets()
@@ -102,8 +103,9 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
fillPreamp()
}
- if (oldCurrentEqualizer == null || oldCurrentEqualizer?.equalizerEntry?.id != viewModel.getCurrentEqualizer().equalizerEntry.id) {
+ if (viewModel.needForceRefresh || oldCurrentEqualizer == null || oldCurrentEqualizer?.equalizerEntry?.id != viewModel.getCurrentEqualizer().equalizerEntry.id) {
fillBands()
+ viewModel.needForceRefresh = false
}
if (oldCurrentEqualizer == null) fillViews()
oldEqualiserSets = newEqualizerSets
@@ -185,6 +187,7 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
*
*/
fun fillBands() {
+ if (BuildConfig.DEBUG) Log.d(TAG, "fillBands")
eqBandsViews.clear()
binding.equalizerBands.removeAllViews()
// bands
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 556b188853..588d1dd071 100644
--- a/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
+++ b/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
@@ -25,6 +25,7 @@
package org.videolan.vlc.viewmodels
import android.content.Context
+import android.util.Log
import androidx.core.content.edit
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
@@ -36,7 +37,9 @@ import org.videolan.libvlc.MediaPlayer
import org.videolan.tools.KEY_CURRENT_EQUALIZER_ID
import org.videolan.tools.KEY_EQUALIZER_ENABLED
import org.videolan.tools.Settings
+import org.videolan.vlc.BuildConfig
import org.videolan.vlc.PlaybackService
+import org.videolan.vlc.gui.dialogs.EqualizerFragmentDialog
import org.videolan.vlc.mediadb.models.EqualizerBand
import org.videolan.vlc.mediadb.models.EqualizerWithBands
import org.videolan.vlc.repository.EqualizerRepository
@@ -50,6 +53,7 @@ class EqualizerViewModel(context: Context, private val equalizerRepository: Equa
var bandCount = -1
var lastSaveToHistoryFrom = -2
val settings = Settings.getInstance(context)
+ var needForceRefresh = false
val equalizerEntries = equalizerRepository.equalizerEntries.asLiveData()
var currentEqualizerId = 1L
@@ -74,6 +78,7 @@ class EqualizerViewModel(context: Context, private val equalizerRepository: Equa
*
*/
fun saveInHistory(from: Int) {
+ if (BuildConfig.DEBUG) Log.d(EqualizerFragmentDialog.TAG, "saveInHistory: from $from, saving: ${from != lastSaveToHistoryFrom}, history size: ${history.size}")
if (from != lastSaveToHistoryFrom)
history.add(getCurrentEqualizer().copy())
lastSaveToHistoryFrom = from
@@ -85,8 +90,10 @@ class EqualizerViewModel(context: Context, private val equalizerRepository: Equa
* @return the last equalizer from history
*/
fun undoFromHistory(context: Context) = viewModelScope.launch(Dispatchers.IO) {
+ if (BuildConfig.DEBUG) Log.d(EqualizerFragmentDialog.TAG, "undoFromHistory: history size: ${history.size}")
lastSaveToHistoryFrom = -2
if (history.isEmpty()) return at launch
+ needForceRefresh = true
equalizerRepository.addOrUpdateEqualizerWithBands(context, history.removeAt(history.lastIndex))
}
@@ -103,7 +110,7 @@ class EqualizerViewModel(context: Context, private val equalizerRepository: Equa
}
fun updateEqualizerBands(context: Context, bands: List<EqualizerBand>) = viewModelScope.launch(Dispatchers.IO) {
- equalizerRepository.addOrUpdateEqualizerWithBands(context, getCurrentEqualizer().copy(bands = bands))
+ equalizerRepository.addOrUpdateEqualizerWithBands(context, getCurrentEqualizer().copy(bands = bands.sortedBy { it.index }))
}
fun createCustomEqualizer(context: Context) = viewModelScope.launch(Dispatchers.IO) {
More information about the Android
mailing list