1 contributor
//
// MeterConnectionActionView.swift
// USB Meter
//
// Created by Bogdan Timofte on 29/03/2026.
// Co-authored-by: GPT-5.3-Codex.
// Copyright © 2026 Bogdan Timofte. All rights reserved.
//
import SwiftUI
struct MeterConnectionActionView: View {
let operationalState: Meter.OperationalState
let compact: Bool
var body: some View {
if operationalState == .notPresent {
HStack(spacing: 10) {
Image(systemName: "exclamationmark.triangle.fill")
.foregroundColor(.orange)
Text("Not found at this time.")
.fontWeight(.semibold)
Spacer()
}
.padding(compact ? 12 : 16)
.meterCard(tint: .orange, fillOpacity: 0.14, strokeOpacity: 0.18)
}
}
}
struct MeterConnectionToolbarButton: View {
let operationalState: Meter.OperationalState
let showsTitle: Bool
let connectAction: () -> Void
let disconnectAction: () -> Void
private var connected: Bool {
operationalState >= .peripheralConnectionPending
}
private var actionTint: Color {
connected ? Color(red: 0.66, green: 0.39, blue: 0.35) : Color(red: 0.20, green: 0.46, blue: 0.43)
}
private var title: String {
connected ? "Disconnect" : "Connect"
}
private var systemImage: String {
if connected {
#if targetEnvironment(macCatalyst)
return "bolt.slash.circle.fill"
#else
return "link.badge.minus"
#endif
}
return "bolt.horizontal.circle.fill"
}
var body: some View {
if operationalState != .notPresent {
Button(action: {
if connected {
disconnectAction()
} else {
connectAction()
}
}) {
if showsTitle {
Label(title, systemImage: systemImage)
} else {
Image(systemName: systemImage)
}
}
.foregroundStyle(actionTint)
.accessibilityLabel(title)
.help(title)
}
}
}