mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-13 22:00:30 +05:30
Dragging and dropping items
This commit is contained in:
parent
e7ef030473
commit
1962268460
@ -0,0 +1,7 @@
|
||||
package com.github.libretube.extensions
|
||||
|
||||
fun <T> MutableList<T>.move(oldPosition: Int, newPosition: Int) {
|
||||
val item = this.get(oldPosition)
|
||||
this.removeAt(oldPosition)
|
||||
this.add(newPosition, item)
|
||||
}
|
@ -8,8 +8,9 @@ import com.github.libretube.databinding.QueueRowBinding
|
||||
import com.github.libretube.ui.viewholders.PlayingQueueViewHolder
|
||||
import com.github.libretube.util.ImageHelper
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
import com.github.libretube.util.ThemeHelper
|
||||
|
||||
class PlayingQueueAdapter() : RecyclerView.Adapter<PlayingQueueViewHolder>() {
|
||||
class PlayingQueueAdapter : RecyclerView.Adapter<PlayingQueueViewHolder>() {
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PlayingQueueViewHolder {
|
||||
val binding = QueueRowBinding.inflate(
|
||||
LayoutInflater.from(parent.context),
|
||||
@ -32,6 +33,11 @@ class PlayingQueueAdapter() : RecyclerView.Adapter<PlayingQueueViewHolder>() {
|
||||
duration.text = streamItem.duration?.let {
|
||||
DateUtils.formatElapsedTime(it)
|
||||
}
|
||||
if (PlayingQueue.currentIndex() == position) {
|
||||
root.setBackgroundColor(
|
||||
ThemeHelper.getThemeColor(root.context, android.R.attr.colorControlHighlight)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -35,12 +35,25 @@ class PlayingQueueSheet : BottomSheetDialogFragment() {
|
||||
0,
|
||||
ItemTouchHelper.LEFT
|
||||
) {
|
||||
override fun getMovementFlags(
|
||||
recyclerView: RecyclerView,
|
||||
viewHolder: RecyclerView.ViewHolder
|
||||
): Int {
|
||||
val dragFlags = ItemTouchHelper.UP or ItemTouchHelper.DOWN
|
||||
return makeMovementFlags(dragFlags, 0)
|
||||
}
|
||||
|
||||
override fun onMove(
|
||||
recyclerView: RecyclerView,
|
||||
viewHolder: RecyclerView.ViewHolder,
|
||||
target: RecyclerView.ViewHolder
|
||||
): Boolean {
|
||||
TODO("Not yet implemented")
|
||||
val from = viewHolder.absoluteAdapterPosition
|
||||
val to = target.absoluteAdapterPosition
|
||||
|
||||
adapter.notifyItemMoved(from, to)
|
||||
PlayingQueue.move(from, to)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||
|
@ -2,6 +2,7 @@ package com.github.libretube.util
|
||||
|
||||
import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.api.obj.StreamItem
|
||||
import com.github.libretube.extensions.move
|
||||
import com.github.libretube.extensions.toID
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@ -67,6 +68,8 @@ object PlayingQueue {
|
||||
|
||||
fun remove(index: Int) = queue.removeAt(index)
|
||||
|
||||
fun move(from: Int, to: Int) = queue.move(from, to)
|
||||
|
||||
private fun fetchMoreFromPlaylist(playlistId: String, nextPage: String?) {
|
||||
var playlistNextPage: String? = nextPage
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
|
Loading…
Reference in New Issue
Block a user