Screen.swift 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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 tidepoolConfig
  11. case pumpConfig
  12. case pumpConfigDirect
  13. case basalProfileEditor
  14. case isfEditor
  15. case crEditor
  16. case targetsEditor
  17. case bolus
  18. case manualTempBasal
  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 liveActivityBottomRowSettings
  42. case calendarEventSettings
  43. case contactImage
  44. case serviceSettings
  45. case remoteControlConfig
  46. case autosensSettings
  47. case smbSettings
  48. case targetBehavior
  49. case algorithmAdvancedSettings
  50. case unitsAndLimits
  51. var id: Int { String(reflecting: self).hashValue }
  52. }
  53. extension Screen {
  54. @ViewBuilder func view(resolver: Resolver) -> some View {
  55. switch self {
  56. case .loading:
  57. ProgressView()
  58. case .home:
  59. Home.RootView(resolver: resolver)
  60. case .settings:
  61. Settings.RootView(resolver: resolver)
  62. case let .configEditor(file):
  63. ConfigEditor.RootView(resolver: resolver, file: file)
  64. case .nighscoutConfig:
  65. NightscoutConfig.RootView(resolver: resolver, displayClose: false)
  66. case .nighscoutConfigDirect:
  67. NightscoutConfig.RootView(resolver: resolver, displayClose: true)
  68. case .tidepoolConfig:
  69. TidepoolStartView(resolver: resolver, state: Settings.StateModel())
  70. case .pumpConfig:
  71. PumpConfig.RootView(resolver: resolver, displayClose: false)
  72. case .pumpConfigDirect:
  73. PumpConfig.RootView(resolver: resolver, displayClose: true)
  74. case .basalProfileEditor:
  75. BasalProfileEditor.RootView(resolver: resolver)
  76. case .isfEditor:
  77. ISFEditor.RootView(resolver: resolver)
  78. case .crEditor:
  79. CarbRatioEditor.RootView(resolver: resolver)
  80. case .targetsEditor:
  81. TargetsEditor.RootView(resolver: resolver)
  82. case .bolus:
  83. Treatments.RootView(resolver: resolver)
  84. case .manualTempBasal:
  85. ManualTempBasal.RootView(resolver: resolver)
  86. case .dataTable:
  87. DataTable.RootView(resolver: resolver)
  88. case .cgm:
  89. CGM.RootView(resolver: resolver, displayClose: false)
  90. case .cgmDirect:
  91. CGM.RootView(resolver: resolver, displayClose: true)
  92. case .healthkit:
  93. AppleHealthKit.RootView(resolver: resolver)
  94. case .glucoseNotificationSettings:
  95. GlucoseNotificationSettings.RootView(resolver: resolver)
  96. case .mealSettings:
  97. MealSettings.RootView(resolver: resolver)
  98. case .iconConfig:
  99. IconConfig.RootView(resolver: resolver)
  100. case .overrideConfig:
  101. Adjustments.RootView(resolver: resolver)
  102. case .snooze:
  103. Snooze.RootView(resolver: resolver)
  104. case .watch:
  105. WatchConfig.RootView(resolver: resolver)
  106. case .statistics:
  107. Stat.RootView(resolver: resolver)
  108. case .userInterfaceSettings:
  109. UserInterfaceSettings.RootView(resolver: resolver)
  110. case .bolusCalculatorConfig:
  111. BolusCalculatorConfig.RootView(resolver: resolver)
  112. case .dynamicISF:
  113. DynamicSettings.RootView(resolver: resolver)
  114. case .calibrations:
  115. Calibrations.RootView(resolver: resolver)
  116. case .shortcutsConfig:
  117. ShortcutsConfig.RootView(resolver: resolver)
  118. case .remoteControlConfig:
  119. RemoteControlConfig.RootView(resolver: resolver)
  120. case .devices:
  121. DevicesView(resolver: resolver, state: Settings.StateModel())
  122. case .therapySettings:
  123. TherapySettingsView(resolver: resolver, state: Settings.StateModel())
  124. case .algorithmSettings:
  125. AlgorithmSettings(resolver: resolver, state: Settings.StateModel())
  126. case .featureSettings:
  127. FeatureSettingsView(resolver: resolver, state: Settings.StateModel())
  128. case .notificationSettings:
  129. NotificationsView(resolver: resolver, state: Settings.StateModel())
  130. case .liveActivitySettings:
  131. LiveActivitySettings.RootView(resolver: resolver)
  132. case .liveActivityBottomRowSettings:
  133. LiveActivityWidgetConfiguration(resolver: resolver, state: LiveActivitySettings.StateModel())
  134. case .calendarEventSettings:
  135. CalendarEventSettings.RootView(resolver: resolver)
  136. case .contactImage:
  137. ContactImage.RootView(resolver: resolver)
  138. case .serviceSettings:
  139. ServicesView(resolver: resolver, state: Settings.StateModel())
  140. case .autosensSettings:
  141. AutosensSettings.RootView(resolver: resolver)
  142. case .smbSettings:
  143. SMBSettings.RootView(resolver: resolver)
  144. case .targetBehavior:
  145. TargetBehavoir.RootView(resolver: resolver)
  146. case .algorithmAdvancedSettings:
  147. AlgorithmAdvancedSettings.RootView(resolver: resolver)
  148. case .unitsAndLimits:
  149. UnitsLimitsSettings.RootView(resolver: resolver)
  150. }
  151. }
  152. func modal(resolver: Resolver) -> Main.Modal {
  153. .init(screen: self, view: view(resolver: resolver).asAny())
  154. }
  155. }