1 contributor
//
// RecordingView.swift
// USB Meter
//
// Created by Bogdan Timofte on 09/03/2020.
// Copyright © 2020 Bogdan Timofte. All rights reserved.
//
import SwiftUI
struct RecordingView: View {
@Binding var visibility: Bool
@EnvironmentObject private var usbMeter: Meter
var body: some View {
NavigationView {
ScrollView {
VStack(spacing: 16) {
VStack(spacing: 6) {
Text("Device Recording")
.font(.headline)
Text(usbMeter.recording ? "Active" : "Idle")
.foregroundColor(usbMeter.recording ? .red : .secondary)
}
.frame(maxWidth: .infinity)
.padding()
.background(RoundedRectangle(cornerRadius: 16).foregroundColor(.secondary).opacity(0.1))
HStack(alignment: .top) {
VStack(alignment: .leading, spacing: 10) {
Text("Capacity")
Text("Energy")
Text("Duration")
Text("Start Threshold")
}
Spacer()
VStack(alignment: .trailing, spacing: 10) {
Text("\(usbMeter.recordedAH.format(decimalDigits: 3)) Ah")
Text("\(usbMeter.recordedWH.format(decimalDigits: 3)) Wh")
Text(usbMeter.recordingDurationDescription)
if usbMeter.supportsRecordingThreshold {
Text("\(usbMeter.recordingTreshold.format(decimalDigits: 2)) A")
} else {
Text("Read-only")
}
}
}
.padding()
.background(RoundedRectangle(cornerRadius: 16).foregroundColor(.secondary).opacity(0.1))
if usbMeter.supportsRecordingThreshold {
VStack(alignment: .leading, spacing: 10) {
Text("Start Threshold")
.fontWeight(.semibold)
Slider(value: $usbMeter.recordingTreshold, in: 0...0.30, step: 0.01)
if let hint = usbMeter.recordingThresholdHint {
Text(hint)
.font(.footnote)
.foregroundColor(.secondary)
}
}
.padding()
.background(RoundedRectangle(cornerRadius: 16).foregroundColor(.secondary).opacity(0.1))
} else {
Text("This model reports recording totals, but the app does not expose remote threshold control for it.")
.font(.footnote)
.foregroundColor(.secondary)
.multilineTextAlignment(.center)
.padding()
.background(RoundedRectangle(cornerRadius: 16).foregroundColor(.secondary).opacity(0.1))
}
}
.padding()
}
.navigationBarTitle("Device Recording", displayMode: .inline)
.navigationBarItems(trailing: Button("Done") { visibility.toggle() })
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
struct RecordingView_Previews: PreviewProvider {
static var previews: some View {
RecordingView(visibility: .constant(true))
}
}