Files

69 lines
1.6 KiB
Swift
Raw Permalink Normal View History

import Commanding
import SwiftUI
import WidgetKit
/// The Lock Screen banner of the recording Live Activity: a centered stack of the timer of the elapsed recording time, the label
/// naming the current state, and the control buttons.
struct RecordingLiveActivityView: View {
// MARK: Properties
/// The dynamic content of the Live Activity to render.
let state: RecordingActivityAttributes.ContentState
// MARK: Body
var body: some View {
VStack(
alignment: .center,
spacing: Constant.Spacing.stack
) {
RecordingStateLabel(state: state)
RecordingTimerText(state: state)
.font(.largeTitle)
.fontWeight(.bold)
RecordingControls(state: state)
}
}
}
// MARK: - Constants
/// The constant values used across the recording Live Activity.
private enum Constant {
/// The spacing constants.
enum Spacing {
/// The spacing between the elements of a stack.
static let stack: CGFloat = 8
}
}
// MARK: - Previews
#Preview(
"Recording Live Activity view",
as: .content,
using: RecordingActivityAttributes()
) {
RecordingLiveActivity()
} contentStates: {
RecordingActivityAttributes.ContentState(
state: .recording,
anchor: .now,
elapsed: 0
)
RecordingActivityAttributes.ContentState(
state: .paused,
anchor: nil,
elapsed: 42
)
RecordingActivityAttributes.ContentState(
state: .processing,
anchor: nil,
elapsed: 42
)
}