| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- //
- // MockHUDProvider.swift
- // MockKitUI
- //
- // Created by Michael Pangburn on 3/5/19.
- // Copyright © 2019 LoopKit Authors. All rights reserved.
- //
- import LoopKit
- import LoopKitUI
- import MockKit
- import Foundation
- final class MockHUDProvider: NSObject, HUDProvider {
- var managerIdentifier: String {
- return MockPumpManager.managerIdentifier
- }
- private var pumpManager: MockPumpManager
- private var lastPumpManagerStatus: PumpManagerStatus
- private weak var reservoirView: ReservoirVolumeHUDView?
- private weak var batteryView: BatteryLevelHUDView?
- init(pumpManager: MockPumpManager, allowedInsulinTypes: [InsulinType]) {
- self.pumpManager = pumpManager
- self.lastPumpManagerStatus = pumpManager.status
- super.init()
- pumpManager.addStateObserver(self, queue: .main)
- }
- var visible: Bool = false
- var hudViewRawState: HUDViewRawState {
- var rawValue: HUDViewRawState = [
- "pumpReservoirCapacity": pumpManager.pumpReservoirCapacity
- ]
- if let pumpBatteryChargeRemaining = lastPumpManagerStatus.pumpBatteryChargeRemaining {
- rawValue["pumpBatteryChargeRemaining"] = pumpBatteryChargeRemaining
- }
- rawValue["reservoirUnitsRemaining"] = pumpManager.state.reservoirUnitsRemaining
- return rawValue
- }
- func createHUDView() -> BaseHUDView? {
- reservoirView = ReservoirVolumeHUDView.instantiate()
- updateReservoirView()
-
- return reservoirView
- }
- static func createHUDView(rawValue: HUDViewRawState) -> BaseHUDView? {
- guard let pumpReservoirCapacity = rawValue["pumpReservoirCapacity"] as? Double else {
- return nil
- }
- let reservoirVolumeHUDView = ReservoirVolumeHUDView.instantiate()
- if let reservoirUnitsRemaining = rawValue["reservoirUnitsRemaining"] as? Double {
- let reservoirLevel = (reservoirUnitsRemaining / pumpReservoirCapacity).clamped(to: 0...1)
- reservoirVolumeHUDView.level = reservoirLevel
- reservoirVolumeHUDView.setReservoirVolume(volume: reservoirUnitsRemaining, at: Date())
- }
- return reservoirVolumeHUDView
- }
- func didTapOnHUDView(_ view: BaseHUDView, allowDebugFeatures: Bool) -> HUDTapAction? {
- return nil
- }
- private func updateReservoirView() {
- let reservoirVolume = pumpManager.state.reservoirUnitsRemaining
- let reservoirLevel = (reservoirVolume / pumpManager.pumpReservoirCapacity).clamped(to: 0...1)
- reservoirView?.level = reservoirLevel
- reservoirView?.setReservoirVolume(volume: reservoirVolume, at: Date())
- }
- private func updateBatteryView() {
- batteryView?.batteryLevel = lastPumpManagerStatus.pumpBatteryChargeRemaining
- }
- }
- extension MockHUDProvider: MockPumpManagerStateObserver {
- func mockPumpManager(_ manager: MockPumpManager, didUpdate state: MockPumpManagerState) {
- updateReservoirView()
- }
- func mockPumpManager(_ manager: MockPumpManager, didUpdate status: PumpManagerStatus, oldStatus: PumpManagerStatus) {
- lastPumpManagerStatus = status
- updateBatteryView()
- }
- }
|