mirror of
https://github.com/utmapp/UTM.git
synced 2026-10-12 02:24:01 +00:00
@@ -17,13 +17,38 @@
|
||||
import SwiftUI
|
||||
|
||||
struct BusyIndicator: View {
|
||||
@Binding var progress: Float?
|
||||
|
||||
init(progress: Binding<Float?> = .constant(nil)) {
|
||||
_progress = progress
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
Spinner(size: .large)
|
||||
progressView
|
||||
.frame(width: 100, height: 100, alignment: .center)
|
||||
.foregroundColor(.white)
|
||||
.background(Color.gray.opacity(0.5))
|
||||
.clipShape(RoundedRectangle(cornerRadius: 25.0, style: .continuous))
|
||||
}
|
||||
|
||||
#if os(macOS)
|
||||
@ViewBuilder
|
||||
private var progressView: some View {
|
||||
if let progress = progress {
|
||||
ProgressView(value: progress)
|
||||
.progressViewStyle(.circular)
|
||||
.controlSize(.large)
|
||||
} else {
|
||||
Spinner(size: .large)
|
||||
}
|
||||
}
|
||||
#else
|
||||
// TODO: implement progress spinner for iOS
|
||||
@ViewBuilder
|
||||
private var progressView: some View {
|
||||
Spinner(size: .large)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
struct BusyIndicator_Previews: PreviewProvider {
|
||||
|
||||
@@ -22,7 +22,7 @@ struct BusyOverlay: View {
|
||||
var body: some View {
|
||||
Group {
|
||||
if data.busy {
|
||||
BusyIndicator()
|
||||
BusyIndicator(progress: $data.busyProgress)
|
||||
} else {
|
||||
EmptyView()
|
||||
}
|
||||
|
||||
@@ -66,6 +66,9 @@ struct AlertMessage: Identifiable {
|
||||
/// View: show busy spinner
|
||||
@Published var busy: Bool
|
||||
|
||||
/// View: show a percent progress in the busy spinner
|
||||
@Published var busyProgress: Float?
|
||||
|
||||
/// View: currently selected VM
|
||||
@Published var selectedVM: VMData?
|
||||
|
||||
|
||||
Reference in New Issue
Block a user