Browse Source

Allow disabling a VLC equalizer preset

merge-requests/2298/head
Nicolas Pomepuy 1 year ago
parent
commit
d40d5f5288
  1. 4
      application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt
  2. 1
      application/resources/src/main/res/values/strings.xml
  3. 6
      application/vlc-android/res/layout/dialog_equalizer.xml
  4. 9
      application/vlc-android/src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt
  5. 2
      application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt
  6. 12
      application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt

4
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

1
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>

6
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"

9
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

2
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))

12
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
}

Loading…
Cancel
Save