PreferencesEditorRootView.swift 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. }
  23. Section(header: Text("OpenAPS")) {
  24. Picker(selection: $viewModel.insulinCurveField.value, label: Text(viewModel.insulinCurveField.displayName)) {
  25. ForEach(InsulinCurve.allCases) { v in
  26. Text(v.rawValue).tag(v)
  27. }
  28. }
  29. ForEach(viewModel.boolFields.indexed(), id: \.1.id) { index, field in
  30. Toggle(field.displayName, isOn: self.$viewModel.boolFields[index].value)
  31. }
  32. ForEach(viewModel.decimalFields.indexed(), id: \.1.id) { index, field in
  33. HStack {
  34. Text(field.displayName)
  35. DecimalTextField("0", value: self.$viewModel.decimalFields[index].value, formatter: formatter)
  36. }
  37. }
  38. }
  39. Section {
  40. Text("Edit settings json").chevronCell()
  41. .navigationLink(to: .configEditor(file: OpenAPS.FreeAPS.settings), from: self)
  42. }
  43. }
  44. .navigationTitle("Preferences")
  45. .navigationBarTitleDisplayMode(.automatic)
  46. }
  47. }
  48. }