73 lines
2.2 KiB
Swift
73 lines
2.2 KiB
Swift
import SwiftUI
|
|
import WidgetKit
|
|
|
|
#if canImport(ActivityKit)
|
|
|
|
struct TrackRecordingLiveActivityView: View {
|
|
let state: TrackRecordingLiveActivityAttributes.ContentState
|
|
|
|
var body: some View {
|
|
VStack(alignment: .leading, spacing: 12) {
|
|
HStack(alignment: .top, spacing: 24) {
|
|
StatisticValueView(state.duration.value)
|
|
StatisticValueView(state.distance.value)
|
|
Spacer()
|
|
AppLogo()
|
|
.frame(width: 20, height: 20)
|
|
}
|
|
.padding([.top, .leading, .trailing], 16)
|
|
HStack(alignment: .top, spacing: 20) {
|
|
StatisticDetailView(title: state.ascent.value, subtitle: state.ascent.key)
|
|
StatisticDetailView(title: state.descent.value, subtitle: state.descent.key)
|
|
StatisticDetailView(title: state.maxElevation.value, subtitle: state.maxElevation.key)
|
|
StatisticDetailView(title: state.minElevation.value, subtitle: state.minElevation.key)
|
|
}
|
|
.padding([.leading, .trailing, .bottom], 16)
|
|
}
|
|
.activityBackgroundTint(.black.opacity(0.2))
|
|
// Uncomment the line below to simulate the background color in Preview because the `activityBackgroundTint` can only displayed on the device or simulator.
|
|
//.background(.black.opacity(0.85))
|
|
}
|
|
}
|
|
|
|
#if DEBUG
|
|
struct TrackRecordingLiveActivityWidget_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
Group {
|
|
let activityAttributes = TrackRecordingLiveActivityAttributes()
|
|
let activityState = TrackRecordingLiveActivityAttributes.ContentState(
|
|
duration: .init(
|
|
key: "Duration",
|
|
value: "1h 12min"
|
|
),
|
|
distance: .init(
|
|
key: "Distance",
|
|
value: "12 km"
|
|
),
|
|
ascent: .init(
|
|
key: "Ascent",
|
|
value: "100 m"
|
|
),
|
|
descent: .init(
|
|
key: "Descent",
|
|
value: "100 m"
|
|
),
|
|
maxElevation: .init(
|
|
key: "Max Elevation",
|
|
value: "100 m"
|
|
),
|
|
minElevation: .init(
|
|
key: "Min Elevation",
|
|
value: "10 m"
|
|
)
|
|
)
|
|
|
|
activityAttributes
|
|
.previewContext(activityState, viewKind: .content)
|
|
.previewDisplayName("Notification")
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#endif
|