From 441cb22abc81b469fdbd22f9964adf12ac9f1e1a Mon Sep 17 00:00:00 2001 From: Seiike <122684677+Seeike@users.noreply.github.com> Date: Thu, 3 Apr 2025 23:19:57 +0200 Subject: [PATCH] mb done --- .../CustomPlayer/CustomPlayer.swift | 22 +++++++++++++++++++ .../SettingsSubViews/SettingsViewPlayer.swift | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift b/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift index 13e6ecb..2e1380f 100644 --- a/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift +++ b/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift @@ -44,6 +44,10 @@ class CustomMediaPlayerViewController: UIViewController { var brightnessValue: Double = Double(UIScreen.main.brightness) var brightnessSliderHostingController: UIHostingController>? + private var isHoldPauseEnabled: Bool { + UserDefaults.standard.bool(forKey: "holdForPauseEnabled") + } + var showWatchNextButton = true var watchNextButtonTimer: Timer? var isWatchNextRepositioned: Bool = false @@ -178,6 +182,10 @@ class CustomMediaPlayerViewController: UIViewController { self?.checkForHLSStream() } + if isHoldPauseEnabled { + holdForPause() + } + player.play() if let url = subtitlesURL, !url.isEmpty { @@ -409,6 +417,12 @@ class CustomMediaPlayerViewController: UIViewController { ]) } + func holdForPause() { + let holdForPauseGesture = UILongPressGestureRecognizer(target: self, action: #selector(handleHoldForPause(_:))) + holdForPauseGesture.minimumPressDuration = 2.0 + holdForPauseGesture.numberOfTouchesRequired = 2 + view.addGestureRecognizer(holdForPauseGesture) + } func brightnessControl() { let brightnessSlider = VerticalBrightnessSlider( @@ -1024,6 +1038,14 @@ class CustomMediaPlayerViewController: UIViewController { player.seek(to: CMTime(seconds: currentTimeVal, preferredTimescale: 600)) } + @objc private func handleHoldForPause(_ gesture: UILongPressGestureRecognizer) { + guard isHoldPauseEnabled else { return } + + if gesture.state == .began { + togglePlayPause() + } + } + func speedChangerMenu() -> UIMenu { let speeds: [Double] = [0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0] let playbackSpeedActions = speeds.map { speed in diff --git a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift index 2792468..1406013 100644 --- a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift +++ b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift @@ -15,6 +15,7 @@ struct SettingsViewPlayer: View { @AppStorage("holdSpeedPlayer") private var holdSpeedPlayer: Double = 2.0 @AppStorage("skipIncrement") private var skipIncrement: Double = 10.0 @AppStorage("skipIncrementHold") private var skipIncrementHold: Double = 30.0 + @AppStorage("holdForPauseEnabled") private var holdForPauseEnabled = false private let mediaPlayers = ["Default", "VLC", "OutPlayer", "Infuse", "nPlayer", "Sora"] @@ -40,6 +41,9 @@ struct SettingsViewPlayer: View { Toggle("Force Landscape", isOn: $isAlwaysLandscape) .tint(.accentColor) + + Toggle("Two finger hold for pause",isOn: $holdForPauseEnabled) + .tint(.accentColor) } Section(header: Text("Speed Settings")) {