diff options
Diffstat (limited to 'Solsnu.Widget/Solsnu_WidgetControl.swift')
| -rw-r--r-- | Solsnu.Widget/Solsnu_WidgetControl.swift | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Solsnu.Widget/Solsnu_WidgetControl.swift b/Solsnu.Widget/Solsnu_WidgetControl.swift new file mode 100644 index 0000000..62cd817 --- /dev/null +++ b/Solsnu.Widget/Solsnu_WidgetControl.swift @@ -0,0 +1,54 @@ +// +// Solsnu_WidgetControl.swift +// Solsnu.Widget +// +// Created by Ivar Løvlie on 15/12/2025. +// + +import AppIntents +import SwiftUI +import WidgetKit + +struct Solsnu_WidgetControl: ControlWidget { + var body: some ControlWidgetConfiguration { + StaticControlConfiguration( + kind: "ivarivarivar.Solverv.Solsnu.Widget", + provider: Provider() + ) { value in + ControlWidgetToggle( + "Start Timer", + isOn: value, + action: StartTimerIntent() + ) { isRunning in + Label(isRunning ? "On" : "Off", systemImage: "timer") + } + } + .displayName("Timer") + .description("A an example control that runs a timer.") + } +} + +extension Solsnu_WidgetControl { + struct Provider: ControlValueProvider { + var previewValue: Bool { + false + } + + func currentValue() async throws -> Bool { + let isRunning = true // Check if the timer is running + return isRunning + } + } +} + +struct StartTimerIntent: SetValueIntent { + static let title: LocalizedStringResource = "Start a timer" + + @Parameter(title: "Timer is running") + var value: Bool + + func perform() async throws -> some IntentResult { + // Start / stop the timer based on `value`. + return .result() + } +} |
