73 lines
2.0 KiB
Swift
73 lines
2.0 KiB
Swift
import SwiftUI
|
|
|
|
struct StatusBar: View {
|
|
let state: AppState
|
|
|
|
var body: some View {
|
|
HStack(spacing: 8) {
|
|
connectionIndicator
|
|
Text(state.status)
|
|
.font(.subheadline)
|
|
.lineLimit(1)
|
|
|
|
Spacer()
|
|
|
|
refButtons
|
|
|
|
Text(String(format: "%.1f\u{00B0}C", state.tempC))
|
|
.font(.subheadline.monospacedDigit())
|
|
.foregroundStyle(.secondary)
|
|
}
|
|
.padding(.horizontal)
|
|
.padding(.vertical, 6)
|
|
.background(.ultraThinMaterial)
|
|
}
|
|
|
|
private var connectionIndicator: some View {
|
|
Circle()
|
|
.fill(state.bleConnected ? Color.green : Color.red)
|
|
.frame(width: 8, height: 8)
|
|
}
|
|
|
|
@ViewBuilder
|
|
private var refButtons: some View {
|
|
HStack(spacing: 4) {
|
|
if !state.collectingRefs {
|
|
Button("Collect Refs") { state.collectRefs() }
|
|
.buttonStyle(.bordered)
|
|
.tint(.green)
|
|
.controlSize(.small)
|
|
} else {
|
|
Button("Collecting...") {}
|
|
.buttonStyle(.bordered)
|
|
.controlSize(.small)
|
|
.disabled(true)
|
|
}
|
|
|
|
if state.hasDeviceRefs {
|
|
Button("Clear Refs") { state.clearRefs() }
|
|
.buttonStyle(.bordered)
|
|
.tint(.red)
|
|
.controlSize(.small)
|
|
}
|
|
|
|
if state.hasCurrentData {
|
|
Button("Set Ref") { state.setReference() }
|
|
.buttonStyle(.bordered)
|
|
.controlSize(.small)
|
|
}
|
|
|
|
if state.hasCurrentRef {
|
|
Button("Clear Ref") { state.clearReference() }
|
|
.buttonStyle(.bordered)
|
|
.tint(.red)
|
|
.controlSize(.small)
|
|
|
|
Text("REF")
|
|
.font(.caption2.bold())
|
|
.foregroundStyle(.orange)
|
|
}
|
|
}
|
|
}
|
|
}
|