@@ -30,6 +30,26 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
3030 handler ( [ ] )
3131 }
3232
33+ fileprivate func createLine1And2TextProvider( _ currentNightscoutData: NightscoutData ) -> ( CLKTextProvider , CLKTextProvider ) {
34+
35+ var line1TextProvider : CLKTextProvider
36+ var line2TextProvider : CLKTextProvider
37+
38+ if useRelativeTimeWhenPossible {
39+ line1TextProvider = CLKSimpleTextProvider ( text: getSgvAndArrow ( currentNightscoutData, " " ) )
40+ line1TextProvider. tintColor = UIColorChanger . getBgColor (
41+ UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) )
42+ line2TextProvider = getRelativeDateTextProvider ( for: currentNightscoutData. time)
43+ } else {
44+ line1TextProvider = CLKSimpleTextProvider ( text: " \( currentNightscoutData. hourAndMinutes) " )
45+ line1TextProvider. tintColor = UIColorChanger . getBgColor (
46+ UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) )
47+ line2TextProvider = CLKSimpleTextProvider ( text: " \( UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) ) \( currentNightscoutData. bgdeltaString) \( currentNightscoutData. bgdeltaArrow) " )
48+ }
49+
50+ return ( line1TextProvider, line2TextProvider)
51+ }
52+
3353 func getCurrentTimelineEntry( for complication: CLKComplication , withHandler handler: @escaping ( CLKComplicationTimelineEntry ? ) -> Void ) {
3454
3555 let currentNightscoutData = NightscoutCacheService . singleton. getCurrentNightscoutData ( )
@@ -40,19 +60,7 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
4060 switch complication. family {
4161 case . modularSmall:
4262
43- var line1TextProvider : CLKTextProvider
44- var line2TextProvider : CLKTextProvider
45- if useRelativeTimeWhenPossible {
46- line1TextProvider = CLKSimpleTextProvider ( text: getSgvAndArrow ( currentNightscoutData, " " ) )
47- line1TextProvider. tintColor = UIColorChanger . getBgColor (
48- UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) )
49- line2TextProvider = getRelativeDateTextProvider ( for: currentNightscoutData. time)
50- } else {
51- line1TextProvider = CLKSimpleTextProvider ( text: " \( currentNightscoutData. hourAndMinutes) " )
52- line1TextProvider. tintColor = UIColorChanger . getBgColor (
53- UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) )
54- line2TextProvider = CLKSimpleTextProvider ( text: " \( UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) ) \( currentNightscoutData. bgdeltaString) \( currentNightscoutData. bgdeltaArrow) " )
55- }
63+ let ( line1TextProvider, line2TextProvider) = createLine1And2TextProvider ( currentNightscoutData)
5664 let modTemplate = CLKComplicationTemplateModularSmallStackText ( line1TextProvider: line1TextProvider,
5765 line2TextProvider: line2TextProvider)
5866 template = modTemplate
@@ -110,6 +118,23 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
110118 textProvider. tintColor = UIColorChanger . getBgColor (
111119 UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) )
112120 template = CLKComplicationTemplateUtilitarianLargeFlat ( textProvider: textProvider, imageProvider: imageProvider)
121+ case . extraLarge:
122+ let row1Col1 = CLKSimpleTextProvider ( text: getOneLine ( currentNightscoutData) )
123+ row1Col1. tintColor = UIColorChanger . getBgColor (
124+ UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) )
125+ let row1Col2 = getRelativeDateTextProvider ( for: currentNightscoutData. time)
126+ var row2Col1 = CLKSimpleTextProvider ( text: " " )
127+ var row2Col2 = CLKSimpleTextProvider ( text: " " )
128+ if self . oldNightscoutData. count > 1 {
129+ let nightscoutData = self . oldNightscoutData [ 1 ]
130+ row2Col1 = CLKSimpleTextProvider ( text: getOneLine ( nightscoutData) )
131+ row2Col2 = getRelativeDateTextProvider ( for: nightscoutData. time) as? CLKSimpleTextProvider ?? row2Col2
132+ }
133+
134+ template = CLKComplicationTemplateExtraLargeColumnsText (
135+ row1Column1TextProvider: row1Col1, row1Column2TextProvider: row1Col2,
136+ row2Column1TextProvider: row2Col1, row2Column2TextProvider: row2Col2)
137+
113138 case . circularSmall:
114139
115140 let textProvider = CLKSimpleTextProvider ( text:
@@ -136,13 +161,15 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
136161 case . graphicCircular:
137162 if #available( watchOSApplicationExtension 5 . 0 , * ) {
138163
139- let sgvLong = " \( UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) ) "
140- let sgvShort = " \( UnitsConverter . mgdlToShortDisplayUnits ( currentNightscoutData. sgv) ) "
141- let centerTextProvider = CLKSimpleTextProvider ( text: sgvLong, shortText: sgvShort)
142- centerTextProvider. tintColor = UIColorChanger . getBgColor (
164+ let line2TextProvider = CLKSimpleTextProvider ( text: " \( UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) ) " )
165+ line2TextProvider. tintColor = UIColorChanger . getBgColor (
166+ UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) )
167+
168+ let line1TextProvider = CLKSimpleTextProvider ( text: " \( currentNightscoutData. hourAndMinutes) " )
169+ line1TextProvider. tintColor = UIColorChanger . getBgColor (
143170 UnitsConverter . mgdlToDisplayUnits ( currentNightscoutData. sgv) )
144- let gaugeProvider = CLKSimpleGaugeProvider ( style : . fill , gaugeColor : UIColor . black , fillFraction : CLKSimpleGaugeProviderFillFractionEmpty )
145- template = CLKComplicationTemplateGraphicCircularClosedGaugeText ( gaugeProvider : gaugeProvider , centerTextProvider : centerTextProvider )
171+
172+ template = CLKComplicationTemplateGraphicCircularStackText ( line1TextProvider : line1TextProvider , line2TextProvider : line2TextProvider )
146173 } else {
147174 abort ( )
148175 }
@@ -157,6 +184,14 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
157184 } else {
158185 abort ( )
159186 }
187+ case . graphicExtraLarge:
188+
189+ let ( line1TextProvider, line2TextProvider) = createLine1And2TextProvider ( currentNightscoutData)
190+
191+ let modTemplate = CLKComplicationTemplateGraphicExtraLargeCircularStackText (
192+ line1TextProvider: line1TextProvider, line2TextProvider: line2TextProvider)
193+
194+ template = modTemplate
160195 default : break
161196 }
162197
@@ -242,10 +277,14 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
242277 func getPlaceholderTemplate( for complication: CLKComplication , withHandler handler: @escaping ( CLKComplicationTemplate ? ) -> Void ) {
243278 var template : CLKComplicationTemplate ? = nil
244279 switch complication. family {
280+ case . graphicExtraLarge:
281+ template = nil
245282 case . modularSmall:
246283 template = nil
247284 case . modularLarge:
248285 template = nil
286+ case . extraLarge:
287+ template = nil
249288 case . utilitarianSmall:
250289 template = nil
251290 case . utilitarianLarge:
@@ -260,13 +299,15 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
260299
261300 func getComplicationDescriptors( handler: @escaping ( [ CLKComplicationDescriptor ] ) -> Void ) {
262301 let descriptors = [
263- CLKComplicationDescriptor ( identifier: " nightguardComplication " , displayName: " Nightguard " ,
302+ CLKComplicationDescriptor ( identifier: " nightguardComplication " , displayName: " BG Values " ,
264303 supportedFamilies: [ CLKComplicationFamily . circularSmall,
265304 CLKComplicationFamily . graphicBezel,
266305 CLKComplicationFamily . graphicCorner,
267306 CLKComplicationFamily . graphicCircular,
307+ CLKComplicationFamily . graphicExtraLarge,
268308 CLKComplicationFamily . modularLarge,
269309 CLKComplicationFamily . modularSmall,
310+ CLKComplicationFamily . extraLarge,
270311 CLKComplicationFamily . utilitarianLarge,
271312 CLKComplicationFamily . utilitarianSmall] )
272313 ]
0 commit comments