From 38d286bb94bd1808b1cd53e00abbc8aa03f37b16 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 28 Oct 2022 23:04:44 +0200 Subject: [PATCH] fix shuffle and clear --- .../libretube/ui/sheets/PlayingQueueSheet.kt | 26 ++++++++++++++----- .../com/github/libretube/util/PlayingQueue.kt | 5 ++++ .../main/res/layout/queue_bottom_sheet.xml | 4 +++ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/sheets/PlayingQueueSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/PlayingQueueSheet.kt index fef5f877f..13d4fc695 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/PlayingQueueSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/PlayingQueueSheet.kt @@ -1,5 +1,6 @@ package com.github.libretube.ui.sheets +import android.annotation.SuppressLint import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -24,6 +25,7 @@ class PlayingQueueSheet : BottomSheetDialogFragment() { return binding.root } + @SuppressLint("NotifyDataSetChanged") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -33,17 +35,27 @@ class PlayingQueueSheet : BottomSheetDialogFragment() { binding.shuffle.setOnClickListener { val streams = PlayingQueue.getStreams() - val size = PlayingQueue.size() - streams.subList(PlayingQueue.currentIndex(), size).shuffle() - adapter.notifyItemRangeChanged(0, size) + val currentIndex = PlayingQueue.currentIndex() + val current = streams[currentIndex] + + streams.shuffle() + streams.remove(current) + streams.add(currentIndex, current) + PlayingQueue.setStreams(streams) + + adapter.notifyDataSetChanged() } binding.clear.setOnClickListener { val streams = PlayingQueue.getStreams() - val currentIndex = PlayingQueue.currentIndex() - val size = PlayingQueue.size() - streams.subList(currentIndex, size).clear() - adapter.notifyItemRangeRemoved(currentIndex + 1, size) + val index = PlayingQueue.currentIndex() + + while (index >= PlayingQueue.size()) { + streams.removeAt(index) + } + + PlayingQueue.setStreams(streams) + adapter.notifyDataSetChanged() } binding.bottomControls.setOnClickListener { diff --git a/app/src/main/java/com/github/libretube/util/PlayingQueue.kt b/app/src/main/java/com/github/libretube/util/PlayingQueue.kt index 887185ae8..18d60b7d4 100644 --- a/app/src/main/java/com/github/libretube/util/PlayingQueue.kt +++ b/app/src/main/java/com/github/libretube/util/PlayingQueue.kt @@ -74,6 +74,11 @@ object PlayingQueue { fun getStreams() = queue + fun setStreams(streams: List) { + queue.clear() + queue.addAll(streams) + } + fun remove(index: Int) = queue.removeAt(index) fun move(from: Int, to: Int) = queue.move(from, to) diff --git a/app/src/main/res/layout/queue_bottom_sheet.xml b/app/src/main/res/layout/queue_bottom_sheet.xml index 01b45506d..aeeb9863c 100644 --- a/app/src/main/res/layout/queue_bottom_sheet.xml +++ b/app/src/main/res/layout/queue_bottom_sheet.xml @@ -33,6 +33,7 @@ android:id="@+id/bottom_controls" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_margin="5dp" android:background="@drawable/rounded_ripple" android:padding="10dp"> @@ -41,11 +42,13 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="?attr/selectableItemBackgroundBorderless" + android:padding="5dp" android:src="@drawable/ic_shuffle" />