TemporaryAlarmEditor.swift 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // LoopFollow
  2. // TemporaryAlarmEditor.swift
  3. // Created by Jonas Björkert on 2025-05-16.
  4. import SwiftUI
  5. struct TemporaryAlarmEditor: View {
  6. @Binding var alarm: Alarm
  7. // Shared BG range
  8. private let bgRange: ClosedRange<Double> = 40 ... 300
  9. var body: some View {
  10. Form {
  11. InfoBanner(
  12. text: "This alert fires once when glucose crosses either of the limits you set below, and then disables itself.",
  13. alarmType: alarm.type
  14. )
  15. AlarmGeneralSection(alarm: $alarm)
  16. AlarmBGLimitSection(
  17. header: "Low Limit",
  18. footer: "Alert if BG is equal to or below this value.",
  19. toggleText: "Enable low limit",
  20. pickerTitle: "≤ BG",
  21. range: bgRange,
  22. value: $alarm.belowBG
  23. )
  24. AlarmBGLimitSection(
  25. header: "High Limit",
  26. footer: "Alert if BG is equal to or above this value.",
  27. toggleText: "Enable high limit",
  28. pickerTitle: "≥ BG",
  29. range: bgRange,
  30. value: $alarm.aboveBG
  31. )
  32. // Validation: ensure at least one limit is on
  33. if alarm.belowBG == nil && alarm.aboveBG == nil {
  34. Text("⚠️ Please enable at least one limit.")
  35. .foregroundColor(.red)
  36. }
  37. AlarmActiveSection(alarm: $alarm)
  38. AlarmAudioSection(alarm: $alarm)
  39. AlarmSnoozeSection(alarm: $alarm, range: 5 ... 60, step: 5)
  40. }
  41. .navigationTitle(alarm.type.rawValue)
  42. }
  43. }