diff --git a/WatchApp Extension/ComplicationController.swift b/WatchApp Extension/ComplicationController.swift index 4b149cabb1..d632954571 100644 --- a/WatchApp Extension/ComplicationController.swift +++ b/WatchApp Extension/ComplicationController.swift @@ -92,7 +92,30 @@ final class ComplicationController: NSObject, CLKComplicationDataSource { let timeText = CLKRelativeDateTextProvider(date: Date(), style: .natural, units: .minute) switch complication.family { - case .graphicCorner, .graphicCircular, .graphicRectangular, .graphicBezel: + + case .graphicCorner: + if #available(watchOSApplicationExtension 5.0, *) { + let cornerTemplate = CLKComplicationTemplateGraphicCornerStackText() + cornerTemplate.outerTextProvider = glucoseText + cornerTemplate.innerTextProvider = timeText + cornerTemplate.outerTextProvider.tintColor = .green + template = cornerTemplate + } else { + // Fallback on earlier versions + template = nil + } + case .graphicCircular: + if #available(watchOSApplicationExtension 5.0, *) { + let circularTemplate = CLKComplicationTemplateGraphicCircularOpenGaugeSimpleText() + circularTemplate.gaugeProvider = CLKSimpleGaugeProvider(style: .fill, gaugeColor: .green, fillFraction: 1) + circularTemplate.centerTextProvider = CLKSimpleTextProvider(text: "120") + circularTemplate.bottomTextProvider = CLKSimpleTextProvider(text: "↘︎") + template = circularTemplate + } else { + // Fallback on earlier versions + template = nil + } + case .graphicRectangular, .graphicBezel: template = nil case .modularSmall: let modularSmall = CLKComplicationTemplateModularSmallStackText() @@ -126,5 +149,6 @@ final class ComplicationController: NSObject, CLKComplicationDataSource { template?.tintColor = UIColor.tintColor handler(template) + } } diff --git a/WatchApp Extension/Extensions/CLKComplicationTemplate.swift b/WatchApp Extension/Extensions/CLKComplicationTemplate.swift index 1a3e54331f..758a643f2d 100644 --- a/WatchApp Extension/Extensions/CLKComplicationTemplate.swift +++ b/WatchApp Extension/Extensions/CLKComplicationTemplate.swift @@ -46,8 +46,45 @@ extension CLKComplicationTemplate { timeFormatter.dateStyle = .none timeFormatter.timeStyle = .short + switch family { - case .graphicCorner, .graphicCircular, .graphicRectangular, .graphicBezel: + case .graphicCorner: + // *************************************** + // ** Apple Watch Series 4 Complication ** + // *************************************** + // Corner Text + // Outer Text: Current Glucose and Trend + // Inner Text: timeText + + if #available(watchOSApplicationExtension 5.0, *) { + let cornerTemplate = CLKComplicationTemplateGraphicCornerStackText() + cornerTemplate.outerTextProvider = glucoseAndTrendText + cornerTemplate.outerTextProvider.tintColor = .green + cornerTemplate.innerTextProvider = timeText + return cornerTemplate + } else { + // Fallback on earlier versions + return nil + } + case .graphicCircular: + // *************************************** + // ** Apple Watch Series 4 Complication ** + // *************************************** + // Circular Gauge + // Full Ring + // Current Glucose in Center, Trend Arrow Below + // * future enhancement - update gauge colors to reflect loop status, or time in range for the day + if #available(watchOSApplicationExtension 5.0, *) { + let circularTemplate = CLKComplicationTemplateGraphicCircularOpenGaugeSimpleText() + circularTemplate.gaugeProvider = CLKSimpleGaugeProvider(style: .fill, gaugeColor: .green, fillFraction: 1) + circularTemplate.centerTextProvider = CLKSimpleTextProvider(text: glucoseString) + circularTemplate.bottomTextProvider = CLKSimpleTextProvider(text: (trend?.symbol ?? " ")) + return circularTemplate + } else { + // Fallback on earlier versions + return nil + } + case .graphicRectangular, .graphicBezel: return nil case .modularSmall: let template = CLKComplicationTemplateModularSmallStackText() diff --git a/WatchApp Extension/Info.plist b/WatchApp Extension/Info.plist index 72ad48bfe9..d9ff34f6f8 100644 --- a/WatchApp Extension/Info.plist +++ b/WatchApp Extension/Info.plist @@ -26,13 +26,17 @@ $(PRODUCT_MODULE_NAME).ComplicationController CLKComplicationSupportedFamilies - CLKComplicationFamilyModularSmall CLKComplicationFamilyCircularSmall CLKComplicationFamilyExtraLarge - CLKComplicationFamilyUtilitarianSmallFlat - CLKComplicationFamilyUtilitarianLarge + CLKComplicationFamilyGraphicBezel + CLKComplicationFamilyGraphicCircular + CLKComplicationFamilyGraphicCorner + CLKComplicationFamilyGraphicRectangular CLKComplicationFamilyModularLarge + CLKComplicationFamilyModularSmall + CLKComplicationFamilyUtilitarianLarge CLKComplicationFamilyUtilitarianSmall + CLKComplicationFamilyUtilitarianSmallFlat NSExtension