diff --git a/Sora/Utils/MediaPlayer/NormalPlayer.swift b/Sora/Utils/MediaPlayer/NormalPlayer.swift index 656eac2..c378c83 100644 --- a/Sora/Utils/MediaPlayer/NormalPlayer.swift +++ b/Sora/Utils/MediaPlayer/NormalPlayer.swift @@ -15,6 +15,7 @@ class NormalPlayer: AVPlayerViewController { super.viewDidLoad() setupHoldGesture() setupAudioSession() + setInitialPlayerRate() } private func setupHoldGesture() { @@ -58,4 +59,22 @@ class NormalPlayer: AVPlayerViewController { Logger.shared.log("Failed to set up AVAudioSession: \(error)") } } -} + + private func setInitialPlayerRate() { + if UserDefaults.standard.bool(forKey: "rememberPlaySpeed") { + let lastPlayedSpeed = UserDefaults.standard.float(forKey: "lastPlayedSpeed") + player?.rate = lastPlayedSpeed > 0 ? lastPlayedSpeed : 1.0 + } + } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + saveCurrentPlayerRate() + } + + private func saveCurrentPlayerRate() { + if UserDefaults.standard.bool(forKey: "rememberPlaySpeed"), let player = player { + UserDefaults.standard.set(player.rate, forKey: "lastPlayedSpeed") + } + } +} \ No newline at end of file diff --git a/Sora/Utils/MediaPlayer/VideoPlayer.swift b/Sora/Utils/MediaPlayer/VideoPlayer.swift index 9654d0d..154ec43 100644 --- a/Sora/Utils/MediaPlayer/VideoPlayer.swift +++ b/Sora/Utils/MediaPlayer/VideoPlayer.swift @@ -97,7 +97,7 @@ class VideoPlayerViewController: UIViewController { } override var supportedInterfaceOrientations: UIInterfaceOrientationMask { - if UserDefaults.standard.bool(forKey: "AlwaysLandscape") { + if UserDefaults.standard.bool(forKey: "alwaysLandscape") { return .landscape } else { return .all diff --git a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift index 6308fd8..4bfc929 100644 --- a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift +++ b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewPlayer.swift @@ -9,8 +9,9 @@ import SwiftUI struct SettingsViewPlayer: View { @AppStorage("externalPlayer") private var externalPlayer: String = "Default" - @AppStorage("AlwaysLandscape") private var isAlwaysLandscape = false + @AppStorage("alwaysLandscape") private var isAlwaysLandscape = false @AppStorage("hideNextButton") private var isHideNextButton = false + @AppStorage("rememberPlaySpeed") private var isRememberPlaySpeed = false @AppStorage("holdSpeedPlayer") private var holdSpeedPlayer: Double = 2.0 private let mediaPlayers = ["Default", "VLC", "OutPlayer", "Infuse", "nPlayer", "Sora"] @@ -38,6 +39,9 @@ struct SettingsViewPlayer: View { Toggle("Force Landscape", isOn: $isAlwaysLandscape) .tint(.accentColor) + Toggle("Remember Playback speed", isOn: $isRememberPlaySpeed) + .tint(.accentColor) + HStack { Text("Hold Speed:") Spacer() @@ -53,4 +57,4 @@ struct SettingsViewPlayer: View { } .navigationTitle("Player") } -} \ No newline at end of file +}