Ivan Valkou 5 лет назад
Родитель
Сommit
3644acce41
23 измененных файлов с 288 добавлено и 0 удалено
  1. 144 0
      FreeAPS.xcodeproj/project.pbxproj
  2. 3 0
      FreeAPS/Sources/Modules/CREditor/CREditorBuilder.swift
  3. 5 0
      FreeAPS/Sources/Modules/CREditor/CREditorDataFlow.swift
  4. 3 0
      FreeAPS/Sources/Modules/CREditor/CREditorProvider.swift
  5. 7 0
      FreeAPS/Sources/Modules/CREditor/CREditorViewModel.swift
  6. 14 0
      FreeAPS/Sources/Modules/CREditor/View/CREditorRootView.swift
  7. 3 0
      FreeAPS/Sources/Modules/ISFEditor/ISFEditorBuilder.swift
  8. 5 0
      FreeAPS/Sources/Modules/ISFEditor/ISFEditorDataFlow.swift
  9. 3 0
      FreeAPS/Sources/Modules/ISFEditor/ISFEditorProvider.swift
  10. 7 0
      FreeAPS/Sources/Modules/ISFEditor/ISFEditorViewModel.swift
  11. 14 0
      FreeAPS/Sources/Modules/ISFEditor/View/ISFEditorRootView.swift
  12. 3 0
      FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorBuilder.swift
  13. 5 0
      FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorDataFlow.swift
  14. 3 0
      FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorProvider.swift
  15. 7 0
      FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorViewModel.swift
  16. 14 0
      FreeAPS/Sources/Modules/PreferencesEditor/View/PreferencesEditorRootView.swift
  17. 4 0
      FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift
  18. 3 0
      FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorBuilder.swift
  19. 5 0
      FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorDataFlow.swift
  20. 3 0
      FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorProvider.swift
  21. 7 0
      FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorViewModel.swift
  22. 14 0
      FreeAPS/Sources/Modules/TargetsEditor/View/TargetsEditorRootView.swift
  23. 12 0
      FreeAPS/Sources/Router/Screen.swift

+ 144 - 0
FreeAPS.xcodeproj/project.pbxproj

@@ -7,6 +7,8 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		17A9D0899046B45E87834820 /* CREditorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C8D5F457B5AFF763F8CF3DF /* CREditorProvider.swift */; };
+		1BBB001DAD60F3B8CEA4B1C7 /* ISFEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 505E09DC17A0C3D0AF4B66FE /* ISFEditorViewModel.swift */; };
 		1D086541F369D339A74893AC /* BasalProfileEditorBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BA56D2DCAB9E0A8AF24D984 /* BasalProfileEditorBuilder.swift */; };
 		25548F1F0AA8E42FF5F96DBA /* PumpSettingsEditorBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10CAE3534904CDCA0F367017 /* PumpSettingsEditorBuilder.swift */; };
 		2BE9A6FA20875F6F4F9CD461 /* PumpSettingsEditorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D97F14812C1AFED3621165A5 /* PumpSettingsEditorProvider.swift */; };
@@ -161,26 +163,44 @@
 		38FCF3FD25E997A80078B0D1 /* PumpHistoryStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FCF3FC25E997A80078B0D1 /* PumpHistoryStorage.swift */; };
 		38FE826A25CC82DB001FF17A /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FE826925CC82DB001FF17A /* NetworkService.swift */; };
 		38FE826D25CC8461001FF17A /* NightscoutAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FE826C25CC8461001FF17A /* NightscoutAPI.swift */; };
+		3BD663A04B4CA5278B0260B4 /* CREditorBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42BA004367A6998F8AFC1A0F /* CREditorBuilder.swift */; };
+		44190F0BBA464D74B857D1FB /* PreferencesEditorRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A965332F237348B119FB858 /* PreferencesEditorRootView.swift */; };
 		448B6FCB252BD4796E2960C0 /* PumpSettingsEditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0274EE6439B1C3ED70730D41 /* PumpSettingsEditorDataFlow.swift */; };
 		45252C95D220E796FDB3B022 /* ConfigEditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F8A87AA037BD079BA3528BA /* ConfigEditorDataFlow.swift */; };
 		45717281F743594AA9D87191 /* ConfigEditorRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 920DDB21E5D0EB813197500D /* ConfigEditorRootView.swift */; };
+		5075C1608E6249A51495C422 /* TargetsEditorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDEA2DC60EDE0A3CA54DC73 /* TargetsEditorProvider.swift */; };
 		53F2382465BF74DB1A967C8B /* PumpConfigProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8630D58BDAD6D9C650B9B39 /* PumpConfigProvider.swift */; };
 		5D16287A969E64D18CE40E44 /* PumpConfigViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F60E97100041040446F44E7 /* PumpConfigViewModel.swift */; };
 		63E890B4D951EAA91C071D5C /* BasalProfileEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAFF91130F2FCCC7EBBA11AD /* BasalProfileEditorViewModel.swift */; };
 		642F76A05A4FF530463A9FD0 /* NightscoutConfigRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8782B44544F38F2B2D82C38E /* NightscoutConfigRootView.swift */; };
+		6632A0DC746872439A858B44 /* ISFEditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79BDA519C9B890FD9A5DFCF3 /* ISFEditorDataFlow.swift */; };
+		69B9A368029F7EB39F525422 /* CREditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AA5E04A2761F6EEA6568E1 /* CREditorViewModel.swift */; };
 		6B9625766B697D1C98E455A2 /* PumpSettingsEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72778B68C3004F71F6E79BDC /* PumpSettingsEditorViewModel.swift */; };
 		72F1BD388F42FCA6C52E4500 /* ConfigEditorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44080E4709E3AE4B73054563 /* ConfigEditorProvider.swift */; };
+		7F7017AA5C69838FB7E6FECE /* TargetsEditorBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3409A5984BB4171EC484266B /* TargetsEditorBuilder.swift */; };
+		88AB39B23C9552BD6E0C9461 /* ISFEditorRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBB3BAE7494CB771ABAC7B8B /* ISFEditorRootView.swift */; };
 		8B759CFCF47B392BB365C251 /* BasalProfileEditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F94DD2853CF42BA4E30616 /* BasalProfileEditorDataFlow.swift */; };
+		9702FF92A09C53942F20D7EA /* TargetsEditorRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DD795BA46B193644D48138C /* TargetsEditorRootView.swift */; };
+		97C1388354C7133C1D5ED72A /* PreferencesEditorBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = E08D9D69E5B052E5C9E8BD32 /* PreferencesEditorBuilder.swift */; };
 		9825E5E923F0B8FA80C8C7C7 /* NightscoutConfigViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0A48AE3AC813A49A517846A /* NightscoutConfigViewModel.swift */; };
+		98641AF4F92123DA668AB931 /* CREditorRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BDC6993C1087310EDFC428 /* CREditorRootView.swift */; };
 		A0B8EC8CC5CD1DD237D1BCD2 /* PumpSettingsEditorRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8C7F882606FF83A21BE00D8 /* PumpSettingsEditorRootView.swift */; };
+		A228DF96647338139F152B15 /* PreferencesEditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12204445D7632AF09264A979 /* PreferencesEditorDataFlow.swift */; };
+		A33352ED40476125EBAC6EE0 /* CREditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E22146D3DF4853786C78132 /* CREditorDataFlow.swift */; };
 		AD3D2CD42CD01B9EB8F26522 /* PumpConfigDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF65DA88F972B56090AD6AC3 /* PumpConfigDataFlow.swift */; };
 		BD2B464E0745FBE7B79913F4 /* NightscoutConfigProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BF768BD6264FF7D71D66767 /* NightscoutConfigProvider.swift */; };
 		CA370FC152BC98B3D1832968 /* BasalProfileEditorRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8BCB0C37DEB5EC377B9612 /* BasalProfileEditorRootView.swift */; };
 		CDB87FA71A93F3739D3D338E /* NightscoutConfigBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111579A6E3AC6BFA79C4DD43 /* NightscoutConfigBuilder.swift */; };
 		D6DEC113821A7F1056C4AA1E /* NightscoutConfigDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F2A13DF0EDEEEDC4106AA2A /* NightscoutConfigDataFlow.swift */; };
+		DBA5254DBB2586C98F61220C /* ISFEditorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F9F137F126D9F8DEB799F26 /* ISFEditorProvider.swift */; };
+		DD399FB31EACB9343C944C4C /* PreferencesEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CA3E609094E064C99A4752C /* PreferencesEditorViewModel.swift */; };
 		E102DE9C3E9C8AEDCB3C61BB /* ConfigEditorBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = E492D5B2EEF2119977EA2CE4 /* ConfigEditorBuilder.swift */; };
+		E13B7DAB2A435F57066AF02E /* TargetsEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36F58DDD71F0E795464FA3F0 /* TargetsEditorViewModel.swift */; };
 		E39E418C56A5A46B61D960EE /* ConfigEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D5B4F8B4194BB7E260EF251 /* ConfigEditorViewModel.swift */; };
+		E4984C5262A90469788754BB /* PreferencesEditorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F8BA8533F56BC55748CA877 /* PreferencesEditorProvider.swift */; };
 		E974172296125A5AE99E634C /* PumpConfigRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AD22C985B79A2F0D2EA3D9D /* PumpConfigRootView.swift */; };
+		F215CAB49BA4B5A01C3BC6B6 /* ISFEditorBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3239D795F77DEB5676F9427A /* ISFEditorBuilder.swift */; };
+		F5F7E6C1B7F098F59EB67EC5 /* TargetsEditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA49538D56989D8DA6FCF538 /* TargetsEditorDataFlow.swift */; };
 		FA630397F76B582C8D8681A7 /* BasalProfileEditorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42369F66CF91F30624C0B3A6 /* BasalProfileEditorProvider.swift */; };
 /* End PBXBuildFile section */
 
@@ -561,10 +581,15 @@
 
 /* Begin PBXFileReference section */
 		0274EE6439B1C3ED70730D41 /* PumpSettingsEditorDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpSettingsEditorDataFlow.swift; sourceTree = "<group>"; };
+		0CA3E609094E064C99A4752C /* PreferencesEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreferencesEditorViewModel.swift; sourceTree = "<group>"; };
 		10CAE3534904CDCA0F367017 /* PumpSettingsEditorBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpSettingsEditorBuilder.swift; sourceTree = "<group>"; };
 		111579A6E3AC6BFA79C4DD43 /* NightscoutConfigBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NightscoutConfigBuilder.swift; sourceTree = "<group>"; };
+		12204445D7632AF09264A979 /* PreferencesEditorDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreferencesEditorDataFlow.swift; sourceTree = "<group>"; };
 		2AD22C985B79A2F0D2EA3D9D /* PumpConfigRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpConfigRootView.swift; sourceTree = "<group>"; };
 		2F2A13DF0EDEEEDC4106AA2A /* NightscoutConfigDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NightscoutConfigDataFlow.swift; sourceTree = "<group>"; };
+		3239D795F77DEB5676F9427A /* ISFEditorBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ISFEditorBuilder.swift; sourceTree = "<group>"; };
+		3409A5984BB4171EC484266B /* TargetsEditorBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TargetsEditorBuilder.swift; sourceTree = "<group>"; };
+		36F58DDD71F0E795464FA3F0 /* TargetsEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TargetsEditorViewModel.swift; sourceTree = "<group>"; };
 		3811DE0525C9D32E00A708ED /* BaseViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseViewModel.swift; sourceTree = "<group>"; };
 		3811DE0625C9D32E00A708ED /* BaseModuleBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseModuleBuilder.swift; sourceTree = "<group>"; };
 		3811DE0725C9D32E00A708ED /* BaseView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseView.swift; sourceTree = "<group>"; };
@@ -687,26 +712,41 @@
 		38FCF3FC25E997A80078B0D1 /* PumpHistoryStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpHistoryStorage.swift; sourceTree = "<group>"; };
 		38FE826925CC82DB001FF17A /* NetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = "<group>"; };
 		38FE826C25CC8461001FF17A /* NightscoutAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NightscoutAPI.swift; sourceTree = "<group>"; };
+		3BDEA2DC60EDE0A3CA54DC73 /* TargetsEditorProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TargetsEditorProvider.swift; sourceTree = "<group>"; };
 		3BF768BD6264FF7D71D66767 /* NightscoutConfigProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NightscoutConfigProvider.swift; sourceTree = "<group>"; };
 		3F60E97100041040446F44E7 /* PumpConfigViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpConfigViewModel.swift; sourceTree = "<group>"; };
 		3F8A87AA037BD079BA3528BA /* ConfigEditorDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConfigEditorDataFlow.swift; sourceTree = "<group>"; };
 		42369F66CF91F30624C0B3A6 /* BasalProfileEditorProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BasalProfileEditorProvider.swift; sourceTree = "<group>"; };
+		42BA004367A6998F8AFC1A0F /* CREditorBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CREditorBuilder.swift; sourceTree = "<group>"; };
 		44080E4709E3AE4B73054563 /* ConfigEditorProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConfigEditorProvider.swift; sourceTree = "<group>"; };
+		4DD795BA46B193644D48138C /* TargetsEditorRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TargetsEditorRootView.swift; sourceTree = "<group>"; };
+		505E09DC17A0C3D0AF4B66FE /* ISFEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ISFEditorViewModel.swift; sourceTree = "<group>"; };
 		5D5B4F8B4194BB7E260EF251 /* ConfigEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConfigEditorViewModel.swift; sourceTree = "<group>"; };
+		64AA5E04A2761F6EEA6568E1 /* CREditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CREditorViewModel.swift; sourceTree = "<group>"; };
 		67F94DD2853CF42BA4E30616 /* BasalProfileEditorDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BasalProfileEditorDataFlow.swift; sourceTree = "<group>"; };
 		6BA56D2DCAB9E0A8AF24D984 /* BasalProfileEditorBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BasalProfileEditorBuilder.swift; sourceTree = "<group>"; };
+		6F8BA8533F56BC55748CA877 /* PreferencesEditorProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreferencesEditorProvider.swift; sourceTree = "<group>"; };
 		72778B68C3004F71F6E79BDC /* PumpSettingsEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpSettingsEditorViewModel.swift; sourceTree = "<group>"; };
+		79BDA519C9B890FD9A5DFCF3 /* ISFEditorDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ISFEditorDataFlow.swift; sourceTree = "<group>"; };
+		7E22146D3DF4853786C78132 /* CREditorDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CREditorDataFlow.swift; sourceTree = "<group>"; };
 		8782B44544F38F2B2D82C38E /* NightscoutConfigRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NightscoutConfigRootView.swift; sourceTree = "<group>"; };
+		8A965332F237348B119FB858 /* PreferencesEditorRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreferencesEditorRootView.swift; sourceTree = "<group>"; };
 		920DDB21E5D0EB813197500D /* ConfigEditorRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConfigEditorRootView.swift; sourceTree = "<group>"; };
+		9C8D5F457B5AFF763F8CF3DF /* CREditorProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CREditorProvider.swift; sourceTree = "<group>"; };
+		9F9F137F126D9F8DEB799F26 /* ISFEditorProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ISFEditorProvider.swift; sourceTree = "<group>"; };
 		A0A48AE3AC813A49A517846A /* NightscoutConfigViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NightscoutConfigViewModel.swift; sourceTree = "<group>"; };
 		A8630D58BDAD6D9C650B9B39 /* PumpConfigProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpConfigProvider.swift; sourceTree = "<group>"; };
 		AAFF91130F2FCCC7EBBA11AD /* BasalProfileEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BasalProfileEditorViewModel.swift; sourceTree = "<group>"; };
 		AF65DA88F972B56090AD6AC3 /* PumpConfigDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpConfigDataFlow.swift; sourceTree = "<group>"; };
 		B8C7F882606FF83A21BE00D8 /* PumpSettingsEditorRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpSettingsEditorRootView.swift; sourceTree = "<group>"; };
+		BA49538D56989D8DA6FCF538 /* TargetsEditorDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TargetsEditorDataFlow.swift; sourceTree = "<group>"; };
 		BF8BCB0C37DEB5EC377B9612 /* BasalProfileEditorRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BasalProfileEditorRootView.swift; sourceTree = "<group>"; };
+		D0BDC6993C1087310EDFC428 /* CREditorRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CREditorRootView.swift; sourceTree = "<group>"; };
 		D97F14812C1AFED3621165A5 /* PumpSettingsEditorProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpSettingsEditorProvider.swift; sourceTree = "<group>"; };
 		E01C416A0792696C6911C1D7 /* PumpConfigBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpConfigBuilder.swift; sourceTree = "<group>"; };
+		E08D9D69E5B052E5C9E8BD32 /* PreferencesEditorBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreferencesEditorBuilder.swift; sourceTree = "<group>"; };
 		E492D5B2EEF2119977EA2CE4 /* ConfigEditorBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConfigEditorBuilder.swift; sourceTree = "<group>"; };
+		FBB3BAE7494CB771ABAC7B8B /* ISFEditorRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ISFEditorRootView.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -768,6 +808,14 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		34CA4DF169B53D67EF18ED8A /* View */ = {
+			isa = PBXGroup;
+			children = (
+				4DD795BA46B193644D48138C /* TargetsEditorRootView.swift */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
 		3811DE0325C9D31700A708ED /* Modules */ = {
 			isa = PBXGroup;
 			children = (
@@ -775,15 +823,19 @@
 				A42F1FEDFFD0DDE00AAD54D3 /* BasalProfileEditor */,
 				3811DE0425C9D32E00A708ED /* Base */,
 				0610F7D6D2EC00E3BA1569F0 /* ConfigEditor */,
+				E42231DBF0DBE2B4B92D1B15 /* CREditor */,
 				3811DE2725C9D49500A708ED /* Home */,
+				D8F047E14D567F2B5DBEFD96 /* ISFEditor */,
 				3811DE7025C9D6D300A708ED /* Login */,
 				3811DE1A25C9D48300A708ED /* Main */,
 				D533BF261CDC1C3F871E7BFD /* NightscoutConfig */,
 				3811DE6325C9D62600A708ED /* Onboarding */,
+				3E1C41D9301B7058AA7BF5EA /* PreferencesEditor */,
 				99C01B871ACAB3F32CE755C7 /* PumpConfig */,
 				E493126EA71765130F64CCE5 /* PumpSettingsEditor */,
 				3811DE8125C9D6DD00A708ED /* RequestPermissions */,
 				3811DE3825C9D4A100A708ED /* Settings */,
+				6517011F19F244F64E1FF14B /* TargetsEditor */,
 			);
 			path = Modules;
 			sourceTree = "<group>";
@@ -1310,6 +1362,18 @@
 			path = FreeAPSTests;
 			sourceTree = "<group>";
 		};
+		3E1C41D9301B7058AA7BF5EA /* PreferencesEditor */ = {
+			isa = PBXGroup;
+			children = (
+				E08D9D69E5B052E5C9E8BD32 /* PreferencesEditorBuilder.swift */,
+				12204445D7632AF09264A979 /* PreferencesEditorDataFlow.swift */,
+				6F8BA8533F56BC55748CA877 /* PreferencesEditorProvider.swift */,
+				0CA3E609094E064C99A4752C /* PreferencesEditorViewModel.swift */,
+				833DA2F9E47E64E305F92F9D /* View */,
+			);
+			path = PreferencesEditor;
+			sourceTree = "<group>";
+		};
 		4E8C7B59F8065047ECE20965 /* View */ = {
 			isa = PBXGroup;
 			children = (
@@ -1336,6 +1400,14 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		54946647FDCFE43028F60511 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				D0BDC6993C1087310EDFC428 /* CREditorRootView.swift */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
 		64271A287C92581EADCB47FA /* View */ = {
 			isa = PBXGroup;
 			children = (
@@ -1344,6 +1416,26 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		6517011F19F244F64E1FF14B /* TargetsEditor */ = {
+			isa = PBXGroup;
+			children = (
+				3409A5984BB4171EC484266B /* TargetsEditorBuilder.swift */,
+				BA49538D56989D8DA6FCF538 /* TargetsEditorDataFlow.swift */,
+				3BDEA2DC60EDE0A3CA54DC73 /* TargetsEditorProvider.swift */,
+				36F58DDD71F0E795464FA3F0 /* TargetsEditorViewModel.swift */,
+				34CA4DF169B53D67EF18ED8A /* View */,
+			);
+			path = TargetsEditor;
+			sourceTree = "<group>";
+		};
+		833DA2F9E47E64E305F92F9D /* View */ = {
+			isa = PBXGroup;
+			children = (
+				8A965332F237348B119FB858 /* PreferencesEditorRootView.swift */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
 		99C01B871ACAB3F32CE755C7 /* PumpConfig */ = {
 			isa = PBXGroup;
 			children = (
@@ -1380,6 +1472,30 @@
 			path = NightscoutConfig;
 			sourceTree = "<group>";
 		};
+		D8F047E14D567F2B5DBEFD96 /* ISFEditor */ = {
+			isa = PBXGroup;
+			children = (
+				3239D795F77DEB5676F9427A /* ISFEditorBuilder.swift */,
+				79BDA519C9B890FD9A5DFCF3 /* ISFEditorDataFlow.swift */,
+				9F9F137F126D9F8DEB799F26 /* ISFEditorProvider.swift */,
+				505E09DC17A0C3D0AF4B66FE /* ISFEditorViewModel.swift */,
+				EEC747824D6593B5CD87E195 /* View */,
+			);
+			path = ISFEditor;
+			sourceTree = "<group>";
+		};
+		E42231DBF0DBE2B4B92D1B15 /* CREditor */ = {
+			isa = PBXGroup;
+			children = (
+				42BA004367A6998F8AFC1A0F /* CREditorBuilder.swift */,
+				7E22146D3DF4853786C78132 /* CREditorDataFlow.swift */,
+				9C8D5F457B5AFF763F8CF3DF /* CREditorProvider.swift */,
+				64AA5E04A2761F6EEA6568E1 /* CREditorViewModel.swift */,
+				54946647FDCFE43028F60511 /* View */,
+			);
+			path = CREditor;
+			sourceTree = "<group>";
+		};
 		E493126EA71765130F64CCE5 /* PumpSettingsEditor */ = {
 			isa = PBXGroup;
 			children = (
@@ -1392,6 +1508,14 @@
 			path = PumpSettingsEditor;
 			sourceTree = "<group>";
 		};
+		EEC747824D6593B5CD87E195 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				FBB3BAE7494CB771ABAC7B8B /* ISFEditorRootView.swift */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
@@ -1914,6 +2038,26 @@
 				FA630397F76B582C8D8681A7 /* BasalProfileEditorProvider.swift in Sources */,
 				63E890B4D951EAA91C071D5C /* BasalProfileEditorViewModel.swift in Sources */,
 				CA370FC152BC98B3D1832968 /* BasalProfileEditorRootView.swift in Sources */,
+				F215CAB49BA4B5A01C3BC6B6 /* ISFEditorBuilder.swift in Sources */,
+				6632A0DC746872439A858B44 /* ISFEditorDataFlow.swift in Sources */,
+				DBA5254DBB2586C98F61220C /* ISFEditorProvider.swift in Sources */,
+				1BBB001DAD60F3B8CEA4B1C7 /* ISFEditorViewModel.swift in Sources */,
+				88AB39B23C9552BD6E0C9461 /* ISFEditorRootView.swift in Sources */,
+				3BD663A04B4CA5278B0260B4 /* CREditorBuilder.swift in Sources */,
+				A33352ED40476125EBAC6EE0 /* CREditorDataFlow.swift in Sources */,
+				17A9D0899046B45E87834820 /* CREditorProvider.swift in Sources */,
+				69B9A368029F7EB39F525422 /* CREditorViewModel.swift in Sources */,
+				98641AF4F92123DA668AB931 /* CREditorRootView.swift in Sources */,
+				7F7017AA5C69838FB7E6FECE /* TargetsEditorBuilder.swift in Sources */,
+				F5F7E6C1B7F098F59EB67EC5 /* TargetsEditorDataFlow.swift in Sources */,
+				5075C1608E6249A51495C422 /* TargetsEditorProvider.swift in Sources */,
+				E13B7DAB2A435F57066AF02E /* TargetsEditorViewModel.swift in Sources */,
+				9702FF92A09C53942F20D7EA /* TargetsEditorRootView.swift in Sources */,
+				97C1388354C7133C1D5ED72A /* PreferencesEditorBuilder.swift in Sources */,
+				A228DF96647338139F152B15 /* PreferencesEditorDataFlow.swift in Sources */,
+				E4984C5262A90469788754BB /* PreferencesEditorProvider.swift in Sources */,
+				DD399FB31EACB9343C944C4C /* PreferencesEditorViewModel.swift in Sources */,
+				44190F0BBA464D74B857D1FB /* PreferencesEditorRootView.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 3 - 0
FreeAPS/Sources/Modules/CREditor/CREditorBuilder.swift

@@ -0,0 +1,3 @@
+extension CREditor {
+    final class Builder: BaseModuleBuilder<RootView, ViewModel<Provider>, Provider> {}
+}

+ 5 - 0
FreeAPS/Sources/Modules/CREditor/CREditorDataFlow.swift

@@ -0,0 +1,5 @@
+enum CREditor {
+    enum Config {}
+}
+
+protocol CREditorProvider: Provider {}

+ 3 - 0
FreeAPS/Sources/Modules/CREditor/CREditorProvider.swift

@@ -0,0 +1,3 @@
+extension CREditor {
+    final class Provider: BaseProvider, CREditorProvider {}
+}

+ 7 - 0
FreeAPS/Sources/Modules/CREditor/CREditorViewModel.swift

@@ -0,0 +1,7 @@
+import SwiftUI
+
+extension CREditor {
+    class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: CREditorProvider {
+        override func subscribe() {}
+    }
+}

+ 14 - 0
FreeAPS/Sources/Modules/CREditor/View/CREditorRootView.swift

@@ -0,0 +1,14 @@
+import SwiftUI
+
+extension CREditor {
+    struct RootView: BaseView {
+        @EnvironmentObject var viewModel: ViewModel<Provider>
+
+        var body: some View {
+            Text("CREditor screen")
+                .navigationTitle("CREditor")
+                .navigationBarTitleDisplayMode(.automatic)
+                .navigationBarItems(leading: Button("Close", action: viewModel.hideModal))
+        }
+    }
+}

+ 3 - 0
FreeAPS/Sources/Modules/ISFEditor/ISFEditorBuilder.swift

@@ -0,0 +1,3 @@
+extension ISFEditor {
+    final class Builder: BaseModuleBuilder<RootView, ViewModel<Provider>, Provider> {}
+}

+ 5 - 0
FreeAPS/Sources/Modules/ISFEditor/ISFEditorDataFlow.swift

@@ -0,0 +1,5 @@
+enum ISFEditor {
+    enum Config {}
+}
+
+protocol ISFEditorProvider: Provider {}

+ 3 - 0
FreeAPS/Sources/Modules/ISFEditor/ISFEditorProvider.swift

@@ -0,0 +1,3 @@
+extension ISFEditor {
+    final class Provider: BaseProvider, ISFEditorProvider {}
+}

+ 7 - 0
FreeAPS/Sources/Modules/ISFEditor/ISFEditorViewModel.swift

@@ -0,0 +1,7 @@
+import SwiftUI
+
+extension ISFEditor {
+    class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: ISFEditorProvider {
+        override func subscribe() {}
+    }
+}

+ 14 - 0
FreeAPS/Sources/Modules/ISFEditor/View/ISFEditorRootView.swift

@@ -0,0 +1,14 @@
+import SwiftUI
+
+extension ISFEditor {
+    struct RootView: BaseView {
+        @EnvironmentObject var viewModel: ViewModel<Provider>
+
+        var body: some View {
+            Text("ISFEditor screen")
+                .navigationTitle("ISFEditor")
+                .navigationBarTitleDisplayMode(.automatic)
+                .navigationBarItems(leading: Button("Close", action: viewModel.hideModal))
+        }
+    }
+}

+ 3 - 0
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorBuilder.swift

@@ -0,0 +1,3 @@
+extension PreferencesEditor {
+    final class Builder: BaseModuleBuilder<RootView, ViewModel<Provider>, Provider> {}
+}

+ 5 - 0
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorDataFlow.swift

@@ -0,0 +1,5 @@
+enum PreferencesEditor {
+    enum Config {}
+}
+
+protocol PreferencesEditorProvider: Provider {}

+ 3 - 0
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorProvider.swift

@@ -0,0 +1,3 @@
+extension PreferencesEditor {
+    final class Provider: BaseProvider, PreferencesEditorProvider {}
+}

+ 7 - 0
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorViewModel.swift

@@ -0,0 +1,7 @@
+import SwiftUI
+
+extension PreferencesEditor {
+    class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: PreferencesEditorProvider {
+        override func subscribe() {}
+    }
+}

+ 14 - 0
FreeAPS/Sources/Modules/PreferencesEditor/View/PreferencesEditorRootView.swift

@@ -0,0 +1,14 @@
+import SwiftUI
+
+extension PreferencesEditor {
+    struct RootView: BaseView {
+        @EnvironmentObject var viewModel: ViewModel<Provider>
+
+        var body: some View {
+            Text("PreferencesEditor screen")
+                .navigationTitle("PreferencesEditor")
+                .navigationBarTitleDisplayMode(.automatic)
+                .navigationBarItems(leading: Button("Close", action: viewModel.hideModal))
+        }
+    }
+}

+ 4 - 0
FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift

@@ -17,6 +17,10 @@ extension Settings {
                 Section(header: Text("Configuration")) {
                     Text("Pump settings").chevronCell().modal(for: .pumpSettingsEditor, from: self)
                     Text("Basal settings").chevronCell().modal(for: .basalProfileEditor, from: self)
+                    Text("Insulin Sensitivities").chevronCell().modal(for: .isfEditor, from: self)
+                    Text("Carb Ratios").chevronCell().modal(for: .crEditor, from: self)
+                    Text("Targets").chevronCell().modal(for: .targetsEditor, from: self)
+                    Text("Preferences").chevronCell().modal(for: .preferencesEditor, from: self)
                 }
 
                 Section(header: Text("Config files")) {

+ 3 - 0
FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorBuilder.swift

@@ -0,0 +1,3 @@
+extension TargetsEditor {
+    final class Builder: BaseModuleBuilder<RootView, ViewModel<Provider>, Provider> {}
+}

+ 5 - 0
FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorDataFlow.swift

@@ -0,0 +1,5 @@
+enum TargetsEditor {
+    enum Config {}
+}
+
+protocol TargetsEditorProvider: Provider {}

+ 3 - 0
FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorProvider.swift

@@ -0,0 +1,3 @@
+extension TargetsEditor {
+    final class Provider: BaseProvider, TargetsEditorProvider {}
+}

+ 7 - 0
FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorViewModel.swift

@@ -0,0 +1,7 @@
+import SwiftUI
+
+extension TargetsEditor {
+    class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: TargetsEditorProvider {
+        override func subscribe() {}
+    }
+}

+ 14 - 0
FreeAPS/Sources/Modules/TargetsEditor/View/TargetsEditorRootView.swift

@@ -0,0 +1,14 @@
+import SwiftUI
+
+extension TargetsEditor {
+    struct RootView: BaseView {
+        @EnvironmentObject var viewModel: ViewModel<Provider>
+
+        var body: some View {
+            Text("TargetsEditor screen")
+                .navigationTitle("TargetsEditor")
+                .navigationBarTitleDisplayMode(.automatic)
+                .navigationBarItems(leading: Button("Close", action: viewModel.hideModal))
+        }
+    }
+}

+ 12 - 0
FreeAPS/Sources/Router/Screen.swift

@@ -13,6 +13,10 @@ enum Screen: Identifiable {
     case pumpConfig
     case pumpSettingsEditor
     case basalProfileEditor
+    case isfEditor
+    case crEditor
+    case targetsEditor
+    case preferencesEditor
 
     var id: Int { String(reflecting: self).hashValue }
 }
@@ -42,6 +46,14 @@ extension Screen {
             return PumpSettingsEditor.Builder(resolver: resolver).buildView()
         case .basalProfileEditor:
             return BasalProfileEditor.Builder(resolver: resolver).buildView()
+        case .isfEditor:
+            return ISFEditor.Builder(resolver: resolver).buildView()
+        case .crEditor:
+            return CREditor.Builder(resolver: resolver).buildView()
+        case .targetsEditor:
+            return TargetsEditor.Builder(resolver: resolver).buildView()
+        case .preferencesEditor:
+            return PreferencesEditor.Builder(resolver: resolver).buildView()
         }
     }