Screen.swift 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. import SwiftUI
  2. import Swinject
  3. enum Screen: Identifiable, Hashable {
  4. case loading
  5. case home
  6. case settings
  7. case configEditor(file: String)
  8. case nighscoutConfig
  9. case nighscoutConfigDirect
  10. case pumpConfig
  11. case pumpConfigDirect
  12. case basalProfileEditor
  13. case isfEditor
  14. case crEditor
  15. case targetsEditor
  16. case bolus
  17. case manualTempBasal
  18. case autotuneConfig
  19. case dataTable
  20. case cgm
  21. case cgmDirect
  22. case healthkit
  23. case glucoseNotificationSettings
  24. case mealSettings
  25. case iconConfig
  26. case overrideConfig
  27. case snooze
  28. case statistics
  29. case watch
  30. case userInterfaceSettings
  31. case bolusCalculatorConfig
  32. case dynamicISF
  33. case calibrations
  34. case shortcutsConfig
  35. case devices
  36. case therapySettings
  37. case algorithmSettings
  38. case featureSettings
  39. case notificationSettings
  40. case liveActivitySettings
  41. case calendarEventSettings
  42. case serviceSettings
  43. case autosensSettings
  44. case smbSettings
  45. case targetBehavior
  46. case algorithmAdvancedSettings
  47. case unitsAndLimits
  48. var id: Int { String(reflecting: self).hashValue }
  49. }
  50. extension Screen {
  51. @ViewBuilder func view(resolver: Resolver) -> some View {
  52. switch self {
  53. case .loading:
  54. ProgressView()
  55. case .home:
  56. Home.RootView(resolver: resolver)
  57. case .settings:
  58. Settings.RootView(resolver: resolver)
  59. case let .configEditor(file):
  60. ConfigEditor.RootView(resolver: resolver, file: file)
  61. case .nighscoutConfig:
  62. NightscoutConfig.RootView(resolver: resolver, displayClose: false)
  63. case .nighscoutConfigDirect:
  64. NightscoutConfig.RootView(resolver: resolver, displayClose: true)
  65. case .pumpConfig:
  66. PumpConfig.RootView(resolver: resolver, displayClose: false)
  67. case .pumpConfigDirect:
  68. PumpConfig.RootView(resolver: resolver, displayClose: true)
  69. case .basalProfileEditor:
  70. BasalProfileEditor.RootView(resolver: resolver)
  71. case .isfEditor:
  72. ISFEditor.RootView(resolver: resolver)
  73. case .crEditor:
  74. CarbRatioEditor.RootView(resolver: resolver)
  75. case .targetsEditor:
  76. TargetsEditor.RootView(resolver: resolver)
  77. case .bolus:
  78. Bolus.RootView(resolver: resolver)
  79. case .manualTempBasal:
  80. ManualTempBasal.RootView(resolver: resolver)
  81. case .autotuneConfig:
  82. AutotuneConfig.RootView(resolver: resolver)
  83. case .dataTable:
  84. DataTable.RootView(resolver: resolver)
  85. case .cgm:
  86. CGM.RootView(resolver: resolver, displayClose: false)
  87. case .cgmDirect:
  88. CGM.RootView(resolver: resolver, displayClose: true)
  89. case .healthkit:
  90. AppleHealthKit.RootView(resolver: resolver)
  91. case .glucoseNotificationSettings:
  92. GlucoseNotificationSettings.RootView(resolver: resolver)
  93. case .mealSettings:
  94. MealSettings.RootView(resolver: resolver)
  95. case .iconConfig:
  96. IconConfig.RootView(resolver: resolver)
  97. case .overrideConfig:
  98. OverrideConfig.RootView(resolver: resolver)
  99. case .snooze:
  100. Snooze.RootView(resolver: resolver)
  101. case .watch:
  102. WatchConfig.RootView(resolver: resolver)
  103. case .statistics:
  104. Stat.RootView(resolver: resolver)
  105. case .userInterfaceSettings:
  106. UserInterfaceSettings.RootView(resolver: resolver)
  107. case .bolusCalculatorConfig:
  108. BolusCalculatorConfig.RootView(resolver: resolver)
  109. case .dynamicISF:
  110. DynamicSettings.RootView(resolver: resolver)
  111. case .calibrations:
  112. Calibrations.RootView(resolver: resolver)
  113. case .shortcutsConfig:
  114. ShortcutsConfig.RootView(resolver: resolver)
  115. case .devices:
  116. DevicesView(resolver: resolver, state: Settings.StateModel())
  117. case .therapySettings:
  118. TherapySettingsView(resolver: resolver, state: Settings.StateModel())
  119. case .algorithmSettings:
  120. AlgorithmSettings(resolver: resolver, state: Settings.StateModel())
  121. case .featureSettings:
  122. FeatureSettingsView(resolver: resolver, state: Settings.StateModel())
  123. case .notificationSettings:
  124. NotificationsView(resolver: resolver, state: Settings.StateModel())
  125. case .liveActivitySettings:
  126. LiveActivitySettings.RootView(resolver: resolver)
  127. case .calendarEventSettings:
  128. CalendarEventSettings.RootView(resolver: resolver)
  129. case .serviceSettings:
  130. ServicesView(resolver: resolver, state: Settings.StateModel())
  131. case .autosensSettings:
  132. AutosensSettings.RootView(resolver: resolver)
  133. case .smbSettings:
  134. SMBSettings.RootView(resolver: resolver)
  135. case .targetBehavior:
  136. TargetBehavoir.RootView(resolver: resolver)
  137. case .algorithmAdvancedSettings:
  138. AlgorithmAdvancedSettings.RootView(resolver: resolver)
  139. case .unitsAndLimits:
  140. UnitsLimitsSettings.RootView(resolver: resolver)
  141. }
  142. }
  143. func modal(resolver: Resolver) -> Main.Modal {
  144. .init(screen: self, view: view(resolver: resolver).asAny())
  145. }
  146. }