Add playback mode to playback settings

This commit is contained in:
Arkadiusz Fal 2023-04-22 17:20:49 +02:00
parent 9a594b4a8d
commit c8feeca41f

View File

@ -62,6 +62,13 @@ struct PlaybackSettings: View {
.frame(maxWidth: 50, alignment: .trailing)
}
HStack {
controlsHeader("Playback Mode")
Spacer()
playbackModeControl
}
.padding(.vertical, 10)
HStack {
controlsHeader("Rate")
Spacer()
@ -77,7 +84,6 @@ struct PlaybackSettings: View {
#endif
}
}
if player.activeBackend == .mpv {
HStack {
controlsHeader("Captions")
@ -281,6 +287,40 @@ struct PlaybackSettings: View {
#endif
}
@ViewBuilder var playbackModeControl: some View {
#if os(tvOS)
Button {
player.playbackMode = player.playbackMode.next()
} label: {
Label(player.playbackMode.description, systemImage: player.playbackMode.systemImage)
.transaction { t in t.animation = nil }
.frame(minWidth: 350)
}
#elseif os(macOS)
playbackModePicker
.modifier(SettingsPickerModifier())
#if os(macOS)
.frame(maxWidth: 150)
#endif
#else
Menu {
playbackModePicker
} label: {
Label(player.playbackMode.description, systemImage: player.playbackMode.systemImage)
}
.transaction { t in t.animation = .none }
#endif
}
var playbackModePicker: some View {
Picker("Playback Mode", selection: $player.playbackMode) {
ForEach(PlayerModel.PlaybackMode.allCases, id: \.rawValue) { mode in
Label(mode.description, systemImage: mode.systemImage).tag(mode)
}
}
.labelsHidden()
}
@ViewBuilder private var qualityProfileButton: some View {
#if os(macOS)
qualityProfilePicker