AlarmEditor.swift 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // LoopFollow
  2. // AlarmEditor.swift
  3. // Created by Jonas Björkert on 2025-04-26.
  4. import SwiftUI
  5. struct AlarmEditor: View {
  6. @Binding var alarm: Alarm
  7. var isNew: Bool = false
  8. var onDone: () -> Void = {}
  9. var onCancel: () -> Void = {}
  10. @Environment(\.dismiss) private var dismiss
  11. var body: some View {
  12. NavigationStack {
  13. innerEditor()
  14. .navigationBarTitleDisplayMode(.inline)
  15. .toolbar {
  16. if isNew {
  17. ToolbarItem(placement: .confirmationAction) {
  18. Button("Done") {
  19. onDone()
  20. dismiss()
  21. }
  22. }
  23. ToolbarItem(placement: .cancellationAction) {
  24. Button("Cancel") {
  25. onCancel()
  26. dismiss()
  27. }
  28. }
  29. }
  30. }
  31. }
  32. .preferredColorScheme(UserDefaultsRepository.forceDarkMode.value ? .dark : nil)
  33. }
  34. @ViewBuilder
  35. private func innerEditor() -> some View {
  36. switch alarm.type {
  37. case .buildExpire:
  38. BuildExpireAlarmEditor(alarm: $alarm)
  39. case .high:
  40. HighBgAlarmEditor(alarm: $alarm)
  41. case .low:
  42. LowBgAlarmEditor(alarm: $alarm)
  43. case .missedReading:
  44. MissedReadingEditor(alarm: $alarm)
  45. case .fastDrop:
  46. FastDropAlarmEditor(alarm: $alarm)
  47. case .notLooping:
  48. NotLoopingAlarmEditor(alarm: $alarm)
  49. case .overrideStart:
  50. OverrideStartAlarmEditor(alarm: $alarm)
  51. case .overrideEnd:
  52. OverrideEndAlarmEditor(alarm: $alarm)
  53. case .tempTargetStart:
  54. TempTargetStartAlarmEditor(alarm: $alarm)
  55. case .tempTargetEnd:
  56. TempTargetEndAlarmEditor(alarm: $alarm)
  57. case .recBolus:
  58. RecBolusAlarmEditor(alarm: $alarm)
  59. case .cob:
  60. COBAlarmEditor(alarm: $alarm)
  61. case .fastRise:
  62. FastRiseAlarmEditor(alarm: $alarm)
  63. case .temporary:
  64. TemporaryAlarmEditor(alarm: $alarm)
  65. case .sensorChange:
  66. SensorAgeAlarmEditor(alarm: $alarm)
  67. case .pumpChange:
  68. PumpChangeAlarmEditor(alarm: $alarm)
  69. case .pump:
  70. PumpVolumeAlarmEditor(alarm: $alarm)
  71. case .iob:
  72. IOBAlarmEditor(alarm: $alarm)
  73. case .battery:
  74. BatteryAlarmEditor(alarm: $alarm)
  75. case .batteryDrop:
  76. BatteryDropAlarmEditor(alarm: $alarm)
  77. case .missedBolus:
  78. MissedBolusAlarmEditor(alarm: $alarm)
  79. }
  80. }
  81. }