TransmitterSetupViewController.swift 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //
  2. // TransmitterSetupViewController.swift
  3. // CGMBLEKitUI
  4. //
  5. // Copyright © 2018 LoopKit Authors. All rights reserved.
  6. //
  7. import UIKit
  8. import LoopKit
  9. import LoopKitUI
  10. import CGMBLEKit
  11. import ShareClient
  12. class TransmitterSetupViewController: UINavigationController, CGMManagerOnboarding, UINavigationControllerDelegate, CompletionNotifying {
  13. class func instantiateFromStoryboard() -> TransmitterSetupViewController {
  14. return UIStoryboard(name: "TransmitterManagerSetup", bundle: Bundle(for: TransmitterSetupViewController.self)).instantiateInitialViewController() as! TransmitterSetupViewController
  15. }
  16. weak var cgmManagerOnboardingDelegate: CGMManagerOnboardingDelegate?
  17. weak var completionDelegate: CompletionDelegate?
  18. var cgmManagerType: TransmitterManager.Type!
  19. override func viewDidLoad() {
  20. super.viewDidLoad()
  21. delegate = self
  22. view.backgroundColor = .systemGroupedBackground
  23. navigationBar.shadowImage = UIImage()
  24. }
  25. func completeSetup(state: TransmitterManagerState) {
  26. if let manager = cgmManagerType.init(state: state) as? CGMManagerUI {
  27. cgmManagerOnboardingDelegate?.cgmManagerOnboarding(didCreateCGMManager: manager)
  28. cgmManagerOnboardingDelegate?.cgmManagerOnboarding(didOnboardCGMManager: manager)
  29. completionDelegate?.completionNotifyingDidComplete(self)
  30. }
  31. }
  32. // MARK: - UINavigationControllerDelegate
  33. func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
  34. // Read state values
  35. let viewControllers = navigationController.viewControllers
  36. let count = navigationController.viewControllers.count
  37. if count >= 2 {
  38. switch viewControllers[count - 2] {
  39. case _ as TransmitterIDSetupViewController:
  40. break
  41. default:
  42. break
  43. }
  44. }
  45. if let setupViewController = viewController as? SetupTableViewController {
  46. setupViewController.delegate = self
  47. }
  48. // Set state values
  49. switch viewController {
  50. case _ as TransmitterIDSetupViewController:
  51. break
  52. default:
  53. break
  54. }
  55. // Adjust the appearance for the main setup view controllers only
  56. if viewController is SetupTableViewController {
  57. navigationBar.isTranslucent = false
  58. navigationBar.shadowImage = UIImage()
  59. } else {
  60. navigationBar.isTranslucent = true
  61. navigationBar.shadowImage = nil
  62. viewController.navigationItem.largeTitleDisplayMode = .never
  63. }
  64. }
  65. func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
  66. // Adjust the appearance for the main setup view controllers only
  67. if viewController is SetupTableViewController {
  68. navigationBar.isTranslucent = false
  69. navigationBar.shadowImage = UIImage()
  70. } else {
  71. navigationBar.isTranslucent = true
  72. navigationBar.shadowImage = nil
  73. }
  74. }
  75. }
  76. extension TransmitterSetupViewController: SetupTableViewControllerDelegate {
  77. public func setupTableViewControllerCancelButtonPressed(_ viewController: SetupTableViewController) {
  78. completionDelegate?.completionNotifyingDidComplete(self)
  79. }
  80. }