Add advanced setting "Show video context menu options to force selected backend"

This commit is contained in:
Arkadiusz Fal
2023-05-26 22:49:38 +02:00
parent e5f137a2d2
commit 562df2d9ba
4 changed files with 40 additions and 1 deletions

View File

@@ -21,6 +21,7 @@ struct VideoContextMenuView: View {
@FetchRequest private var watchRequest: FetchedResults<Watch>
@Default(.saveHistory) private var saveHistory
@Default(.showPlayNowInBackendContextMenu) private var showPlayNowInBackendContextMenu
private var backgroundContext = PersistenceController.shared.container.newBackgroundContext()
@@ -71,6 +72,14 @@ struct VideoContextMenuView: View {
#endif
}
if showPlayNowInBackendContextMenu {
Section {
ForEach(PlayerBackendType.allCases, id: \.self) { backend in
playNowInBackendButton(backend)
}
}
}
Section {
playNextButton
addToQueueButton
@@ -187,6 +196,20 @@ struct VideoContextMenuView: View {
}
}
private func playNowInBackendButton(_ backend: PlayerBackendType) -> some View {
Button {
if player.musicMode {
player.toggleMusicMode()
}
player.forceBackendOnPlay = backend
player.play(video)
} label: {
Label("Play Now in \(backend.label)", systemImage: "play")
}
}
private var playNowInPictureInPictureButton: some View {
Button {
player.avPlayerBackend.startPictureInPictureOnPlay = true