PreferencesEditorRootView.swift 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import SwiftUI
  2. extension PreferencesEditor {
  3. struct RootView: BaseView {
  4. @EnvironmentObject var viewModel: ViewModel<Provider>
  5. private var formatter: NumberFormatter {
  6. let formatter = NumberFormatter()
  7. formatter.numberStyle = .decimal
  8. return formatter
  9. }
  10. var body: some View {
  11. Form {
  12. Section(header: Text("FreeAPS X")) {
  13. Picker("Glucose units", selection: $viewModel.unitsIndex) {
  14. Text("mg/dL").tag(0)
  15. Text("mmol/L").tag(1)
  16. }
  17. Toggle("Remote control", isOn: $viewModel.allowAnnouncements)
  18. HStack {
  19. Text("Recommended Insulin Fraction")
  20. DecimalTextField("", value: $viewModel.insulinReqFraction, formatter: formatter)
  21. }
  22. Toggle("Skip Bolus screen after carbs", isOn: $viewModel.skipBolusScreenAfterCarbs)
  23. }
  24. Section(header: Text("OpenAPS")) {
  25. Picker(selection: $viewModel.insulinCurveField.value, label: Text(viewModel.insulinCurveField.displayName)) {
  26. ForEach(InsulinCurve.allCases) { v in
  27. Text(v.rawValue).tag(v)
  28. }
  29. }
  30. ForEach(viewModel.boolFields.indexed(), id: \.1.id) { index, field in
  31. Toggle(field.displayName, isOn: self.$viewModel.boolFields[index].value)
  32. }
  33. ForEach(viewModel.decimalFields.indexed(), id: \.1.id) { index, field in
  34. HStack {
  35. Text(field.displayName)
  36. DecimalTextField("0", value: self.$viewModel.decimalFields[index].value, formatter: formatter)
  37. }
  38. }
  39. }
  40. Section {
  41. Text("Edit settings json").chevronCell()
  42. .navigationLink(to: .configEditor(file: OpenAPS.FreeAPS.settings), from: self)
  43. }
  44. }
  45. .navigationTitle("Preferences")
  46. .navigationBarTitleDisplayMode(.automatic)
  47. }
  48. }
  49. }