Controls layouts, gestures and settings

This commit is contained in:
Arkadiusz Fal
2022-08-28 19:18:49 +02:00
parent 5b785cc9c2
commit 0f7d826a3e
28 changed files with 1318 additions and 537 deletions

View File

@@ -1,3 +1,4 @@
import Defaults
import Foundation
import SwiftUI
@@ -5,6 +6,27 @@ struct Buffering: View {
var reason = "Buffering stream..."
var state: String?
#if os(iOS)
@Environment(\.verticalSizeClass) private var verticalSizeClass
#endif
@EnvironmentObject<PlayerModel> private var player
@Default(.playerControlsLayout) private var regularPlayerControlsLayout
@Default(.fullScreenPlayerControlsLayout) private var fullScreenPlayerControlsLayout
var playerControlsLayout: PlayerControlsLayout {
fullScreenLayout ? fullScreenPlayerControlsLayout : regularPlayerControlsLayout
}
var fullScreenLayout: Bool {
#if os(iOS)
player.playingFullScreen || verticalSizeClass == .compact
#else
player.playingFullScreen
#endif
}
var body: some View {
VStack(spacing: 2) {
ProgressView()
@@ -17,10 +39,10 @@ struct Buffering: View {
.progressViewStyle(.circular)
Text(reason)
.font(.caption)
.font(.system(size: playerControlsLayout.timeFontSize))
if let state = state {
Text(state)
.font(.caption2.monospacedDigit())
.font(.system(size: playerControlsLayout.bufferingStateFontSize).monospacedDigit())
}
}
.padding(8)