diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 8bdc639d..1271c899 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -1179,8 +1179,8 @@ E10EAA48277BB6D7000269ED /* Overlays */ = { isa = PBXGroup; children = ( - E1C812BB277A8E5D00918266 /* VLCPlayerCompactOverlayView.swift */, E10EAA49277BB6F5000269ED /* VideoPlayerOverlay.swift */, + E1C812BB277A8E5D00918266 /* VLCPlayerCompactOverlayView.swift */, E1C812B7277A8E5D00918266 /* VLCPlayerOverlayView.swift */, ); path = Overlays; @@ -1309,10 +1309,10 @@ isa = PBXGroup; children = ( E1C812B9277A8E5D00918266 /* NativePlayerViewController.swift */, + E10EAA48277BB6D7000269ED /* Overlays */, E1C812B4277A8E5D00918266 /* PlaybackSpeed.swift */, E1C812B5277A8E5D00918266 /* PlayerOverlayDelegate.swift */, E1C812B8277A8E5D00918266 /* VideoPlayerView.swift */, - E10EAA48277BB6D7000269ED /* Overlays */, E1C812B6277A8E5D00918266 /* VLCPlayerViewController.swift */, ); path = VideoPlayer; diff --git a/JellyfinPlayer/Views/VideoPlayer/Overlays/VLCPlayerCompactOverlayView.swift b/JellyfinPlayer/Views/VideoPlayer/Overlays/VLCPlayerCompactOverlayView.swift index 756a387b..0afc65a3 100644 --- a/JellyfinPlayer/Views/VideoPlayer/Overlays/VLCPlayerCompactOverlayView.swift +++ b/JellyfinPlayer/Views/VideoPlayer/Overlays/VLCPlayerCompactOverlayView.swift @@ -6,14 +6,17 @@ // import Combine +import Defaults +import JellyfinAPI import MobileVLCKit import Sliders import SwiftUI -import JellyfinAPI struct VLCPlayerCompactOverlayView: View, VideoPlayerOverlay { @ObservedObject var viewModel: VideoPlayerViewModel + @Default(.videoPlayerJumpForward) var jumpForwardLength + @Default(.videoPlayerJumpBackward) var jumpBackwardLength @ViewBuilder private var mainButtonView: some View { @@ -192,7 +195,7 @@ struct VLCPlayerCompactOverlayView: View, VideoPlayerOverlay { Button { viewModel.playerOverlayDelegate?.didSelectBackward() } label: { - Image(systemName: "gobackward.10") + Image(systemName: jumpBackwardLength.backwardImageLabel) .padding(.horizontal, 5) } @@ -207,7 +210,7 @@ struct VLCPlayerCompactOverlayView: View, VideoPlayerOverlay { Button { viewModel.playerOverlayDelegate?.didSelectForward() } label: { - Image(systemName: "goforward.10") + Image(systemName: jumpForwardLength.forwardImageLabel) .padding(.horizontal, 5) } } diff --git a/JellyfinPlayer/Views/VideoPlayer/VLCPlayerViewController.swift b/JellyfinPlayer/Views/VideoPlayer/VLCPlayerViewController.swift index 99bd630d..92d129d7 100644 --- a/JellyfinPlayer/Views/VideoPlayer/VLCPlayerViewController.swift +++ b/JellyfinPlayer/Views/VideoPlayer/VLCPlayerViewController.swift @@ -8,6 +8,7 @@ import AVKit import AVFoundation import Combine +import Defaults import JellyfinAPI import MediaPlayer import MobileVLCKit @@ -32,6 +33,14 @@ class VLCPlayerViewController: UIViewController { return overlayHostingController.view.alpha > 0 } + private var jumpForwardLength: VideoPlayerJumpLength { + return Defaults[.videoPlayerJumpForward] + } + + private var jumpBackwardLength: VideoPlayerJumpLength { + return Defaults[.videoPlayerJumpBackward] + } + private lazy var videoContentView = makeVideoContentView() private lazy var tapGestureView = makeTapGestureView() private lazy var overlayHostingController = makeOverlayHostingController() @@ -283,7 +292,7 @@ extension VLCPlayerViewController { // MARK: OverlayTimer extension VLCPlayerViewController { - private func restartOverlayDismissTimer(interval: Double = 2) { + private func restartOverlayDismissTimer(interval: Double = 3) { self.overlayDismissTimer?.invalidate() self.overlayDismissTimer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: #selector(dismissTimerFired), userInfo: nil, repeats: false) } @@ -304,8 +313,6 @@ extension VLCPlayerViewController: VLCMediaPlayerDelegate { func mediaPlayerStateChanged(_ aNotification: Notification!) { self.viewModel.playerState = vlcMediaPlayer.state - - print("Player state changed: \(viewModel.playerState.rawValue)") } func mediaPlayerTimeChanged(_ aNotification: Notification!) { @@ -337,7 +344,6 @@ extension VLCPlayerViewController: PlayerOverlayDelegate { func didSelectAudioStream(index: Int) { vlcMediaPlayer.currentAudioTrackIndex = Int32(index) - print("New audio index: \(index)") } func didSelectSubtitleStream(index: Int) { @@ -347,7 +353,6 @@ extension VLCPlayerViewController: PlayerOverlayDelegate { // set in case weren't shown viewModel.subtitlesEnabled = true } - print("New subtitle index: \(index)") } func didSelectClose() { @@ -388,13 +393,13 @@ extension VLCPlayerViewController: PlayerOverlayDelegate { } func didSelectBackward() { - vlcMediaPlayer.jumpBackward(10) + vlcMediaPlayer.jumpBackward(jumpBackwardLength.rawValue) restartOverlayDismissTimer() } func didSelectForward() { - vlcMediaPlayer.jumpForward(10) + vlcMediaPlayer.jumpForward(jumpForwardLength.rawValue) restartOverlayDismissTimer() } @@ -443,7 +448,5 @@ extension VLCPlayerViewController: PlayerOverlayDelegate { } restartOverlayDismissTimer() - - print("Scrubbed position: \(position)") } } diff --git a/Shared/Objects/VideoPlayerJumpLength.swift b/Shared/Objects/VideoPlayerJumpLength.swift index 6a2a38b4..2d660cd4 100644 --- a/Shared/Objects/VideoPlayerJumpLength.swift +++ b/Shared/Objects/VideoPlayerJumpLength.swift @@ -19,40 +19,30 @@ enum VideoPlayerJumpLength: Int32, CaseIterable, Defaults.Serializable { var label: String { return "\(self.rawValue) seconds" } - - func generateForwardImage(with font: UIFont) -> UIImage { - let config = UIImage.SymbolConfiguration(font: font) - let systemName: String - + + var forwardImageLabel: String { switch self { case .thirty: - systemName = "goforward.30" + return "goforward.30" case .fifteen: - systemName = "goforward.15" + return "goforward.15" case .ten: - systemName = "goforward.10" + return "goforward.10" case .five: - systemName = "goforward.5" + return "goforward.5" } - - return UIImage(systemName: systemName, withConfiguration: config)! } - - func generateBackwardImage(with font: UIFont) -> UIImage { - let config = UIImage.SymbolConfiguration(font: font) - let systemName: String - + + var backwardImageLabel: String { switch self { case .thirty: - systemName = "gobackward.30" + return "gobackward.30" case .fifteen: - systemName = "gobackward.15" + return "gobackward.15" case .ten: - systemName = "gobackward.10" + return "gobackward.10" case .five: - systemName = "gobackward.5" + return "gobackward.5" } - - return UIImage(systemName: systemName, withConfiguration: config)! } }