OmnipodPumpManagerSetupViewController.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. //
  2. // OmnipodPumpManagerSetupViewController.swift
  3. // OmniKitUI
  4. //
  5. // Created by Pete Schwamb on 8/4/18.
  6. // Copyright © 2018 Pete Schwamb. All rights reserved.
  7. //
  8. import Foundation
  9. import UIKit
  10. import LoopKit
  11. import LoopKitUI
  12. import OmniKit
  13. import RileyLinkBLEKit
  14. import RileyLinkKit
  15. import RileyLinkKitUI
  16. // PumpManagerSetupViewController
  17. public class OmnipodPumpManagerSetupViewController: RileyLinkManagerSetupViewController {
  18. class func instantiateFromStoryboard() -> OmnipodPumpManagerSetupViewController {
  19. return UIStoryboard(name: "OmnipodPumpManager", bundle: Bundle(for: OmnipodPumpManagerSetupViewController.self)).instantiateInitialViewController() as! OmnipodPumpManagerSetupViewController
  20. }
  21. override public func viewDidLoad() {
  22. super.viewDidLoad()
  23. if #available(iOSApplicationExtension 13.0, *) {
  24. view.backgroundColor = .systemBackground
  25. } else {
  26. view.backgroundColor = .white
  27. }
  28. navigationBar.shadowImage = UIImage()
  29. if let omnipodPairingViewController = topViewController as? PairPodSetupViewController, let rileyLinkPumpManager = rileyLinkPumpManager {
  30. omnipodPairingViewController.rileyLinkPumpManager = rileyLinkPumpManager
  31. }
  32. }
  33. private(set) var pumpManager: OmnipodPumpManager?
  34. internal var insulinType: InsulinType?
  35. /*
  36. 1. RileyLink
  37. - RileyLinkPumpManagerState
  38. 2. Basal Rates & Delivery Limits
  39. 3. Pod Pairing/Priming
  40. 4. Cannula Insertion
  41. 5. Pod Setup Complete
  42. */
  43. override public func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
  44. super.navigationController(navigationController, willShow: viewController, animated: animated)
  45. // Read state values
  46. let viewControllers = navigationController.viewControllers
  47. let count = navigationController.viewControllers.count
  48. if count >= 2 {
  49. switch viewControllers[count - 2] {
  50. case let vc as PairPodSetupViewController:
  51. pumpManager = vc.pumpManager
  52. default:
  53. break
  54. }
  55. }
  56. if let setupViewController = viewController as? SetupTableViewController {
  57. setupViewController.delegate = self
  58. }
  59. // Set state values
  60. switch viewController {
  61. case let vc as PairPodSetupViewController:
  62. vc.rileyLinkPumpManager = rileyLinkPumpManager
  63. if let deviceProvider = rileyLinkPumpManager?.rileyLinkDeviceProvider, let basalSchedule = basalSchedule, let insulinType = insulinType {
  64. let connectionManagerState = rileyLinkPumpManager?.rileyLinkConnectionManagerState
  65. let schedule = BasalSchedule(repeatingScheduleValues: basalSchedule.items)
  66. let pumpManagerState = OmnipodPumpManagerState(podState: nil, timeZone: .currentFixed, basalSchedule: schedule, rileyLinkConnectionManagerState: connectionManagerState, insulinType: insulinType)
  67. let pumpManager = OmnipodPumpManager(
  68. state: pumpManagerState,
  69. rileyLinkDeviceProvider: deviceProvider,
  70. rileyLinkConnectionManager: rileyLinkPumpManager?.rileyLinkConnectionManager)
  71. vc.pumpManager = pumpManager
  72. setupDelegate?.pumpManagerSetupViewController(self, didSetUpPumpManager: pumpManager)
  73. }
  74. case let vc as InsertCannulaSetupViewController:
  75. vc.pumpManager = pumpManager
  76. case let vc as PodSetupCompleteViewController:
  77. vc.pumpManager = pumpManager
  78. default:
  79. break
  80. }
  81. }
  82. override open func finishedSetup() {
  83. if let pumpManager = pumpManager {
  84. let settings = OmnipodSettingsViewController(pumpManager: pumpManager)
  85. setViewControllers([settings], animated: true)
  86. }
  87. }
  88. public func finishedSettingsDisplay() {
  89. completionDelegate?.completionNotifyingDidComplete(self)
  90. }
  91. }
  92. extension OmnipodPumpManagerSetupViewController: SetupTableViewControllerDelegate {
  93. public func setupTableViewControllerCancelButtonPressed(_ viewController: SetupTableViewController) {
  94. completionDelegate?.completionNotifyingDidComplete(self)
  95. }
  96. }