MinimedPumpManagerSetupViewController.swift 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. //
  2. // MinimedPumpSetupViewController.swift
  3. // Loop
  4. //
  5. // Copyright © 2018 LoopKit Authors. All rights reserved.
  6. //
  7. import UIKit
  8. import LoopKit
  9. import LoopKitUI
  10. import MinimedKit
  11. import RileyLinkBLEKit
  12. import RileyLinkKit
  13. import RileyLinkKitUI
  14. public class MinimedPumpManagerSetupViewController: RileyLinkManagerSetupViewController {
  15. class func instantiateFromStoryboard() -> MinimedPumpManagerSetupViewController {
  16. return UIStoryboard(name: "MinimedPumpManager", bundle: Bundle(for: MinimedPumpManagerSetupViewController.self)).instantiateInitialViewController() as! MinimedPumpManagerSetupViewController
  17. }
  18. override public func viewDidLoad() {
  19. super.viewDidLoad()
  20. if #available(iOSApplicationExtension 13.0, *) {
  21. view.backgroundColor = .systemBackground
  22. } else {
  23. view.backgroundColor = .white
  24. }
  25. navigationBar.shadowImage = UIImage()
  26. if let pumpIDSetupVC = topViewController as? MinimedPumpIDSetupViewController, let rileyLinkPumpManager = rileyLinkPumpManager {
  27. pumpIDSetupVC.rileyLinkPumpManager = rileyLinkPumpManager
  28. }
  29. }
  30. private(set) var pumpManager: MinimedPumpManager?
  31. internal var insulinType: InsulinType?
  32. /*
  33. 1. RileyLink
  34. - RileyLinkPumpManagerState
  35. 2. Pump
  36. - PumpSettings
  37. - PumpColor
  38. -- Submit --
  39. - PumpOps
  40. - PumpState
  41. 3. (Optional) Connect Devices
  42. 4. Time
  43. 5. Basal Rates & Delivery Limits
  44. 6. Pump Setup Complete
  45. */
  46. override public func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
  47. super.navigationController(navigationController, willShow: viewController, animated: animated)
  48. // Read state values
  49. let viewControllers = navigationController.viewControllers
  50. let count = navigationController.viewControllers.count
  51. if count >= 2 {
  52. switch viewControllers[count - 2] {
  53. case let vc as MinimedPumpIDSetupViewController:
  54. pumpManager = vc.pumpManager
  55. maxBasalRateUnitsPerHour = vc.maxBasalRateUnitsPerHour
  56. maxBolusUnits = vc.maxBolusUnits
  57. basalSchedule = vc.basalSchedule
  58. default:
  59. break
  60. }
  61. }
  62. if let setupViewController = viewController as? SetupTableViewController {
  63. setupViewController.delegate = self
  64. }
  65. // Set state values
  66. switch viewController {
  67. case let vc as MinimedPumpIDSetupViewController:
  68. vc.rileyLinkPumpManager = rileyLinkPumpManager
  69. vc.maxBolusUnits = maxBolusUnits
  70. vc.maxBasalRateUnitsPerHour = maxBasalRateUnitsPerHour
  71. vc.basalSchedule = basalSchedule
  72. case let vc as MinimedPumpSentrySetupViewController:
  73. vc.pumpManager = pumpManager
  74. case is MinimedPumpClockSetupViewController:
  75. break
  76. case let vc as MinimedPumpSetupCompleteViewController:
  77. vc.pumpImage = pumpManager?.state.largePumpImage
  78. default:
  79. break
  80. }
  81. // Adjust the appearance for the main setup view controllers only
  82. if viewController is SetupTableViewController {
  83. navigationBar.isTranslucent = false
  84. navigationBar.shadowImage = UIImage()
  85. } else {
  86. navigationBar.isTranslucent = true
  87. navigationBar.shadowImage = nil
  88. viewController.navigationItem.largeTitleDisplayMode = .never
  89. }
  90. }
  91. public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
  92. // Adjust the appearance for the main setup view controllers only
  93. if viewController is SetupTableViewController {
  94. navigationBar.isTranslucent = false
  95. navigationBar.shadowImage = UIImage()
  96. } else {
  97. navigationBar.isTranslucent = true
  98. navigationBar.shadowImage = nil
  99. }
  100. }
  101. public func pumpManagerSetupComplete(_ pumpManager: PumpManagerUI) {
  102. setupDelegate?.pumpManagerSetupViewController(self, didSetUpPumpManager: pumpManager)
  103. }
  104. override open func finishedSetup() {
  105. if let pumpManager = pumpManager {
  106. let settings = MinimedPumpSettingsViewController(pumpManager: pumpManager)
  107. setViewControllers([settings], animated: true)
  108. }
  109. }
  110. public func finishedSettingsDisplay() {
  111. completionDelegate?.completionNotifyingDidComplete(self)
  112. }
  113. }
  114. extension MinimedPumpManagerSetupViewController: SetupTableViewControllerDelegate {
  115. public func setupTableViewControllerCancelButtonPressed(_ viewController: SetupTableViewController) {
  116. completionDelegate?.completionNotifyingDidComplete(self)
  117. }
  118. }