| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import SwiftUI
- import WidgetKit
- // MARK: - Timeline Entry
- struct TrioWatchComplicationEntry: TimelineEntry {
- let date: Date
- }
- // MARK: - Provider
- struct TrioWatchComplicationProvider: TimelineProvider {
- func placeholder(in _: Context) -> TrioWatchComplicationEntry {
- TrioWatchComplicationEntry(date: Date())
- }
- func getSnapshot(in _: Context, completion: @escaping (TrioWatchComplicationEntry) -> Void) {
- let entry = TrioWatchComplicationEntry(date: Date())
- completion(entry)
- }
- func getTimeline(in _: Context, completion: @escaping (Timeline<TrioWatchComplicationEntry>) -> Void) {
- let entry = TrioWatchComplicationEntry(date: Date())
- let timeline = Timeline(entries: [entry], policy: .never)
- completion(timeline)
- }
- }
- // MARK: - Views
- //// Displayed View Wrapper
- struct TrioWatchComplicationEntryView: View {
- @Environment(\.widgetFamily) private var widgetFamily
- var entry: TrioWatchComplicationEntry
- var body: some View {
- switch widgetFamily {
- case .accessoryCircular:
- TrioAccessoryCircularView(entry: entry)
- case .accessoryCorner:
- TrioAccessoryCornerView(entry: entry)
- default:
- Image("ComplicationIcon")
- .widgetAccentable()
- .widgetBackground(backgroundView: Color.clear)
- }
- }
- }
- /// Corner Complication
- struct TrioAccessoryCornerView: View {
- var entry: TrioWatchComplicationProvider.Entry
- var body: some View {
- Text("")
- .widgetCurvesContent()
- .widgetLabel {
- Text("Trio")
- }
- .widgetBackground(backgroundView: Color.clear)
- }
- }
- /// Circular Complication
- struct TrioAccessoryCircularView: View {
- var entry: TrioWatchComplicationProvider.Entry
- var body: some View {
- Image("ComplicationIcon")
- .resizable()
- .widgetAccentable()
- .widgetBackground(backgroundView: Color.clear)
- }
- }
- // MARK: - Widget Configuration
- @main struct TrioWatchComplication: Widget {
- let kind: String = "TrioWatchComplication"
- var body: some WidgetConfiguration {
- StaticConfiguration(kind: kind, provider: TrioWatchComplicationProvider()) { entry in
- TrioWatchComplicationEntryView(entry: entry)
- }
- .configurationDisplayName("Trio")
- .description("Displays Trio app icon as complication")
- .supportedFamilies([
- .accessoryCorner,
- .accessoryCircular
- ])
- }
- }
- extension View {
- func widgetBackground(backgroundView: some View) -> some View {
- if #available(watchOS 10.0, iOSApplicationExtension 17.0, iOS 17.0, *) {
- return containerBackground(for: .widget) {
- backgroundView
- }
- } else {
- return background(backgroundView)
- }
- }
- }
|