mirror of
https://github.com/yattee/yattee.git
synced 2024-12-24 06:23:42 +00:00
Fix quality profile form
This commit is contained in:
parent
263f0e63a6
commit
4a5cdf2d03
@ -1,7 +1,7 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct QualityProfileForm: View {
|
struct QualityProfileForm: View {
|
||||||
var qualityProfileID: QualityProfile.ID!
|
@Binding var qualityProfileID: QualityProfile.ID?
|
||||||
|
|
||||||
@Environment(\.colorScheme) private var colorScheme
|
@Environment(\.colorScheme) private var colorScheme
|
||||||
@Environment(\.presentationMode) private var presentationMode
|
@Environment(\.presentationMode) private var presentationMode
|
||||||
@ -23,23 +23,10 @@ struct QualityProfileForm: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
ScrollView {
|
|
||||||
VStack {
|
VStack {
|
||||||
Group {
|
Group {
|
||||||
header
|
header
|
||||||
#if os(iOS)
|
|
||||||
NavigationView {
|
|
||||||
EmptyView()
|
|
||||||
|
|
||||||
form
|
form
|
||||||
.navigationBarHidden(true)
|
|
||||||
.navigationBarTitle(Text("Back"))
|
|
||||||
.edgesIgnoringSafeArea([.top, .bottom])
|
|
||||||
}
|
|
||||||
.navigationViewStyle(.stack)
|
|
||||||
#else
|
|
||||||
form
|
|
||||||
#endif
|
|
||||||
footer
|
footer
|
||||||
}
|
}
|
||||||
.frame(maxWidth: 1000)
|
.frame(maxWidth: 1000)
|
||||||
@ -47,7 +34,7 @@ struct QualityProfileForm: View {
|
|||||||
#if os(tvOS)
|
#if os(tvOS)
|
||||||
.padding(20)
|
.padding(20)
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
.onAppear(perform: initializeForm)
|
.onAppear(perform: initializeForm)
|
||||||
.onChange(of: backend, perform: backendChanged)
|
.onChange(of: backend, perform: backendChanged)
|
||||||
.onChange(of: formats) { _ in validate() }
|
.onChange(of: formats) { _ in validate() }
|
||||||
@ -80,15 +67,20 @@ struct QualityProfileForm: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var form: some View {
|
var form: some View {
|
||||||
#if !os(tvOS)
|
#if os(tvOS)
|
||||||
|
ScrollView {
|
||||||
|
VStack {
|
||||||
|
formFields
|
||||||
|
}
|
||||||
|
.padding(.horizontal, 20)
|
||||||
|
}
|
||||||
|
#else
|
||||||
Form {
|
Form {
|
||||||
formFields
|
formFields
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
.padding(.horizontal)
|
.padding(.horizontal)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
formFields
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,8 +113,6 @@ struct QualityProfileForm: View {
|
|||||||
@ViewBuilder var nameHeader: some View {
|
@ViewBuilder var nameHeader: some View {
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
Text("Name")
|
Text("Name")
|
||||||
#else
|
|
||||||
EmptyView()
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,13 +122,30 @@ struct QualityProfileForm: View {
|
|||||||
.fixedSize(horizontal: false, vertical: true)
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
var qualityPicker: some View {
|
@ViewBuilder var qualityPicker: some View {
|
||||||
Picker("Resolution", selection: $resolution) {
|
let picker = Picker("Resolution", selection: $resolution) {
|
||||||
ForEach(availableResolutions, id: \.self) { resolution in
|
ForEach(availableResolutions, id: \.self) { resolution in
|
||||||
Text(resolution.description).tag(resolution)
|
Text(resolution.description).tag(resolution)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.modifier(SettingsPickerModifier())
|
.modifier(SettingsPickerModifier())
|
||||||
|
|
||||||
|
#if os(iOS)
|
||||||
|
return HStack {
|
||||||
|
Text("Resolution")
|
||||||
|
Spacer()
|
||||||
|
Menu {
|
||||||
|
picker
|
||||||
|
} label: {
|
||||||
|
Text(resolution.description)
|
||||||
|
.frame(minWidth: 120, alignment: .trailing)
|
||||||
|
}
|
||||||
|
.transaction { t in t.animation = .none }
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
return picker
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if os(tvOS)
|
#if os(tvOS)
|
||||||
@ -160,13 +167,29 @@ struct QualityProfileForm: View {
|
|||||||
ResolutionSetting.allCases.filter { !isResolutionDisabled($0) }
|
ResolutionSetting.allCases.filter { !isResolutionDisabled($0) }
|
||||||
}
|
}
|
||||||
|
|
||||||
var backendPicker: some View {
|
@ViewBuilder var backendPicker: some View {
|
||||||
Picker("Backend", selection: $backend) {
|
let picker = Picker("Backend", selection: $backend) {
|
||||||
ForEach(PlayerBackendType.allCases, id: \.self) { backend in
|
ForEach(PlayerBackendType.allCases, id: \.self) { backend in
|
||||||
Text(backend.label).tag(backend)
|
Text(backend.label).tag(backend)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.modifier(SettingsPickerModifier())
|
.modifier(SettingsPickerModifier())
|
||||||
|
#if os(iOS)
|
||||||
|
return HStack {
|
||||||
|
Text("Backend")
|
||||||
|
Spacer()
|
||||||
|
Menu {
|
||||||
|
picker
|
||||||
|
} label: {
|
||||||
|
Text(backend.label)
|
||||||
|
.frame(minWidth: 120, alignment: .trailing)
|
||||||
|
}
|
||||||
|
.transaction { t in t.animation = .none }
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
return picker
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ViewBuilder var formatsPicker: some View {
|
@ViewBuilder var formatsPicker: some View {
|
||||||
@ -307,6 +330,7 @@ struct QualityProfileForm: View {
|
|||||||
|
|
||||||
struct QualityProfileForm_Previews: PreviewProvider {
|
struct QualityProfileForm_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
QualityProfileForm(qualityProfileID: QualityProfile.defaultProfile.id)
|
QualityProfileForm(qualityProfileID: .constant(QualityProfile.defaultProfile.id))
|
||||||
|
.environment(\.navigationStyle, .tab)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ import SwiftUI
|
|||||||
|
|
||||||
struct QualitySettings: View {
|
struct QualitySettings: View {
|
||||||
@State private var presentingProfileForm = false
|
@State private var presentingProfileForm = false
|
||||||
@State private var editedProfile: QualityProfile?
|
@State private var editedProfileID: QualityProfile.ID?
|
||||||
|
|
||||||
@Default(.qualityProfiles) private var qualityProfiles
|
@Default(.qualityProfiles) private var qualityProfiles
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ struct QualitySettings: View {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
.sheet(isPresented: $presentingProfileForm) {
|
.sheet(isPresented: $presentingProfileForm) {
|
||||||
QualityProfileForm(qualityProfileID: editedProfile?.id)
|
QualityProfileForm(qualityProfileID: $editedProfileID)
|
||||||
}
|
}
|
||||||
#if os(tvOS)
|
#if os(tvOS)
|
||||||
.frame(maxWidth: 1000)
|
.frame(maxWidth: 1000)
|
||||||
@ -68,7 +68,7 @@ struct QualitySettings: View {
|
|||||||
profilesList
|
profilesList
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
editedProfile = nil
|
editedProfileID = nil
|
||||||
presentingProfileForm = true
|
presentingProfileForm = true
|
||||||
} label: {
|
} label: {
|
||||||
Label("Add profile...", systemImage: "plus")
|
Label("Add profile...", systemImage: "plus")
|
||||||
@ -130,7 +130,7 @@ struct QualitySettings: View {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
Button {
|
Button {
|
||||||
editedProfile = qualityProfile
|
editedProfileID = qualityProfile.id
|
||||||
presentingProfileForm = true
|
presentingProfileForm = true
|
||||||
} label: {
|
} label: {
|
||||||
Label("Edit...", systemImage: "pencil")
|
Label("Edit...", systemImage: "pencil")
|
||||||
|
Loading…
Reference in New Issue
Block a user