Add Play/Shuffle All for playlists (fixes #39)

Add Remove All from queue button on tvOS
This commit is contained in:
Arkadiusz Fal
2022-01-02 19:59:57 +01:00
parent ba21583a95
commit 04df9551ba
5 changed files with 125 additions and 36 deletions

View File

@@ -4,25 +4,54 @@ import SwiftUI
struct PlaylistVideosView: View {
let playlist: Playlist
var videos: [ContentItem] {
@Environment(\.inNavigationView) private var inNavigationView
@EnvironmentObject<PlayerModel> private var player
var contentItems: [ContentItem] {
ContentItem.array(of: playlist.videos)
}
var videos: [Video] {
contentItems.compactMap(\.video)
}
init(_ playlist: Playlist) {
self.playlist = playlist
}
var body: some View {
PlayerControlsView {
VerticalCells(items: videos)
VerticalCells(items: contentItems)
#if !os(tvOS)
.navigationTitle("\(playlist.title) Playlist")
#endif
}
.toolbar {
ToolbarItem {
FavoriteButton(item: FavoriteItem(section: .playlist(playlist.id)))
ToolbarItem(placement: playlistButtonsPlacement) {
HStack {
FavoriteButton(item: FavoriteItem(section: .channelPlaylist(playlist.id, playlist.title)))
Button {
player.play(videos, inNavigationView: inNavigationView)
} label: {
Label("Play All", systemImage: "play")
}
Button {
player.play(videos, shuffling: true, inNavigationView: inNavigationView)
} label: {
Label("Shuffle", systemImage: "shuffle")
}
}
}
}
}
private var playlistButtonsPlacement: ToolbarItemPlacement {
#if os(iOS)
.navigationBarTrailing
#else
.automatic
#endif
}
}