Browse Source

Remove the right item when filtering

merge-requests/1594/merge
Nicolas Pomepuy 1 year ago
committed by Duncan McNamara
parent
commit
84181514bc
  1. 22
      application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt
  2. 14
      application/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt

22
application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt

@ -203,18 +203,20 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<MediaWrappe
}
override fun onItemDismiss(position: Int) {
val media = getItem(position)
val message = String.format(AppContextProvider.appResources.getString(R.string.remove_playlist_item), media.title)
if (player is Fragment) {
UiTools.snackerWithCancel(player.requireActivity(), message, overAudioPlayer = true, action = {}) {
model?.run { insertMedia(position, media) }
}
} else if (player is Activity) {
UiTools.snackerWithCancel(player, message, action = {}) {
model?.run { insertMedia(position, media) }
model?.let {
val media = getItem(position)
val message = String.format(AppContextProvider.appResources.getString(R.string.remove_playlist_item), media.title)
if (player is Fragment) {
UiTools.snackerWithCancel(player.requireActivity(), message, overAudioPlayer = true, action = {}) {
model?.run { insertMedia(it.getOriginalPosition(position), media) }
}
} else if (player is Activity) {
UiTools.snackerWithCancel(player, message, action = {}) {
model?.run { insertMedia(it.getOriginalPosition(position), media) }
}
}
remove(position)
}
remove(position)
}
fun setModel(model: PlaylistModel) {

14
application/vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt

@ -51,7 +51,7 @@ class PlaylistModel : ViewModel(), PlaybackService.Callback by EmptyPBSCallback
private var originalDataset : MutableList<MediaWrapper>? = null
val selection : Int
get() = if (filtering) -1 else service?.playlistManager?.currentIndex ?: -1
private var filtering = false
var filtering = false
set(value) {
field = value
filteringState.value = value
@ -95,7 +95,17 @@ class PlaylistModel : ViewModel(), PlaybackService.Callback by EmptyPBSCallback
fun insertMedia(position: Int, media: MediaWrapper) = service?.insertItem(position, media)
fun remove(position: Int) = service?.remove(position)
/**
* Get original position even if current list is filtered
*
* @param position the current position in the filtered list or not
* @return the original position (in the unfiltered list)
*/
fun getOriginalPosition(position: Int) = if (filtering && originalDataset != null) {
originalDataset!!.indexOf(dataset.get(position))
} else position
fun remove(position: Int) = service?.remove(getOriginalPosition(position))
fun move(from: Int, to: Int) = service?.moveItem(from, to)

Loading…
Cancel
Save