// // HomeWidgetExampleControl.swift // HomeWidgetExample // // Created by hoshizora-rin on 2024/9/19. // import AppIntents import SwiftUI import WidgetKit @available(iOS 18.0, *) struct HomeWidgetExampleControl: ControlWidget { static let kind: String = "com.zhushenwudi.lovelivemusicplayer.HomeWidgetExample" var body: some ControlWidgetConfiguration { AppIntentControlConfiguration( kind: Self.kind, provider: Provider() ) { value in ControlWidgetToggle( "Start Timer", isOn: value.isRunning, action: StartTimerIntent(value.name) ) { isRunning in Label(isRunning ? "On" : "Off", systemImage: "timer") } } .displayName("Timer") .description("A an example control that runs a timer.") } } @available(iOS 18.0, *) extension HomeWidgetExampleControl { struct Value { var isRunning: Bool var name: String } struct Provider: AppIntentControlValueProvider { func previewValue(configuration: TimerConfiguration) -> Value { HomeWidgetExampleControl.Value(isRunning: false, name: configuration.timerName) } func currentValue(configuration: TimerConfiguration) async throws -> Value { let isRunning = true // Check if the timer is running return HomeWidgetExampleControl.Value(isRunning: isRunning, name: configuration.timerName) } } } @available(iOS 18.0, *) struct TimerConfiguration: ControlConfigurationIntent { static let title: LocalizedStringResource = "Timer Name Configuration" @Parameter(title: "Timer Name", default: "Timer") var timerName: String } @available(iOS 18.0, *) struct StartTimerIntent: SetValueIntent { static let title: LocalizedStringResource = "Start a timer" @Parameter(title: "Timer Name") var name: String @Parameter(title: "Timer is running") var value: Bool init() {} init(_ name: String) { self.name = name } func perform() async throws -> some IntentResult { // Start the timer… return .result() } }