Settings for iOS/macOS

This commit is contained in:
Arkadiusz Fal
2021-09-25 10:18:22 +02:00
parent 433725c5e8
commit a7da3b9468
64 changed files with 1998 additions and 665 deletions

View File

@@ -1,15 +1,20 @@
import Defaults
import SwiftUI
struct Player: NSViewControllerRepresentable {
@EnvironmentObject<PlaybackState> private var playbackState
var video: Video!
@EnvironmentObject<InvidiousAPI> private var api
@EnvironmentObject<PlaybackModel> private var playback
func makeNSViewController(context _: Context) -> PlayerViewController {
let controller = PlayerViewController()
controller.video = video
controller.playbackState = playbackState
controller.playback = playback
controller.api = api
controller.resolution = Defaults[.quality]
return controller
}

View File

@@ -4,36 +4,40 @@ import SwiftUI
final class PlayerViewController: NSViewController {
var video: Video!
var api: InvidiousAPI!
var player = AVPlayer()
var playerState: PlayerState!
var playbackState: PlaybackState!
var playerModel: PlayerModel!
var playback: PlaybackModel!
var playerView = AVPlayerView()
var resolution: Stream.ResolutionSetting!
override func viewDidDisappear() {
playerView.player?.replaceCurrentItem(with: nil)
playerView.player = nil
playerState.player = nil
playerState = nil
playerModel.player = nil
playerModel = nil
super.viewDidDisappear()
}
override func loadView() {
playerState = PlayerState(playbackState: playbackState)
playerModel = PlayerModel(playback: playback, api: api, resolution: resolution)
guard playerState.player == nil else {
guard playerModel.player == nil else {
return
}
playerState.player = player
playerView.player = playerState.player
playerModel.player = player
playerView.player = playerModel.player
playerView.allowsPictureInPicturePlayback = true
playerView.showsFullScreenToggleButton = true
view = playerView
playerState.loadVideo(video)
DispatchQueue.main.async {
self.playerModel.loadVideo(self.video)
}
}
}