| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- //
- // OverrideViewCell.swift
- // LoopKitUI
- //
- // Created by Anna Quinlan on 8/1/20.
- // Copyright © 2020 LoopKit Authors. All rights reserved.
- //
- import SwiftUI
- public struct OverrideViewCell: View {
- @Environment(\.lightenedInsulinTintColor) private var lightInsulin
- @Environment(\.darkenedInsulinTintColor) private var darkInsulin
-
- static let symbolWidth: CGFloat = 40
-
- var symbolLabel: Text
- var nameLabel: Text
- var targetRangeLabel: Text
- var durationLabel: Text
- var subtitleLabel: Text
- var insulinNeedsScaleFactor: Double?
-
- public init(
- symbol: Text,
- name: Text,
- targetRange: Text,
- duration: Text,
- subtitle: Text,
- insulinNeedsScaleFactor: Double?
- ) {
- self.symbolLabel = symbol
- self.nameLabel = name
- self.targetRangeLabel = targetRange
- self.durationLabel = duration
- self.subtitleLabel = subtitle
- self.insulinNeedsScaleFactor = insulinNeedsScaleFactor
- }
- public var body: some View {
- HStack {
- symbolLabel
- .font(.largeTitle)
- .frame(width: Self.symbolWidth) // for alignment
- VStack(alignment: .leading, spacing: 3) {
- nameLabel
- targetRangeLabel
- .font(.caption)
- .foregroundColor(Color.gray)
- if self.insulinNeedsScaleFactor != nil {
- insulinNeedsBar
- }
- }
- Spacer()
- VStack {
- HStack(spacing: 4) {
- timer
- durationLabel
- .font(.caption)
- }
- .foregroundColor(Color.gray)
- subtitleLabel
- .font(.caption)
- }
- }
- .frame(minHeight: 53)
- }
-
- private var insulinNeedsBar: some View {
- GeometryReader { geo in
- HStack {
- Group {
- if self.insulinNeedsScaleFactor != nil {
- SegmentedGaugeBar(insulinNeedsScaler: self.insulinNeedsScaleFactor!, startColor: lightInsulin, endColor: darkInsulin)
- .frame(minHeight: 12)
- }
- }
- Spacer(minLength: geo.size.width * 0.35) // Hack to fix spacing
- }
- }
- }
- var timer: some View {
- Image(systemName: "timer")
- .resizable()
- .frame(width: 12.0, height: 12.0)
- }
- }
|