Screen.swift 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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 healthkit
  22. case glucoseNotificationSettings
  23. case mealSettings
  24. case iconConfig
  25. case overrideConfig
  26. case snooze
  27. case statistics
  28. case watch
  29. case userInterfaceSettings
  30. case bolusCalculatorConfig
  31. case dynamicISF
  32. case calibrations
  33. case shortcutsConfig
  34. case devices
  35. case therapySettings
  36. case algorithmSettings
  37. case featureSettings
  38. case notificationSettings
  39. case liveActivitySettings
  40. case liveActivityBottomRowSettings
  41. case calendarEventSettings
  42. case contactImage
  43. case serviceSettings
  44. case remoteControlConfig
  45. case autosensSettings
  46. case smbSettings
  47. case targetBehavior
  48. case algorithmAdvancedSettings
  49. case unitsAndLimits
  50. var id: Int { String(reflecting: self).hashValue }
  51. }
  52. extension Screen {
  53. @ViewBuilder func view(resolver: Resolver) -> some View {
  54. switch self {
  55. case .loading:
  56. ProgressView()
  57. case .home:
  58. Home.RootView(resolver: resolver)
  59. case .settings:
  60. Settings.RootView(resolver: resolver)
  61. case let .configEditor(file):
  62. ConfigEditor.RootView(resolver: resolver, file: file)
  63. case .nighscoutConfig:
  64. NightscoutConfig.RootView(resolver: resolver, displayClose: false)
  65. case .nighscoutConfigDirect:
  66. NightscoutConfig.RootView(resolver: resolver, displayClose: true)
  67. case .tidepoolConfig:
  68. TidepoolStartView(resolver: resolver, state: Settings.StateModel())
  69. case .pumpConfig:
  70. PumpConfig.RootView(resolver: resolver, displayClose: false)
  71. case .pumpConfigDirect:
  72. PumpConfig.RootView(resolver: resolver, displayClose: true)
  73. case .basalProfileEditor:
  74. BasalProfileEditor.RootView(resolver: resolver)
  75. case .isfEditor:
  76. ISFEditor.RootView(resolver: resolver)
  77. case .crEditor:
  78. CarbRatioEditor.RootView(resolver: resolver)
  79. case .targetsEditor:
  80. TargetsEditor.RootView(resolver: resolver)
  81. case .bolus:
  82. Treatments.RootView(resolver: resolver)
  83. case .manualTempBasal:
  84. ManualTempBasal.RootView(resolver: resolver)
  85. case .dataTable:
  86. DataTable.RootView(resolver: resolver)
  87. case .cgm:
  88. CGMSettings.RootView(resolver: resolver, displayClose: false)
  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. Adjustments.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 .remoteControlConfig:
  116. RemoteControlConfig.RootView(resolver: resolver)
  117. case .devices:
  118. DevicesView(resolver: resolver, state: Settings.StateModel())
  119. case .therapySettings:
  120. TherapySettingsView(resolver: resolver, state: Settings.StateModel())
  121. case .algorithmSettings:
  122. AlgorithmSettings(resolver: resolver, state: Settings.StateModel())
  123. case .featureSettings:
  124. FeatureSettingsView(resolver: resolver, state: Settings.StateModel())
  125. case .notificationSettings:
  126. NotificationsView(resolver: resolver, state: Settings.StateModel())
  127. case .liveActivitySettings:
  128. LiveActivitySettings.RootView(resolver: resolver)
  129. case .liveActivityBottomRowSettings:
  130. LiveActivityWidgetConfiguration(resolver: resolver, state: LiveActivitySettings.StateModel())
  131. case .calendarEventSettings:
  132. CalendarEventSettings.RootView(resolver: resolver)
  133. case .contactImage:
  134. ContactImage.RootView(resolver: resolver)
  135. case .serviceSettings:
  136. ServicesView(resolver: resolver, state: Settings.StateModel())
  137. case .autosensSettings:
  138. AutosensSettings.RootView(resolver: resolver)
  139. case .smbSettings:
  140. SMBSettings.RootView(resolver: resolver)
  141. case .targetBehavior:
  142. TargetBehavoir.RootView(resolver: resolver)
  143. case .algorithmAdvancedSettings:
  144. AlgorithmAdvancedSettings.RootView(resolver: resolver)
  145. case .unitsAndLimits:
  146. UnitsLimitsSettings.RootView(resolver: resolver)
  147. }
  148. }
  149. func modal(resolver: Resolver) -> Main.Modal {
  150. .init(screen: self, view: view(resolver: resolver).asAny())
  151. }
  152. }