Seek settings

This commit is contained in:
Arkadiusz Fal
2022-12-19 12:08:27 +01:00
parent 5d4983d6d2
commit 8631389b8f
7 changed files with 113 additions and 11 deletions

View File

@@ -29,6 +29,8 @@ struct PlayerControls: View {
@Default(.playerControlsLayout) private var regularPlayerControlsLayout
@Default(.fullScreenPlayerControlsLayout) private var fullScreenPlayerControlsLayout
@Default(.openWatchNextOnClose) private var openWatchNextOnClose
@Default(.buttonBackwardSeekDuration) private var buttonBackwardSeekDuration
@Default(.buttonForwardSeekDuration) private var buttonForwardSeekDuration
private let controlsOverlayModel = ControlOverlaysModel.shared
@@ -398,8 +400,14 @@ struct PlayerControls: View {
size = playerControlsLayout.bigButtonSize
#endif
return button("Seek Backward", systemImage: "gobackward.10", fontSize: fontSize, size: size, cornerRadius: 5, background: false, foregroundColor: foregroundColor) {
player.backend.seek(relative: .secondsInDefaultTimescale(-10), seekType: .userInteracted)
let interval = TimeInterval(buttonBackwardSeekDuration) ?? 10
return button(
"Seek Backward",
systemImage: Constants.seekIcon("backward", interval),
fontSize: fontSize, size: size, cornerRadius: 5, background: false, foregroundColor: foregroundColor
) {
player.backend.seek(relative: .secondsInDefaultTimescale(-interval), seekType: .userInteracted)
}
.disabled(player.liveStreamInAVPlayer)
#if os(tvOS)
@@ -420,8 +428,14 @@ struct PlayerControls: View {
size = playerControlsLayout.bigButtonSize
#endif
return button("Seek Forward", systemImage: "goforward.10", fontSize: fontSize, size: size, cornerRadius: 5, background: false, foregroundColor: foregroundColor) {
player.backend.seek(relative: .secondsInDefaultTimescale(10), seekType: .userInteracted)
let interval = TimeInterval(buttonForwardSeekDuration) ?? 10
return button(
"Seek Forward",
systemImage: Constants.seekIcon("forward", interval),
fontSize: fontSize, size: size, cornerRadius: 5, background: false, foregroundColor: foregroundColor
) {
player.backend.seek(relative: .secondsInDefaultTimescale(interval), seekType: .userInteracted)
}
.disabled(player.liveStreamInAVPlayer)
#if os(tvOS)

View File

@@ -1,9 +1,13 @@
import Defaults
import SwiftUI
struct PlayerGestures: View {
private var player = PlayerModel.shared
@ObservedObject private var model = PlayerControlsModel.shared
@Default(.gestureBackwardSeekDuration) private var gestureBackwardSeekDuration
@Default(.gestureForwardSeekDuration) private var gestureForwardSeekDuration
var body: some View {
HStack(spacing: 0) {
gestureRectangle
@@ -11,7 +15,8 @@ struct PlayerGestures: View {
tapSensitivity: 0.2,
singleTapAction: { singleTapAction() },
doubleTapAction: {
player.backend.seek(relative: .secondsInDefaultTimescale(-10), seekType: .userInteracted)
let interval = TimeInterval(gestureBackwardSeekDuration) ?? 10
player.backend.seek(relative: .secondsInDefaultTimescale(-interval), seekType: .userInteracted)
},
anyTapAction: {
model.update()
@@ -32,7 +37,8 @@ struct PlayerGestures: View {
tapSensitivity: 0.2,
singleTapAction: { singleTapAction() },
doubleTapAction: {
player.backend.seek(relative: .secondsInDefaultTimescale(10), seekType: .userInteracted)
let interval = TimeInterval(gestureForwardSeekDuration) ?? 10
player.backend.seek(relative: .secondsInDefaultTimescale(interval), seekType: .userInteracted)
}
)
}

View File

@@ -66,6 +66,8 @@ struct VideoPlayerView: View {
@Default(.seekGestureSpeed) var seekGestureSpeed
@Default(.seekGestureSensitivity) var seekGestureSensitivity
@Default(.playerSidebar) var playerSidebar
@Default(.gestureBackwardSeekDuration) private var gestureBackwardSeekDuration
@Default(.gestureForwardSeekDuration) private var gestureForwardSeekDuration
@ObservedObject internal var controlsOverlayModel = ControlOverlaysModel.shared
@@ -371,10 +373,12 @@ struct VideoPlayerView: View {
guard !player.controls.presentingControls else { return }
if direction == .left {
player.backend.seek(relative: .secondsInDefaultTimescale(-10), seekType: .userInteracted)
let interval = TimeInterval(gestureBackwardSeekDuration) ?? 10
player.backend.seek(relative: .secondsInDefaultTimescale(-interval), seekType: .userInteracted)
}
if direction == .right {
player.backend.seek(relative: .secondsInDefaultTimescale(10), seekType: .userInteracted)
let interval = TimeInterval(gestureForwardSeekDuration) ?? 10
player.backend.seek(relative: .secondsInDefaultTimescale(interval), seekType: .userInteracted)
}
}
.onPlayPauseCommand {