// // IdleDemo.swift // Adwaita // // Created by david-swift on 05.05.24. // // swiftlint:disable missing_docs import Adwaita struct IdleDemo: View { @State private var progress = 0.0 @State private var activeProcess = false let max = 500.0 let delayFactor = 5_000.0 let maxWidth = 300 var view: Body { ProgressBar(value: progress, total: max) .vexpand() .valign(.center) .frame(maxWidth: maxWidth) Button("Play") { Task { activeProcess = true progress = 0 Idle(delay: .init(delayFactor / max)) { progress += 1 let done = progress == max if done { activeProcess = false } return !done } } } .padding() .pill() .hexpand() .halign(.center) .insensitive(activeProcess) } } // swiftlint:enable missing_docs