You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.0 KiB
77 lines
2.0 KiB
//
|
|
// RangeFormView.swift
|
|
// LeCountdown
|
|
//
|
|
// Created by Laurent Morvillier on 22/11/2023.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct RangeFormView: View {
|
|
|
|
@Environment(\.dismiss) private var dismiss
|
|
|
|
@ObservedObject var timeRange: TimeRange
|
|
|
|
@State var namePlaceholder = "name"
|
|
@State var name: String = ""
|
|
@State var duration: TimeInterval = 0.0
|
|
|
|
var body: some View {
|
|
|
|
Form {
|
|
Section(header: Text("Name")) {
|
|
TextField(self.namePlaceholder, text: self.$name)
|
|
}
|
|
|
|
Section {
|
|
TimePickerView(duration: self.$duration)
|
|
} header: {
|
|
LabeledContent("Duration", value: self.duration.hourMinuteSecond)
|
|
.font(.footnote)
|
|
}
|
|
|
|
Section {
|
|
Button {
|
|
self._doneHandler()
|
|
} label: {
|
|
HStack {
|
|
Spacer()
|
|
Text("Done").fontWeight(.bold)
|
|
Spacer()
|
|
}
|
|
}
|
|
}
|
|
}.onAppear {
|
|
if let name = self.timeRange.name, !name.isEmpty {
|
|
self.namePlaceholder = name
|
|
}
|
|
self.duration = self.timeRange.duration
|
|
}
|
|
}
|
|
|
|
fileprivate func _doneHandler() {
|
|
if self.name.isEmpty {
|
|
self.timeRange.name = self.namePlaceholder
|
|
} else {
|
|
self.timeRange.name = self.name
|
|
}
|
|
self.timeRange.duration = self.duration
|
|
|
|
self.dismiss()
|
|
}
|
|
|
|
}
|
|
|
|
struct RangeFormView_Previews: PreviewProvider {
|
|
|
|
static var previews: some View {
|
|
Text("tilting crash")
|
|
|
|
// RangeFormView(
|
|
// timeRange: TimeRange.fake(context: PersistenceController.preview.container.viewContext),
|
|
// isPresented: .constant(true))
|
|
// .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
|
|
|
|
}
|
|
}
|
|
|