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 c71790f8a..dfdb46cc9 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> + @Transaction + @Query("SELECT * FROM equalizer_entry WHERE is_disabled = 0 ORDER BY preset_index ASC") + fun getEnabledEqualizerEntries(): Flow> + @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 d4b5df52c..71a719864 100644 --- a/application/resources/src/main/res/values/strings.xml +++ b/application/resources/src/main/res/values/strings.xml @@ -68,6 +68,7 @@ Information Delete the file \'%1$s\'? Are you sure you want to delete this preset? + Are you sure you want to hide this preset?\nYou can restore it in the equalizer settings. Are you sure you want to replace the playlist \'%1$s\'? Invalid settings file This is permanent and cannot be undone. diff --git a/application/vlc-android/res/layout/dialog_equalizer.xml b/application/vlc-android/res/layout/dialog_equalizer.xml index bd98d737d..63d026d54 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 7e30dacb6..6044c2fd7 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 cc3b6ed9a..e26842f37 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 314c75b4b..b2d331a27 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 }