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 */ = {
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;

View File

@ -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)
}
}

View File

@ -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)")
}
}

View File

@ -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)!
}
}