| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- //
- // PumpManagerUI.swift
- // Loop
- //
- // Copyright © 2018 LoopKit Authors. All rights reserved.
- //
- import UIKit
- import SwiftUI
- import LoopKit
- public struct PumpManagerDescriptor {
- public let identifier: String
- public let localizedTitle: String
- public init(identifier: String, localizedTitle: String) {
- self.identifier = identifier
- self.localizedTitle = localizedTitle
- }
- }
- public struct PumpManagerSetupSettings {
- public var maxBasalRateUnitsPerHour: Double
- public var maxBolusUnits: Double
- public var basalSchedule: BasalRateSchedule
- public init(maxBasalRateUnitsPerHour: Double, maxBolusUnits: Double, basalSchedule: BasalRateSchedule) {
- self.maxBasalRateUnitsPerHour = maxBasalRateUnitsPerHour
- self.maxBolusUnits = maxBolusUnits
- self.basalSchedule = basalSchedule
- }
- }
- public protocol PumpStatusIndicator {
- /// a message from the pump that needs to be brought to the user's attention in the status bar
- var pumpStatusHighlight: DeviceStatusHighlight? { get }
- /// the completed percent of the progress bar to display in the status bar
- var pumpLifecycleProgress: DeviceLifecycleProgress? { get }
- /// a badge from the pump that needs to be brought to the user's attention in the status bar
- var pumpStatusBadge: DeviceStatusBadge? { get }
- }
- public typealias PumpManagerViewController = (UIViewController & PumpManagerOnboarding & CompletionNotifying)
- public protocol PumpManagerUI: DeviceManagerUI, PumpStatusIndicator, PumpManager {
- /// Create and onboard a new pump manager.
- ///
- /// - Parameters:
- /// - settings: Settings used to configure the pump manager.
- /// - bluetoothProvider: The provider of Bluetooth functionality.
- /// - colorPalette: Color palette to use for any UI.
- /// - allowedInsulinTypes: Types that the caller allows to be selected.
- /// - Returns: Either a conforming view controller to create and onboard the pump manager or a newly created and onboarded pump manager.
- static func setupViewController(initialSettings settings: PumpManagerSetupSettings, bluetoothProvider: BluetoothProvider, colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool, allowedInsulinTypes: [InsulinType]) -> SetupUIResult<PumpManagerViewController, PumpManagerUI>
- /// Configure settings for an existing pump manager.
- ///
- /// - Parameters:
- /// - bluetoothProvider: The provider of Bluetooth functionality.
- /// - colorPalette: Color palette to use for any UI.
- /// - Returns: A view controller to configure an existing pump manager.
- func settingsViewController(bluetoothProvider: BluetoothProvider, colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool, allowedInsulinTypes: [InsulinType]) -> PumpManagerViewController
- // View for recovering from delivery uncertainty
- func deliveryUncertaintyRecoveryViewController(colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool) -> (UIViewController & CompletionNotifying)
- // Returns a class that can provide HUD views
- func hudProvider(bluetoothProvider: BluetoothProvider, colorPalette: LoopUIColorPalette, allowedInsulinTypes: [InsulinType]) -> HUDProvider?
- // Instantiates HUD view (typically reservoir volume) from the raw state returned by hudViewRawState
- static func createHUDView(rawValue: HUDProvider.HUDViewRawState) -> BaseHUDView?
- }
- public protocol PumpManagerOnboardingDelegate: AnyObject {
- /// Informs the delegate that the specified pump manager was created.
- ///
- /// - Parameters:
- /// - pumpManager: The pump manager created.
- func pumpManagerOnboarding(didCreatePumpManager pumpManager: PumpManagerUI)
- /// Informs the delegate that the specified pump manager was onboarded.
- ///
- /// - Parameters:
- /// - pumpManager: The pump manager onboarded.
- func pumpManagerOnboarding(didOnboardPumpManager pumpManager: PumpManagerUI)
- }
- public protocol PumpManagerOnboarding {
- /// Delegate to notify about pump manager onboarding.
- var pumpManagerOnboardingDelegate: PumpManagerOnboardingDelegate? { get set }
- }
|