| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import SwiftUI
- struct TempTargetPresetsView: View {
- @Environment(\.dismiss) var dismiss
- let tempTargetPresets: [TempTargetPresetWatch]
- let state: WatchState
- private let activePresetGradient = LinearGradient(
- colors: [
- Color(red: 0.262745098, green: 0.7333333333, blue: 0.9137254902), // #43BBE9
- Color(red: 0.3411764706, green: 0.6666666667, blue: 0.9254901961) // #57AAEC
- ],
- startPoint: .leading,
- endPoint: .trailing
- )
- private var sortedPresets: [TempTargetPresetWatch] {
- tempTargetPresets.sorted { $0.isEnabled && !$1.isEnabled }
- }
- private var activePreset: TempTargetPresetWatch? {
- sortedPresets.first { $0.isEnabled }
- }
- var body: some View {
- NavigationView {
- List {
- if let active = activePreset {
- Button("Stop \(active.name)") {
- state.sendCancelTempTargetRequest()
- dismiss()
- }
- .foregroundColor(.white)
- .listRowBackground(
- Color.red
- .clipShape(RoundedRectangle(cornerRadius: 8))
- )
- }
- if sortedPresets.isEmpty {
- Text("No Temp Target Presets")
- .font(.caption)
- .foregroundColor(.secondary)
- } else {
- ForEach(sortedPresets, id: \.name) { preset in
- Button(action: {
- if !preset.isEnabled {
- state.sendActivateTempTargetRequest(presetName: preset.name)
- }
- dismiss()
- }) {
- HStack {
- Text(preset.name)
- .font(.caption)
- if preset.isEnabled {
- Spacer()
- Text("is running")
- .font(.caption2)
- .foregroundStyle(.white)
- }
- }
- }
- .listRowBackground(
- preset.isEnabled ?
- activePresetGradient
- .clipShape(RoundedRectangle(cornerRadius: 8))
- : nil
- )
- .foregroundColor(preset.isEnabled ? .white : .primary)
- }
- }
- }
- .navigationTitle("Temp Target Presets")
- }
- }
- }
|