mirror of
https://github.com/MaintainTeam/LastPipeBender.git
synced 2025-03-01 05:48:22 +03:00
added a "Shuffle and play" menu item in Playlist fragments (closes #24)
This commit is contained in:
parent
305c17c201
commit
c995fdb189
8 changed files with 77 additions and 0 deletions
|
@ -28,6 +28,7 @@ import org.schabi.newpipe.util.ChannelTabHelper;
|
|||
import org.schabi.newpipe.util.ExtractorHelper;
|
||||
import org.schabi.newpipe.util.PlayButtonHelper;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -165,4 +166,17 @@ public class ChannelTabFragment extends BaseListInfoFragment<InfoItem, ChannelTa
|
|||
return new ChannelTabPlayQueue(currentInfo.getServiceId(), tabHandler,
|
||||
currentInfo.getNextPage(), streamItems, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayQueue getShuffledQueue() {
|
||||
final List<StreamInfoItem> streamItems = infoListAdapter.getItemsList().stream()
|
||||
.filter(StreamInfoItem.class::isInstance)
|
||||
.map(StreamInfoItem.class::cast)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Collections.shuffle(streamItems);
|
||||
|
||||
return new ChannelTabPlayQueue(currentInfo.getServiceId(),
|
||||
tabHandler, currentInfo.getNextPage(), streamItems, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,4 +8,6 @@ import org.schabi.newpipe.player.playqueue.PlayQueue;
|
|||
*/
|
||||
public interface PlaylistControlViewHolder {
|
||||
PlayQueue getPlayQueue();
|
||||
|
||||
PlayQueue getShuffledQueue();
|
||||
}
|
||||
|
|
|
@ -57,6 +57,7 @@ import org.schabi.newpipe.util.image.PicassoHelper;
|
|||
import org.schabi.newpipe.util.text.TextEllipsizer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.function.Supplier;
|
||||
|
@ -259,6 +260,9 @@ public class PlaylistFragment extends BaseListInfoFragment<StreamInfoItem, Playl
|
|||
));
|
||||
}
|
||||
break;
|
||||
case R.id.menu_item_playlist_shuffle_all:
|
||||
NavigationHelper.playOnMainPlayer(activity, getShuffledQueue());
|
||||
break;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
@ -375,13 +379,27 @@ public class PlaylistFragment extends BaseListInfoFragment<StreamInfoItem, Playl
|
|||
return getPlayQueue(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayQueue getShuffledQueue() {
|
||||
return getPlayQueue(0, true);
|
||||
}
|
||||
|
||||
private PlayQueue getPlayQueue(final int index) {
|
||||
return getPlayQueue(index, false);
|
||||
}
|
||||
|
||||
private PlayQueue getPlayQueue(final int index, final boolean shuffled) {
|
||||
final List<StreamInfoItem> infoItems = new ArrayList<>();
|
||||
for (final InfoItem i : infoListAdapter.getItemsList()) {
|
||||
if (i instanceof StreamInfoItem) {
|
||||
infoItems.add((StreamInfoItem) i);
|
||||
}
|
||||
}
|
||||
|
||||
if (shuffled) {
|
||||
Collections.shuffle(infoItems);
|
||||
}
|
||||
|
||||
return new PlaylistPlayQueue(
|
||||
currentInfo.getServiceId(),
|
||||
currentInfo.getUrl(),
|
||||
|
|
|
@ -372,7 +372,16 @@ public class StatisticsPlaylistFragment
|
|||
return getPlayQueue(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayQueue getShuffledQueue() {
|
||||
return getPlayQueue(0, true);
|
||||
}
|
||||
|
||||
private PlayQueue getPlayQueue(final int index) {
|
||||
return getPlayQueue(index, false);
|
||||
}
|
||||
|
||||
private PlayQueue getPlayQueue(final int index, final boolean shuffled) {
|
||||
if (itemListAdapter == null) {
|
||||
return new SinglePlayQueue(Collections.emptyList(), 0);
|
||||
}
|
||||
|
@ -384,6 +393,11 @@ public class StatisticsPlaylistFragment
|
|||
streamInfoItems.add(((StreamStatisticsEntry) item).toStreamInfoItem());
|
||||
}
|
||||
}
|
||||
|
||||
if (shuffled) {
|
||||
Collections.shuffle(streamInfoItems);
|
||||
}
|
||||
|
||||
return new SinglePlayQueue(streamInfoItems, index);
|
||||
}
|
||||
|
||||
|
|
|
@ -377,6 +377,8 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
|
|||
if (!isRewritingPlaylist) {
|
||||
openRemoveDuplicatesDialog();
|
||||
}
|
||||
} else if (item.getItemId() == R.id.menu_item_playlist_shuffle_all) {
|
||||
NavigationHelper.playOnMainPlayer(activity, getShuffledQueue());
|
||||
} else {
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
@ -846,7 +848,16 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
|
|||
return getPlayQueue(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayQueue getShuffledQueue() {
|
||||
return getPlayQueue(0, true);
|
||||
}
|
||||
|
||||
private PlayQueue getPlayQueue(final int index) {
|
||||
return getPlayQueue(index, false);
|
||||
}
|
||||
|
||||
private PlayQueue getPlayQueue(final int index, final boolean shuffled) {
|
||||
if (itemListAdapter == null) {
|
||||
return new SinglePlayQueue(Collections.emptyList(), 0);
|
||||
}
|
||||
|
@ -858,6 +869,11 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
|
|||
streamInfoItems.add(((PlaylistStreamEntry) item).toStreamInfoItem());
|
||||
}
|
||||
}
|
||||
|
||||
if (shuffled) {
|
||||
Collections.shuffle(streamInfoItems);
|
||||
}
|
||||
|
||||
return new SinglePlayQueue(streamInfoItems, index);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,4 +22,10 @@
|
|||
android:id="@+id/menu_item_remove_duplicates"
|
||||
android:title="@string/remove_duplicates"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_item_playlist_shuffle_all"
|
||||
android:orderInCategory="4"
|
||||
android:title="@string/shuffle_and_play"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
||||
|
|
|
@ -34,4 +34,10 @@
|
|||
android:orderInCategory="3"
|
||||
android:title="@string/add_to_playlist"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_item_playlist_shuffle_all"
|
||||
android:orderInCategory="4"
|
||||
android:title="@string/shuffle_and_play"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
||||
|
|
|
@ -454,6 +454,7 @@
|
|||
<string name="rename_playlist">Rename</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="add_to_playlist">Add to playlist</string>
|
||||
<string name="shuffle_and_play">Shuffle and play</string>
|
||||
<string name="processing_may_take_a_moment">Processing… May take a moment</string>
|
||||
<string name="mute">Mute</string>
|
||||
<string name="unmute">Unmute</string>
|
||||
|
|
Loading…
Add table
Reference in a new issue