CorrectionRangeOverridesExpandableSetting.swift 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //
  2. // CorrectionRangeOverridesExpandableSetting.swift
  3. // LoopKitUI
  4. //
  5. // Created by Rick Pasetto on 7/13/20.
  6. // Copyright © 2020 LoopKit Authors. All rights reserved.
  7. //
  8. import SwiftUI
  9. import HealthKit
  10. import LoopKit
  11. public struct CorrectionRangeOverridesExpandableSetting<ExpandedContent: View>: View {
  12. @Environment(\.carbTintColor) var carbTintColor
  13. @Environment(\.glucoseTintColor) var glucoseTintColor
  14. @Binding var isEditing: Bool
  15. @Binding var value: CorrectionRangeOverrides
  16. let preset: CorrectionRangeOverrides.Preset
  17. let unit: HKUnit
  18. let suspendThreshold: GlucoseThreshold?
  19. var correctionRangeScheduleRange: ClosedRange<HKQuantity>
  20. var expandedContent: () -> ExpandedContent
  21. public var body: some View {
  22. ExpandableSetting(
  23. isEditing: $isEditing,
  24. leadingValueContent: {
  25. HStack {
  26. preset.icon(usingCarbTintColor: carbTintColor, orGlucoseTintColor: glucoseTintColor)
  27. Text(preset.title)
  28. }
  29. },
  30. trailingValueContent: {
  31. GuardrailConstrainedQuantityRangeView(
  32. range: value.ranges[preset],
  33. unit: unit,
  34. guardrail: self.guardrail(for: preset),
  35. isEditing: isEditing,
  36. forceDisableAnimations: true
  37. )
  38. },
  39. expandedContent: expandedContent
  40. )
  41. }
  42. private func guardrail(for preset: CorrectionRangeOverrides.Preset) -> Guardrail<HKQuantity> {
  43. return Guardrail.correctionRangeOverride(for: preset, correctionRangeScheduleRange: correctionRangeScheduleRange, suspendThreshold: suspendThreshold)
  44. }
  45. }