| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- //
- // MockPumpManager+UI.swift
- // LoopKitUI
- //
- // Created by Michael Pangburn on 11/20/18.
- // Copyright © 2018 LoopKit Authors. All rights reserved.
- //
- import Foundation
- import SwiftUI
- import LoopKit
- import LoopKitUI
- import MockKit
- extension MockPumpManager: PumpManagerUI {
-
- private var appName: String {
- return Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as! String
- }
-
- public static var onboardingImage: UIImage? { return UIImage(named: "Pump Simulator", in: Bundle(for: MockPumpManagerSettingsViewController.self), compatibleWith: nil) }
- public var smallImage: UIImage? { return UIImage(named: "Pump Simulator", in: Bundle(for: MockPumpManagerSettingsViewController.self), compatibleWith: nil) }
-
- public static func setupViewController(initialSettings settings: PumpManagerSetupSettings, bluetoothProvider: BluetoothProvider, colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool, prefersToSkipUserInteraction: Bool, allowedInsulinTypes: [InsulinType]) -> SetupUIResult<PumpManagerViewController, PumpManagerUI> {
- let mockPumpManager = MockPumpManager()
- mockPumpManager.setMaximumTempBasalRate(settings.maxBasalRateUnitsPerHour)
- mockPumpManager.syncBasalRateSchedule(items: settings.basalSchedule.items, completion: { _ in })
- return .createdAndOnboarded(mockPumpManager)
- }
- public func settingsViewController(bluetoothProvider: BluetoothProvider, colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool, allowedInsulinTypes: [InsulinType]) -> PumpManagerViewController {
- let settings = MockPumpManagerSettingsView(pumpManager: self, supportedInsulinTypes: allowedInsulinTypes, appName: appName, allowDebugFeatures: allowDebugFeatures)
- let hostingController = DismissibleHostingController(content: settings, isModalInPresentation: false, colorPalette: colorPalette)
- hostingController.navigationItem.backButtonDisplayMode = .generic
- let nav = PumpManagerSettingsNavigationViewController(rootViewController: hostingController)
- nav.navigationBar.prefersLargeTitles = true
- return nav
- }
-
- public func deliveryUncertaintyRecoveryViewController(colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool) -> (UIViewController & CompletionNotifying) {
- return DeliveryUncertaintyRecoveryViewController(appName: appName, uncertaintyStartedAt: Date()) {
- self.state.deliveryCommandsShouldTriggerUncertainDelivery = false
- self.state.deliveryIsUncertain = false
- }
- }
- public func hudProvider(bluetoothProvider: BluetoothProvider, colorPalette: LoopUIColorPalette, allowedInsulinTypes: [InsulinType]) -> HUDProvider? {
- return MockHUDProvider(pumpManager: self, allowedInsulinTypes: allowedInsulinTypes)
- }
- public static func createHUDView(rawValue: HUDProvider.HUDViewRawState) -> BaseHUDView? {
- return MockHUDProvider.createHUDView(rawValue: rawValue)
- }
- }
- public enum MockPumpStatusBadge: DeviceStatusBadge {
- case timeSyncNeeded
-
- public var image: UIImage? {
- switch self {
- case .timeSyncNeeded:
- return UIImage(systemName: "clock.fill")
- }
- }
-
- public var state: DeviceStatusBadgeState {
- switch self {
- case .timeSyncNeeded:
- return .warning
- }
- }
- }
- // MARK: - PumpStatusIndicator
- extension MockPumpManager {
- public var pumpStatusHighlight: DeviceStatusHighlight? {
- return buildPumpStatusHighlight(for: state)
- }
- public var pumpLifecycleProgress: DeviceLifecycleProgress? {
- return buildPumpLifecycleProgress(for: state)
- }
- public var pumpStatusBadge: DeviceStatusBadge? {
- return isClockOffset ? MockPumpStatusBadge.timeSyncNeeded : nil
- }
- }
|