Fix and add default video jump lengths

This commit is contained in:
Ethan Pippin 2021-12-28 14:43:22 -07:00
parent d1e3e08921
commit 114c070328
4 changed files with 32 additions and 36 deletions

View File

@ -1179,8 +1179,8 @@
E10EAA48277BB6D7000269ED /* Overlays */ = { E10EAA48277BB6D7000269ED /* Overlays */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E1C812BB277A8E5D00918266 /* VLCPlayerCompactOverlayView.swift */,
E10EAA49277BB6F5000269ED /* VideoPlayerOverlay.swift */, E10EAA49277BB6F5000269ED /* VideoPlayerOverlay.swift */,
E1C812BB277A8E5D00918266 /* VLCPlayerCompactOverlayView.swift */,
E1C812B7277A8E5D00918266 /* VLCPlayerOverlayView.swift */, E1C812B7277A8E5D00918266 /* VLCPlayerOverlayView.swift */,
); );
path = Overlays; path = Overlays;
@ -1309,10 +1309,10 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E1C812B9277A8E5D00918266 /* NativePlayerViewController.swift */, E1C812B9277A8E5D00918266 /* NativePlayerViewController.swift */,
E10EAA48277BB6D7000269ED /* Overlays */,
E1C812B4277A8E5D00918266 /* PlaybackSpeed.swift */, E1C812B4277A8E5D00918266 /* PlaybackSpeed.swift */,
E1C812B5277A8E5D00918266 /* PlayerOverlayDelegate.swift */, E1C812B5277A8E5D00918266 /* PlayerOverlayDelegate.swift */,
E1C812B8277A8E5D00918266 /* VideoPlayerView.swift */, E1C812B8277A8E5D00918266 /* VideoPlayerView.swift */,
E10EAA48277BB6D7000269ED /* Overlays */,
E1C812B6277A8E5D00918266 /* VLCPlayerViewController.swift */, E1C812B6277A8E5D00918266 /* VLCPlayerViewController.swift */,
); );
path = VideoPlayer; path = VideoPlayer;

View File

@ -6,14 +6,17 @@
// //
import Combine import Combine
import Defaults
import JellyfinAPI
import MobileVLCKit import MobileVLCKit
import Sliders import Sliders
import SwiftUI import SwiftUI
import JellyfinAPI
struct VLCPlayerCompactOverlayView: View, VideoPlayerOverlay { struct VLCPlayerCompactOverlayView: View, VideoPlayerOverlay {
@ObservedObject var viewModel: VideoPlayerViewModel @ObservedObject var viewModel: VideoPlayerViewModel
@Default(.videoPlayerJumpForward) var jumpForwardLength
@Default(.videoPlayerJumpBackward) var jumpBackwardLength
@ViewBuilder @ViewBuilder
private var mainButtonView: some View { private var mainButtonView: some View {
@ -192,7 +195,7 @@ struct VLCPlayerCompactOverlayView: View, VideoPlayerOverlay {
Button { Button {
viewModel.playerOverlayDelegate?.didSelectBackward() viewModel.playerOverlayDelegate?.didSelectBackward()
} label: { } label: {
Image(systemName: "gobackward.10") Image(systemName: jumpBackwardLength.backwardImageLabel)
.padding(.horizontal, 5) .padding(.horizontal, 5)
} }
@ -207,7 +210,7 @@ struct VLCPlayerCompactOverlayView: View, VideoPlayerOverlay {
Button { Button {
viewModel.playerOverlayDelegate?.didSelectForward() viewModel.playerOverlayDelegate?.didSelectForward()
} label: { } label: {
Image(systemName: "goforward.10") Image(systemName: jumpForwardLength.forwardImageLabel)
.padding(.horizontal, 5) .padding(.horizontal, 5)
} }
} }

View File

@ -8,6 +8,7 @@
import AVKit import AVKit
import AVFoundation import AVFoundation
import Combine import Combine
import Defaults
import JellyfinAPI import JellyfinAPI
import MediaPlayer import MediaPlayer
import MobileVLCKit import MobileVLCKit
@ -32,6 +33,14 @@ class VLCPlayerViewController: UIViewController {
return overlayHostingController.view.alpha > 0 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 videoContentView = makeVideoContentView()
private lazy var tapGestureView = makeTapGestureView() private lazy var tapGestureView = makeTapGestureView()
private lazy var overlayHostingController = makeOverlayHostingController() private lazy var overlayHostingController = makeOverlayHostingController()
@ -283,7 +292,7 @@ extension VLCPlayerViewController {
// MARK: OverlayTimer // MARK: OverlayTimer
extension VLCPlayerViewController { extension VLCPlayerViewController {
private func restartOverlayDismissTimer(interval: Double = 2) { private func restartOverlayDismissTimer(interval: Double = 3) {
self.overlayDismissTimer?.invalidate() self.overlayDismissTimer?.invalidate()
self.overlayDismissTimer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: #selector(dismissTimerFired), userInfo: nil, repeats: false) 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!) { func mediaPlayerStateChanged(_ aNotification: Notification!) {
self.viewModel.playerState = vlcMediaPlayer.state self.viewModel.playerState = vlcMediaPlayer.state
print("Player state changed: \(viewModel.playerState.rawValue)")
} }
func mediaPlayerTimeChanged(_ aNotification: Notification!) { func mediaPlayerTimeChanged(_ aNotification: Notification!) {
@ -337,7 +344,6 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
func didSelectAudioStream(index: Int) { func didSelectAudioStream(index: Int) {
vlcMediaPlayer.currentAudioTrackIndex = Int32(index) vlcMediaPlayer.currentAudioTrackIndex = Int32(index)
print("New audio index: \(index)")
} }
func didSelectSubtitleStream(index: Int) { func didSelectSubtitleStream(index: Int) {
@ -347,7 +353,6 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
// set in case weren't shown // set in case weren't shown
viewModel.subtitlesEnabled = true viewModel.subtitlesEnabled = true
} }
print("New subtitle index: \(index)")
} }
func didSelectClose() { func didSelectClose() {
@ -388,13 +393,13 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
} }
func didSelectBackward() { func didSelectBackward() {
vlcMediaPlayer.jumpBackward(10) vlcMediaPlayer.jumpBackward(jumpBackwardLength.rawValue)
restartOverlayDismissTimer() restartOverlayDismissTimer()
} }
func didSelectForward() { func didSelectForward() {
vlcMediaPlayer.jumpForward(10) vlcMediaPlayer.jumpForward(jumpForwardLength.rawValue)
restartOverlayDismissTimer() restartOverlayDismissTimer()
} }
@ -443,7 +448,5 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
} }
restartOverlayDismissTimer() restartOverlayDismissTimer()
print("Scrubbed position: \(position)")
} }
} }

View File

@ -19,40 +19,30 @@ enum VideoPlayerJumpLength: Int32, CaseIterable, Defaults.Serializable {
var label: String { var label: String {
return "\(self.rawValue) seconds" return "\(self.rawValue) seconds"
} }
func generateForwardImage(with font: UIFont) -> UIImage { var forwardImageLabel: String {
let config = UIImage.SymbolConfiguration(font: font)
let systemName: String
switch self { switch self {
case .thirty: case .thirty:
systemName = "goforward.30" return "goforward.30"
case .fifteen: case .fifteen:
systemName = "goforward.15" return "goforward.15"
case .ten: case .ten:
systemName = "goforward.10" return "goforward.10"
case .five: case .five:
systemName = "goforward.5" return "goforward.5"
} }
return UIImage(systemName: systemName, withConfiguration: config)!
} }
func generateBackwardImage(with font: UIFont) -> UIImage { var backwardImageLabel: String {
let config = UIImage.SymbolConfiguration(font: font)
let systemName: String
switch self { switch self {
case .thirty: case .thirty:
systemName = "gobackward.30" return "gobackward.30"
case .fifteen: case .fifteen:
systemName = "gobackward.15" return "gobackward.15"
case .ten: case .ten:
systemName = "gobackward.10" return "gobackward.10"
case .five: case .five:
systemName = "gobackward.5" return "gobackward.5"
} }
return UIImage(systemName: systemName, withConfiguration: config)!
} }
} }