From e13a01393ca8808021e423962e6eb4546b6ec4a0 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Sun, 14 Oct 2018 17:36:49 -0500 Subject: [PATCH 1/4] Defer Watch App page change until willActivate (#831) --- .../Controllers/ChartHUDController.swift | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/WatchApp Extension/Controllers/ChartHUDController.swift b/WatchApp Extension/Controllers/ChartHUDController.swift index 1297a0ecc6..172aefc71b 100644 --- a/WatchApp Extension/Controllers/ChartHUDController.swift +++ b/WatchApp Extension/Controllers/ChartHUDController.swift @@ -51,23 +51,6 @@ final class ChartHUDController: HUDInterfaceController, WKCrownDelegate { glucoseScene.presentScene(scene) } - override func awake(withContext context: Any?) { - super.awake(withContext: context) - - if UserDefaults.standard.startOnChartPage { - log.default("Switching to startOnChartPage") - becomeCurrentPage() - - // For some reason, .didAppear() does not get called when we do this. It gets called *twice* the next - // time this view appears. Force it by hand now, until we figure out the root cause. - // - // TODO: possibly because I'm not calling super.awake()? investigate that. - DispatchQueue.main.async { - self.didAppear() - } - } - } - override func didAppear() { super.didAppear() From faf3489c66c03783828281224bbd9bc14df4471e Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Wed, 17 Oct 2018 11:04:12 -0500 Subject: [PATCH 2/4] Update Watch app icons (#835) --- Loop.xcodeproj/project.pbxproj | 22 +++--- .../11076976-F7D6-460C-845C-10C8A7003F0D.json | 29 -------- .../28C71A33-1C97-4A92-8677-4FE8644380DF.json | 21 ------ .../2E750127-9918-4653-8B91-FC0AB09DF91F.json | 22 ------ .../38411872-4973-48F3-AC34-504D40170A49.json | 15 ---- .../59939B64-2F84-4438-8860-91BB63BE827B.json | 15 ---- .../688917AC-E1E4-4B66-9B44-6EE17F1D19DB.json | 15 ---- .../AF8DC7FB-6148-4322-BE40-6D6DD3C963A9.json | 22 ------ .../Base.lproj/ckcomplication.strings | 13 ---- .../complicationManifest.json | 12 ---- .../it.lproj/ckcomplication.strings | 13 ---- .../Circular.imageset/Contents.json | 16 ++++- .../Icon-Complication-16x16@2x.png | Bin 0 -> 911 bytes .../Icon-Complication-18x18@2x.png | Bin 0 -> 1069 bytes .../Contents.json | 20 ++++++ .../Extra Large.imageset/Contents.json | 10 +++ .../Graphic Bezel.imageset/Contents.json | 30 ++++++++ .../Icon-AppleWatch-42x42@2x.png | Bin 0 -> 6557 bytes .../Icon-AppleWatch-47x47@2x.png | Bin 0 -> 7666 bytes .../Graphic Circular.imageset/Contents.json | 30 ++++++++ .../Icon-AppleWatch-42x42@2x.png | Bin 0 -> 6557 bytes .../Icon-AppleWatch-47x47@2x.png | Bin 0 -> 7666 bytes .../Graphic Corner.imageset/Contents.json | 30 ++++++++ .../Icon-AppleWatch-32x32@2x.png | Bin 0 -> 4534 bytes .../Icon-AppleWatch-36x36@2x.png | Bin 0 -> 5290 bytes .../Contents.json | 12 ++++ .../Modular.imageset/Contents.json | 17 ++++- .../Icon-Complication-26x26@2x.png | Bin 0 -> 1537 bytes .../Icon-Complication-29x29@2x.png | Bin 0 -> 1661 bytes .../Icon-Complication-32x32@2x.png | Bin 0 -> 1858 bytes .../Utilitarian.imageset/Contents.json | 17 ++++- .../Icon-Complication-20x20@2x.png | Bin 0 -> 1182 bytes .../Icon-Complication-22x22@2x.png | Bin 0 -> 1290 bytes .../Icon-Complication-25x25@2x.png | Bin 0 -> 1429 bytes .../Base.lproj/ckcomplication.strings | 3 - .../ComplicationController.swift | 66 ++++-------------- .../Controllers/ChartHUDController.swift | 5 ++ .../Extensions/CLKComplicationTemplate.swift | 59 ++++++++++++++++ WatchApp Extension/Info.plist | 9 ++- .../Scenes/GlucoseChartScene.swift | 2 +- .../de.lproj/ckcomplication.strings | 3 - .../fr.lproj/ckcomplication.strings | 3 - .../it.lproj/ckcomplication.strings | 3 - .../nb.lproj/ckcomplication.strings | 3 - .../nl.lproj/ckcomplication.strings | 3 - .../pl.lproj/ckcomplication.strings | 3 - .../zh-Hans.lproj/ckcomplication.strings | 3 - .../AppIcon.appiconset/38mm Home Screen.png | Bin 5679 -> 0 bytes .../AppIcon.appiconset/38mm Notification.png | Bin 2570 -> 0 bytes .../AppIcon.appiconset/38mm Short Look.png | Bin 17729 -> 0 bytes .../AppIcon.appiconset/42mm Notification.png | Bin 3329 -> 0 bytes .../AppIcon.appiconset/42mm Short Look.png | Bin 21195 -> 0 bytes .../AppIcon.appiconset/Contents.json | 17 +++-- .../Icon-AppleWatch-100x100@2x.png | Bin 0 -> 7838 bytes .../Icon-AppleWatch-216x216@2x.png | Bin 0 -> 24313 bytes .../Icon-AppleWatch-24x24@2x.png | Bin 0 -> 2577 bytes .../Icon-AppleWatch-27.5x27.5@2x.png | Bin 0 -> 3314 bytes .../Icon-AppleWatch-40x40@2x.png | Bin 0 -> 5659 bytes .../Icon-AppleWatch-44x44@2x.png | Bin 0 -> 6544 bytes .../Icon-AppleWatch-86x86@2x.png | Bin 0 -> 17203 bytes .../Icon-AppleWatch-98x98@2x.png | Bin 0 -> 20516 bytes .../Icon-AppleWatch-Companion-29x29@2x.png | Bin 0 -> 3566 bytes .../Icon-AppleWatch-Companion-29x29@3x.png | Bin 0 -> 6303 bytes .../AppIcon.appiconset/Icon-Small@2x.png | Bin 3637 -> 0 bytes .../AppIcon.appiconset/Icon-Small@3x.png | Bin 6510 -> 0 bytes .../bolus.imageset/Bolus Icon 42mm.pdf | Bin 0 -> 3948 bytes .../bolus.imageset/Bolus Icon 42mm.png | Bin 2001 -> 0 bytes .../bolus.imageset/Contents.json | 32 +++++++-- .../carbs.imageset/Carb Icon 42mm.pdf | Bin 0 -> 4590 bytes .../carbs.imageset/Carbs Icon 42mm.png | Bin 2876 -> 0 bytes .../carbs.imageset/Contents.json | 32 +++++++-- .../pre-meal.imageset/Contents.json | 32 +++++++-- .../pre-meal.imageset/Pre-Meal 42mm.pdf | Bin 0 -> 4541 bytes .../pre-meal.imageset/Pre-Meal 42mm.png | Bin 2302 -> 0 bytes .../workout.imageset/Contents.json | 32 +++++++-- .../workout.imageset/Workout 42mm.pdf | Bin 0 -> 4828 bytes .../workout.imageset/Workout 42mm.png | Bin 2479 -> 0 bytes 77 files changed, 393 insertions(+), 298 deletions(-) delete mode 100644 Loop/gallery.ckcomplication/11076976-F7D6-460C-845C-10C8A7003F0D.json delete mode 100644 Loop/gallery.ckcomplication/28C71A33-1C97-4A92-8677-4FE8644380DF.json delete mode 100644 Loop/gallery.ckcomplication/2E750127-9918-4653-8B91-FC0AB09DF91F.json delete mode 100644 Loop/gallery.ckcomplication/38411872-4973-48F3-AC34-504D40170A49.json delete mode 100644 Loop/gallery.ckcomplication/59939B64-2F84-4438-8860-91BB63BE827B.json delete mode 100644 Loop/gallery.ckcomplication/688917AC-E1E4-4B66-9B44-6EE17F1D19DB.json delete mode 100644 Loop/gallery.ckcomplication/AF8DC7FB-6148-4322-BE40-6D6DD3C963A9.json delete mode 100644 Loop/gallery.ckcomplication/Base.lproj/ckcomplication.strings delete mode 100644 Loop/gallery.ckcomplication/complicationManifest.json delete mode 100644 Loop/gallery.ckcomplication/it.lproj/ckcomplication.strings create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-Complication-16x16@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-Complication-18x18@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-47x47@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-47x47@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Icon-AppleWatch-32x32@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Icon-AppleWatch-36x36@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Icon-Complication-26x26@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Icon-Complication-29x29@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Icon-Complication-32x32@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Icon-Complication-20x20@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Icon-Complication-22x22@2x.png create mode 100644 WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Icon-Complication-25x25@2x.png delete mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/38mm Home Screen.png delete mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/38mm Notification.png delete mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/38mm Short Look.png delete mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/42mm Notification.png delete mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/42mm Short Look.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-100x100@2x.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-216x216@2x.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-24x24@2x.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-27.5x27.5@2x.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-40x40@2x.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-44x44@2x.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-86x86@2x.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-98x98@2x.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-Companion-29x29@2x.png create mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-Companion-29x29@3x.png delete mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png delete mode 100644 WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png create mode 100644 WatchApp/Assets.xcassets/bolus.imageset/Bolus Icon 42mm.pdf delete mode 100644 WatchApp/Assets.xcassets/bolus.imageset/Bolus Icon 42mm.png create mode 100644 WatchApp/Assets.xcassets/carbs.imageset/Carb Icon 42mm.pdf delete mode 100644 WatchApp/Assets.xcassets/carbs.imageset/Carbs Icon 42mm.png create mode 100644 WatchApp/Assets.xcassets/pre-meal.imageset/Pre-Meal 42mm.pdf delete mode 100644 WatchApp/Assets.xcassets/pre-meal.imageset/Pre-Meal 42mm.png create mode 100644 WatchApp/Assets.xcassets/workout.imageset/Workout 42mm.pdf delete mode 100644 WatchApp/Assets.xcassets/workout.imageset/Workout 42mm.png diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index 81db1cb41f..600791b5a8 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -305,7 +305,6 @@ C18C8C511D5A351900E043FB /* NightscoutDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18C8C501D5A351900E043FB /* NightscoutDataManager.swift */; }; C1C6591C1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json in Resources */ = {isa = PBXBuildFile; fileRef = C1C6591B1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json */; }; C1C73F0D1DE3D0270022FC89 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C1C73F0F1DE3D0270022FC89 /* InfoPlist.strings */; }; - C9886AE51E5B2FAD00473BB8 /* gallery.ckcomplication in Resources */ = {isa = PBXBuildFile; fileRef = C9886AE41E5B2FAD00473BB8 /* gallery.ckcomplication */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -835,7 +834,6 @@ C18852E12082AB1A00BECC8C /* RileyLinkKitUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RileyLinkKitUI.framework; path = Carthage/Build/iOS/RileyLinkKitUI.framework; sourceTree = ""; }; C18C8C501D5A351900E043FB /* NightscoutDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NightscoutDataManager.swift; sourceTree = ""; }; C1C6591B1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_temp_basal_dropping_then_rising.json; sourceTree = ""; }; - C9886AE41E5B2FAD00473BB8 /* gallery.ckcomplication */ = {isa = PBXFileReference; lastKnownFileType = folder; path = gallery.ckcomplication; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1015,7 +1013,6 @@ children = ( 7D7076651FE06EE4004AC8EA /* Localizable.strings */, 7D7076511FE06EE1004AC8EA /* InfoPlist.strings */, - C9886AE41E5B2FAD00473BB8 /* gallery.ckcomplication */, 43EDEE6B1CF2E12A00393BE3 /* Loop.entitlements */, 43F5C2D41B92A4A6003EB13D /* Info.plist */, 43776F8F1B8022E90074EA36 /* AppDelegate.swift */, @@ -1687,7 +1684,6 @@ 43776F991B8022E90074EA36 /* Assets.xcassets in Resources */, 7D7076631FE06EE4004AC8EA /* Localizable.strings in Resources */, 43776F971B8022E90074EA36 /* Main.storyboard in Resources */, - C9886AE51E5B2FAD00473BB8 /* gallery.ckcomplication in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1825,7 +1821,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "carthage_frameworks_dir=${SRCROOT}/Carthage/Build/iOS\nif [ -f $PROJECT_DIR/.gitmodules && [ $ACTION != \"install\" ]; then\nfor varname in ${!SCRIPT_INPUT_FILE_*}\ndo\nexport ${varname}=${!varname/$carthage_frameworks_dir/$BUILT_PRODUCTS_DIR}\ndone\nfi\n/usr/local/bin/carthage copy-frameworks"; + shellScript = "carthage_frameworks_dir=${SRCROOT}/Carthage/Build/iOS\nif [ -f $PROJECT_DIR/.gitmodules && [ $ACTION != \"install\" ]; then\nfor varname in ${!SCRIPT_INPUT_FILE_*}\ndo\nexport ${varname}=${!varname/$carthage_frameworks_dir/$BUILT_PRODUCTS_DIR}\ndone\nfi\n/usr/local/bin/carthage copy-frameworks\n"; }; 43FF3DF620A8EFE800F8E62C /* Copy Frameworks with Carthage */ = { isa = PBXShellScriptBuildPhase; @@ -2619,7 +2615,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = Loop/Loop.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = UY678SP37Q; INFOPLIST_FILE = Loop/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; "OTHER_SWIFT_FLAGS[sdk=iphonesimulator*]" = "-D IOS_SIMULATOR"; @@ -2636,7 +2632,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = Loop/Loop.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = UY678SP37Q; INFOPLIST_FILE = Loop/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER)"; @@ -2652,7 +2648,7 @@ CODE_SIGN_ENTITLEMENTS = "WatchApp Extension/WatchApp Extension.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = UY678SP37Q; FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/Carthage/Build/watchOS"; INFOPLIST_FILE = "WatchApp Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; @@ -2672,7 +2668,7 @@ CODE_SIGN_ENTITLEMENTS = "WatchApp Extension/WatchApp Extension.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = UY678SP37Q; FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/Carthage/Build/watchOS"; INFOPLIST_FILE = "WatchApp Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; @@ -2692,7 +2688,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = UY678SP37Q; FRAMEWORK_SEARCH_PATHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; @@ -2713,7 +2709,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = UY678SP37Q; FRAMEWORK_SEARCH_PATHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; @@ -2792,7 +2788,7 @@ CODE_SIGN_ENTITLEMENTS = "Loop Status Extension/Loop Status Extension.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = UY678SP37Q; INFOPLIST_FILE = "Loop Status Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER).statuswidget"; @@ -2811,7 +2807,7 @@ CODE_SIGN_ENTITLEMENTS = "Loop Status Extension/Loop Status Extension.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = UY678SP37Q; INFOPLIST_FILE = "Loop Status Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER).statuswidget"; diff --git a/Loop/gallery.ckcomplication/11076976-F7D6-460C-845C-10C8A7003F0D.json b/Loop/gallery.ckcomplication/11076976-F7D6-460C-845C-10C8A7003F0D.json deleted file mode 100644 index 846670445e..0000000000 --- a/Loop/gallery.ckcomplication/11076976-F7D6-460C-845C-10C8A7003F0D.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "tintColor" : { - "green" : 0.5843138, - "red" : 1, - "alpha" : 1, - "blue" : 0 - }, - "class" : "CLKComplicationTemplateUtilitarianLargeFlat", - "textProvider" : { - "textProviders" : [ - { - "shortText" : "120", - "class" : "CLKLocalizableSimpleTextProvider", - "text" : "120↘︎" - }, - { - "class" : "CLKLocalizableSimpleTextProvider", - "text" : "75" - }, - { - "class" : "CLKTimeTextProvider", - "date" : 510206747.733748 - } - ], - "class" : "CLKLocalizableCompoundTextProvider", - "formatKey" : "UtilitarianLargeFlat" - }, - "version" : 30000 -} \ No newline at end of file diff --git a/Loop/gallery.ckcomplication/28C71A33-1C97-4A92-8677-4FE8644380DF.json b/Loop/gallery.ckcomplication/28C71A33-1C97-4A92-8677-4FE8644380DF.json deleted file mode 100644 index 9bf1460c74..0000000000 --- a/Loop/gallery.ckcomplication/28C71A33-1C97-4A92-8677-4FE8644380DF.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "tintColor" : { - "green" : 0.5843138, - "red" : 1, - "alpha" : 1, - "blue" : 0 - }, - "class" : "CLKComplicationTemplateModularLargeTallBody", - "bodyTextProvider" : { - "shortText" : "120", - "class" : "CLKLocalizableSimpleTextProvider", - "text" : "120↘︎" - }, - "version" : 30000, - "headerTextProvider" : { - "class" : "CLKRelativeDateTextProvider", - "relativeDateStyle" : 0, - "calendarUnits" : 64, - "date" : 510206747.738849 - } -} \ No newline at end of file diff --git a/Loop/gallery.ckcomplication/2E750127-9918-4653-8B91-FC0AB09DF91F.json b/Loop/gallery.ckcomplication/2E750127-9918-4653-8B91-FC0AB09DF91F.json deleted file mode 100644 index 15d5f951fb..0000000000 --- a/Loop/gallery.ckcomplication/2E750127-9918-4653-8B91-FC0AB09DF91F.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "tintColor" : { - "green" : 0.5843138, - "red" : 1, - "alpha" : 1, - "blue" : 0 - }, - "class" : "CLKComplicationTemplateModularSmallStackText", - "highlightLine2" : false, - "line2TextProvider" : { - "class" : "CLKRelativeDateTextProvider", - "relativeDateStyle" : 0, - "calendarUnits" : 64, - "date" : 510206747.724802 - }, - "version" : 30000, - "line1TextProvider" : { - "shortText" : "120", - "class" : "CLKLocalizableSimpleTextProvider", - "text" : "120↘︎" - } -} \ No newline at end of file diff --git a/Loop/gallery.ckcomplication/38411872-4973-48F3-AC34-504D40170A49.json b/Loop/gallery.ckcomplication/38411872-4973-48F3-AC34-504D40170A49.json deleted file mode 100644 index b4e7818ff9..0000000000 --- a/Loop/gallery.ckcomplication/38411872-4973-48F3-AC34-504D40170A49.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "tintColor" : { - "green" : 0.5843138, - "red" : 1, - "alpha" : 1, - "blue" : 0 - }, - "class" : "CLKComplicationTemplateCircularSmallSimpleText", - "textProvider" : { - "shortText" : "120", - "class" : "CLKLocalizableSimpleTextProvider", - "text" : "120↘︎" - }, - "version" : 30000 -} \ No newline at end of file diff --git a/Loop/gallery.ckcomplication/59939B64-2F84-4438-8860-91BB63BE827B.json b/Loop/gallery.ckcomplication/59939B64-2F84-4438-8860-91BB63BE827B.json deleted file mode 100644 index 55fc7c648c..0000000000 --- a/Loop/gallery.ckcomplication/59939B64-2F84-4438-8860-91BB63BE827B.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "tintColor" : { - "green" : 0.5843138, - "red" : 1, - "alpha" : 1, - "blue" : 0 - }, - "class" : "CLKComplicationTemplateUtilitarianSmallFlat", - "textProvider" : { - "shortText" : "120", - "class" : "CLKLocalizableSimpleTextProvider", - "text" : "120↘︎" - }, - "version" : 30000 -} \ No newline at end of file diff --git a/Loop/gallery.ckcomplication/688917AC-E1E4-4B66-9B44-6EE17F1D19DB.json b/Loop/gallery.ckcomplication/688917AC-E1E4-4B66-9B44-6EE17F1D19DB.json deleted file mode 100644 index 55fc7c648c..0000000000 --- a/Loop/gallery.ckcomplication/688917AC-E1E4-4B66-9B44-6EE17F1D19DB.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "tintColor" : { - "green" : 0.5843138, - "red" : 1, - "alpha" : 1, - "blue" : 0 - }, - "class" : "CLKComplicationTemplateUtilitarianSmallFlat", - "textProvider" : { - "shortText" : "120", - "class" : "CLKLocalizableSimpleTextProvider", - "text" : "120↘︎" - }, - "version" : 30000 -} \ No newline at end of file diff --git a/Loop/gallery.ckcomplication/AF8DC7FB-6148-4322-BE40-6D6DD3C963A9.json b/Loop/gallery.ckcomplication/AF8DC7FB-6148-4322-BE40-6D6DD3C963A9.json deleted file mode 100644 index e2f54551fe..0000000000 --- a/Loop/gallery.ckcomplication/AF8DC7FB-6148-4322-BE40-6D6DD3C963A9.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "tintColor" : { - "green" : 0.5843138, - "red" : 1, - "alpha" : 1, - "blue" : 0 - }, - "class" : "CLKComplicationTemplateExtraLargeStackText", - "highlightLine2" : false, - "line2TextProvider" : { - "class" : "CLKRelativeDateTextProvider", - "relativeDateStyle" : 0, - "calendarUnits" : 64, - "date" : 510206747.748279 - }, - "version" : 30000, - "line1TextProvider" : { - "shortText" : "120", - "class" : "CLKLocalizableSimpleTextProvider", - "text" : "120↘︎" - } -} \ No newline at end of file diff --git a/Loop/gallery.ckcomplication/Base.lproj/ckcomplication.strings b/Loop/gallery.ckcomplication/Base.lproj/ckcomplication.strings deleted file mode 100644 index f05b483c67..0000000000 --- a/Loop/gallery.ckcomplication/Base.lproj/ckcomplication.strings +++ /dev/null @@ -1,13 +0,0 @@ -/* - ckcomplication.strings - Loop - - Created by Nate Racklyeft on 9/18/16. - Copyright © 2016 Nathan Racklyeft. All rights reserved. -*/ - -/* The complication template example unit string */ -"120↘︎" = "120↘︎"; - -/* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ -"UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/Loop/gallery.ckcomplication/complicationManifest.json b/Loop/gallery.ckcomplication/complicationManifest.json deleted file mode 100644 index 7c531785e5..0000000000 --- a/Loop/gallery.ckcomplication/complicationManifest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "supported complication families" : { - "7" : "AF8DC7FB-6148-4322-BE40-6D6DD3C963A9.json", - "3" : "11076976-F7D6-460C-845C-10C8A7003F0D.json", - "4" : "38411872-4973-48F3-AC34-504D40170A49.json", - "0" : "2E750127-9918-4653-8B91-FC0AB09DF91F.json", - "1" : "28C71A33-1C97-4A92-8677-4FE8644380DF.json", - "6" : "688917AC-E1E4-4B66-9B44-6EE17F1D19DB.json", - "2" : "59939B64-2F84-4438-8860-91BB63BE827B.json" - }, - "client ID" : "com.loudnate.Loop.LoopWatch.watchkitextension" -} diff --git a/Loop/gallery.ckcomplication/it.lproj/ckcomplication.strings b/Loop/gallery.ckcomplication/it.lproj/ckcomplication.strings deleted file mode 100644 index 26493ed457..0000000000 --- a/Loop/gallery.ckcomplication/it.lproj/ckcomplication.strings +++ /dev/null @@ -1,13 +0,0 @@ -/* - ckcomplication.strings - Loop - - Created by Nate Racklyeft on 9/18/16. - Copyright © 2016 Nathan Racklyeft. All rights reserved. -*/ - -/* The complication template example glucose & trend */ -"120↘︎" = "6.7↘︎"; - -/* The complication template example eventual glucose */ -"75" = "3.0"; diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json index f84499ba51..79979e083e 100644 --- a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json +++ b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json @@ -2,13 +2,25 @@ "images" : [ { "idiom" : "watch", - "scale" : "2x", - "screen-width" : "<=145" + "filename" : "Icon-Complication-16x16@2x.png", + "screen-width" : "<=145", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "Icon-Complication-18x18@2x.png", + "screen-width" : ">161", + "scale" : "2x" }, { "idiom" : "watch", "scale" : "2x", "screen-width" : ">145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" } ], "info" : { diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-Complication-16x16@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Icon-Complication-16x16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ff4721e7b3ccd44105093ae28c63a284d18836ac GIT binary patch literal 911 zcmV;A191F_P)Px&Nl8ROR9Fe^S3OJ=Q4oG_J?<~DvXMV?6o-~360oAtR=k+lX|#|7i6&Yb6Judw zWl$3Vwa}KRK&)&?Y|KR}J0KBMq%l?|aDcbte0wa+d;9iWuAyO*%g)T3`DS+Jy?Jv= z9X$J-0o{!M($a9julZf%t5&VGN4mC}_FIdl41B-QM(fp^O6d|QI^lMt z7nD|0X-!Yw7GJEmbxi4h1Gu_$FZ=uN>Rm;2i-_{3xtrsxth4@THh=j3Wap!Gw^m)+ zFn|lo<<`wje@c<+Z3Ggxrj`DzbD7f2v8Su?Ix#D7zP0IBh*W2c3RgoBJK@BT7q6pN zylkc~E(oU~(vB~8Ip>tkd0Gvn(y6YVVn_N^u|1P+$rQAwu5s!skwAz#{A%?bFe7U$ zNV$adnwx14>Z;VpOmX5B(*(PzUE^;|zQpg`;^1X2*_g3kxP$?wQg?Pu>QrP81iQVu zu_yuHoV0i5eR2Gg4dCL>FO>UyMYD{N3)dNAO=mMjyA+WU;HXLG+W;d;okM@Rd!nLA zUk{z*4b1v6mQtl60pOfV71SJQm$D@Ebocmc*qXW~Hr9*)(BbSRqqTY-*4zYZ%)th> zQVZDdA!SAYXs>b+wAYgQV9S#7E?e7&5dase%>d_fezI^hQA;)Kwwb_|G2|NV56PPW zC_drhL6Z?|Q>2Z-r7?UO3~n{)g?Fy^W$9PDl=v`AU@!=|RcviH_Ln1$$;N0tmqQK9^27g?&MLmBIuxY+!4sTG&{N1b|_J zH;Q?Ob8km`HNYA$rTO7r+y_zxn821Y(2)RwNrs0BsmNcFM{ggPFJEEWI4M#O^uXfK zrJAnIvYtJ>Ja$bPx&=Sf6CR9Fe^S4~J%Q4~J+y-`Pk%uS_Ji_lSM(Vy9(D5D=+saY67)S^&Zv}{%D zTD6W;Fr<}9;y6$(N=VzJ5n=?@AVguh)F^V)_ipFR_?-JUGw+SGn+wA|_uO;8`^~xc zo^u{Ru@ybAIS;TxmS3Fhj;=Uv8?J2v;1SNDiZNz!fS(9B2Mi`4#A5M1y`O{P2O`vx z=xXNNy$>83d~L+oG_&ANyteO!FMBldMd-q}uBz1)cK|(c)-SMV$AFE6!M-+B|7cFs zo8-KNT4%ctyN){ooJULmesxG{9zxI-uj!l0wI(MaBEubboO52D6NE7r?-Dk!^Vt1G zi>6$ptZV>uOyn6O83r8xaSZSAl~N0KH$)?4;b?Q2RUVFjZC_>#hVe4s9hX}QYmJYz ze!o>M&tyiSj3`TVXAn|5CM5Ea+1B;Znx6OGieXQ{SBBys{qO-C;=udSar-mV=tqER zzMLFDo$)>zJ=B)yJZHMVc)l;gl_f_-GU8^U9FO*XsN7m{4F7=s!Z<%edx-X)Y$W7x ze$O-Tdh$%Tvb1Ap`@`R!E?@s-=Yv1nDk?hgkIbmHraj0;yVMl)l55Ua2>|bdW!p#m zct%>cK1jb*XA;j#+OI5R*FCH0Nr-DS4<#Mvyl6l&<7~80GPIu75(dd)TaWgl3N%7^ zG$$kr8Zh=$(*;$SF);PWO(R6PNj3o}VeYu93pzGq=zAFmffOS!X}bGrcP#`ZpxP4# zVTpQ5%Ho)010f7+Qsev+?A3ytWa49x#y|=}qY6P7rbJDFD=4^aG)f1_ALBbV6a@-| zL0IB)buXIJ2;m))2$7MyvU;5Q%`_7R9)*_uHA3jc33X%UI+s*k(6JGN3OS`|gs?;y zQEVvxv{PL=+ zY@0TfxEdka!{*jqZ7U!U8=oG#wLc}8AOWoN3=3-F;xFE&=+^W4M8*9RixfvKO;sK*L{G0IH{h@aBz nEd^LpobfPM#P00000NkvXXu0mjfv*7V6 literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Contents.json b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Contents.json index c8ebf0675f..1571c7e531 100644 --- a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Contents.json +++ b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Contents.json @@ -10,6 +10,26 @@ "filename" : "Extra Large.imageset", "role" : "extra-large" }, + { + "idiom" : "watch", + "filename" : "Graphic Bezel.imageset", + "role" : "graphic-bezel" + }, + { + "idiom" : "watch", + "filename" : "Graphic Circular.imageset", + "role" : "graphic-circular" + }, + { + "idiom" : "watch", + "filename" : "Graphic Corner.imageset", + "role" : "graphic-corner" + }, + { + "idiom" : "watch", + "filename" : "Graphic Large Rectangular.imageset", + "role" : "graphic-large-rectangular" + }, { "idiom" : "watch", "filename" : "Modular.imageset", diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json index f84499ba51..aefef2914e 100644 --- a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json +++ b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json @@ -5,10 +5,20 @@ "scale" : "2x", "screen-width" : "<=145" }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, { "idiom" : "watch", "scale" : "2x", "screen-width" : ">145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" } ], "info" : { diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json new file mode 100644 index 0000000000..fe9e93e854 --- /dev/null +++ b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json @@ -0,0 +1,30 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "filename" : "Icon-AppleWatch-42x42@2x.png", + "screen-width" : ">161", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "filename" : "Icon-AppleWatch-47x47@2x.png", + "screen-width" : ">183", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-42x42@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..815478c10a340fd8116b9ab2fca4aaa0b15e702a GIT binary patch literal 6557 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 P00000NkvXXu0mjfqMGDb literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-47x47@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Icon-AppleWatch-47x47@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..28afdee569fa1c7edccc8b648b670a1571755537 GIT binary patch literal 7666 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", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "filename" : "Icon-AppleWatch-47x47@2x.png", + "screen-width" : ">183", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-42x42@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..815478c10a340fd8116b9ab2fca4aaa0b15e702a GIT binary patch literal 6557 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 P00000NkvXXu0mjfqMGDb literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-47x47@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Icon-AppleWatch-47x47@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..28afdee569fa1c7edccc8b648b670a1571755537 GIT binary patch literal 7666 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", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "filename" : "Icon-AppleWatch-36x36@2x.png", + "screen-width" : ">183", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Icon-AppleWatch-32x32@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Icon-AppleWatch-32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e8eefb523caf5098d9f196e298ad72efb06b4137 GIT binary patch literal 4534 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 UXeX`4s{jB107*qoM6N<$g7aI`(*OVf literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Icon-AppleWatch-36x36@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Icon-AppleWatch-36x36@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b3abdc0592957ba8e17ef6e994ee1f19391fe36f GIT binary patch literal 5290 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 literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json new file mode 100644 index 0000000000..e011e32711 --- /dev/null +++ b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json index f84499ba51..df4e8550a6 100644 --- a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json +++ b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json @@ -2,13 +2,26 @@ "images" : [ { "idiom" : "watch", - "scale" : "2x", - "screen-width" : "<=145" + "filename" : "Icon-Complication-26x26@2x.png", + "screen-width" : "<=145", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "Icon-Complication-29x29@2x.png", + "screen-width" : ">161", + "scale" : "2x" }, { "idiom" : "watch", "scale" : "2x", "screen-width" : ">145" + }, + { + "idiom" : "watch", + "filename" : "Icon-Complication-32x32@2x.png", + "screen-width" : ">183", + "scale" : "2x" } ], "info" : { diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Icon-Complication-26x26@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Icon-Complication-26x26@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..48e6ea7a293fc9323514d284eafe047cf9e78b6d GIT binary patch literal 1537 zcmV+c2LAbpP)Px)yGcYrRA>e5SpCx;?YaY1ctH%K&as|rOb^b)mo3bcrRhz25o3Q^YH$IRL*CG^eP zU3=H-IaCugTA%D%x|k8-2?O%jz4f-zZ_p zSrbDorLh8f>F46Q-<_*FK&d<+43mw108A;REYBW-qUQq9uF=nPU|G|!9!^&KOMkcg z>G%-~pnPr5<1V-pO2Jd)(S|5qA>uy-^CZ~#es!>PD#~1)Y)620{#eM?8}Kfzz%HHg zs5AsDLl5q+4wNoLo$JfD1&9D(etyqeu7dpl%J!AT@kE3Mt=OUAZ2FBN7Tu^iBLjN= zx4m~QEjphnpmVZ@gSO%c+_>?@O6uTWQOraFl)tohv)gcH2+RXfjI=9DpyrZx&$Gw2 ze0U|Sj%M@;AdP~^n-jgO7=}Ng0P&e=ZL{E&p?FMh z_KXGix@9LGOD62TO15-IB|Eted##jZ*;^^3Pf+MSO-~Nv#=)S};vYxpJ`3e*s4bVP z72bB0dedl`n569ML<06r-#2wONS67zpI&>=t=A9Iy~W|)I4D@WQ_W6=@xiDEI5azT zm@`E)?=AuL3K{&&tWD3&&+mS&;ldH(8tyQxCv6xyJ~&y^YiUvgmyz!oBN)KzfcRv) zVAzdvX6kdBbkGW4lbuy|(-&ESImRu=89+n1-%2XHm0>WM()W@~6nbv{)klp|K{y|yR%O;yaK8Y*DiRQxcuarpY_caHA z>ittYOvc;gjnoRW6euL!w>I^pHys%$F6s1(E97O(0vHar9L;nJ#=_T7u=!BazDzyK%A=~1ni_Q%#@!l;!>5M)TCNw>{ z>*M$6l*LJ78*EFflYHY2l8&bZ)M_>HrK%lx%i64E#7GRVu^_d>w1Ap^p_nMTsxIB) zu|YE1kbM&Y(W;&ky;CS&y5gLu41*1mZz3Q|QAquM3?3#ra3`A83A#xnQm+OEKzyU zP-=!NO_LL0czkXgbWf11+*d%X1ogj-fILU2*X*@t1+Qoe^mExfa%ubpK_rmO+st*G z(^S-@C1Lg<2}x=_n}_z`{ddaf#oh0bE(tEqyn2R80M45IWR}wz&H(t*Bz~R*pOB*2D*XswJeo<5 zhH2i10>sL>9jg`>zadaVtBi&C)6AM_rj(nRbRe9+8}Hn9H1olqCNZBEe1=+*{1t#3 z=d|?Hbc{Brxu0wojGeTf2@8h33Jr*b`6~c@;@D0Hw95b2bkH{Am6;wmd^w7pNPt)| zuheiRJ;uFex~b|>jD?ZqXvP76&rFn+@pXqjL;i%7&$vHHQk1N4Xg;3(==@4MQGRy> z$T!sKM`Jo)vz!40U7Ef<(=!%8zJaKp^*N*GB-oUj`MSeCV+Eu$%H0`mXmFo`OM9u( n)XnYEx^JNS2D)#c<2Udx%Sj>16#2p!00000NkvXXu0mjfF&FFH literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Icon-Complication-29x29@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Icon-Complication-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2a0fc8ffc0219e05e37292824a017a6413702c6b GIT binary patch literal 1661 zcmV-@27>vCP)Px*H%UZ6RA>e5T3u)yRTRE=CYx+gtn~+JYDG*og^DjqLTW_flRq?@&=?SW5p2?u zkOyCUus#S1LSK9+8uRliQqnYkMGzFRmDU>cO{Lk?qT&WyN~I}nn$67he3PAY(#}11 zW_CAH*@0zd&b{|L=ey_5{W)ias9x0`sP;g$2dX`=c|9O2t!gkgSeI9;I|`QCE|gm@ zl&V)!TJ+1?j+2*`l~1Mb$&c^+=td=NsR+@Ya|d_awA`#xs*8xVD1@|K1z_6h>)yzE%p3v8|NHw#xLIpJk3* zHP+QsNbJ$B3kM%}R-75~;!_&zvWm&Ozt~b{r!phwlK@*u8fE7XJWnL&Hj5-|q={{} z7VBl^aL_tLa(wsYV$%AVlL%UNdBMYei2Ym{m|x>WeP zo?EnOf>@kv8k*DKmR$^8(5VB4t*}{Ft|hu+JK9D7!`_wK*69=`l|vVFa_u>rwM3;W zwsWA^pmXJwC^PBgY}OJjo-VZZD&cNAQKQba6H%zmTB0<|Y0Eq$%W^{zD=9SSyNnBJ=xSA$N@W-U2dJ+C8Mh0|M$|{F0KI9@-*K7_~t0jtD2<On6hfyjV&Xf~xJ*4D`Z)9kvgkK)K%<(Af{In&4b)wlh@u7Zlgd$F(j@Vpqz%1oX^r*L ziH6~?qmo3uNRv?z5P3=DC#i=n2j!dcOr8`8NW!+*M9~Ojk)QOI6bLrsqHhwzHLfRp z(-ILyVLl6853$tF0oN+b{00000NkvXX Hu0mjf=j$bJ literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Icon-Complication-32x32@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Icon-Complication-32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d929b5acc8d2ead7192d78e142bcd5a1677b02e7 GIT binary patch literal 1858 zcmV-I2fg@-P)Px*{7FPXRCodHTTN_KRTRGGy_wV|iUKaMmI!oa3UMW8(vDsn3Kss=2{S~ zZChOdNEQats$||X%51bXL_$x!!U6U6czpDzgkC~Z7XZ>1cdaYU7r!z}JuFdLD-8gg z11I`IHg*7qNo`ln0HmgNK5C3UhF|^8+Dx(Lz67q?o{NqCV9i;cg zRl39nFoy>Xhx5#~J(z8h64tZZ@jmLZq$z z&m(I;yhH}4FTQq%Db9A_vboVHoy2`Z5+~HvcFsUC;=Y7WlZ zjd_@I9W!`etaA)EGewDU-d>_`>S+XI7<Ve$4(Tf&5Qc|UolYKu) zmpWXkW{~!+`{Q?yN*%AZgn+nOIQbH8D)(crSXte^{4-1(?;a5^$KoD9n;cWp-!8AT z>McMXqL9k1&-_-^66%rSi20((EK_9>TZEex?*Y_N}EYNL5a-=IW)9yNH z?6Q*_BlVQI{K;21I%;PDps0=l8%`LFdFu9!aK5aYK!9kpmvoii`Tc4I7>pTqh_e7t zNGplzXu_*!xA$`_yWt@A0NCr-zVzOh&QzhlXX)AJh6O+yo%Z3acnwoD+gH43=_n^(TIa(qb)13AwUaK#QSU6*R{2h1dmsR`{BW5Z+TqbAr&4h< z?n&q3?$Tc!W}!SE{3(JbLCWC;@RplSH1q41l`iT$QGWLO<$MV20T}Rf`w3op4=}!T z-{c#LD>#)nfm0IJ_X-36Cz>u_&c%iZxW95VjcTW$N+3HHL=y-ArLKdRsg0sKj;2xV zBHfG+fdEk6KG1lK=gT2&AYFqRJ>6(Ska*6AKmZns7XIRKh%_Wu@2~Ot7S0CFhd=-p zD>m0_U3^2C97<;R5;VBMOQf*bB(Lh^YY77YmaCYHGC2%M!CA%+kxdL41-tCVFHsgq~7hMlXM5kCEK|&dmsP{!hsERD0|z?UNB^a9MT!& zywr9c0GHqEQ|g+sx4c31q4=fn2WE-|>2iVXEC5?JbWBivo->_N*Ieky$&j?C^8;O4 zoBbRu*-W-`bSwZEc4|7DzzL$fJ*BRMA(uO2>KEG#0(dZnqui``?0K;TEN5=v{ z0_bE0HyIKgWn*VcdaMy3kn{iQ*>AW64cS4qu1Uyhmm&b@SPGrYAmQv~)Yhv-eQw)y ze}bhI5>U6FF|%iJ)_+380x&2&N`tY4{KAs>S)6>>Oe;ymuW$v0@7)~l{4#9Dh*lO{ z?p|CR^K7^GJOOq7cw$s!qi3hbB>a;q?2hTu{5d3-8H0of!Xzayn^7D^)GxQWP7hU* zgf5YNc2}~{_c)!*z!4v@;iMj66nuxjS;`_+m&f7S{9Pqg+O$v}SI^j0pve*_x}csK zPmG+lvdf0JOp9j(b{lOzD?f++t>*y=3p;Sk2q<$0ipL+XuOV&s$M+xfRO0YKu@`CVH}x_FceOn6f) zDR9DbmD*uD=Bu@c_5syQmCxRp96XkSlMuV@tmLcd9+x_r?Q3hR65c-*}shr zCrD3nRPsvhvAY*=sT;%)_ppRsLQ_`&NTIiR!NUnupU3#1Q(}aG=5I$i`)GSB-Qfvj zdL(rRpsW~ojNsMhu|(}vX~P_s2Q{u7XN;mcNnlgfZS&hO0IH3kP?-vqRBuG3T~u|V wqQ#B=hly%CThA>7S_rfdXd%!-;3h)ge|}1&rwH|7TL1t607*qoM6N<$f?2n4ng9R* literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json index f84499ba51..be2006d7ea 100644 --- a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json +++ b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json @@ -2,13 +2,26 @@ "images" : [ { "idiom" : "watch", - "scale" : "2x", - "screen-width" : "<=145" + "filename" : "Icon-Complication-20x20@2x.png", + "screen-width" : "<=145", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "Icon-Complication-22x22@2x.png", + "screen-width" : ">161", + "scale" : "2x" }, { "idiom" : "watch", "scale" : "2x", "screen-width" : ">145" + }, + { + "idiom" : "watch", + "filename" : "Icon-Complication-25x25@2x.png", + "screen-width" : ">183", + "scale" : "2x" } ], "info" : { diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Icon-Complication-20x20@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Icon-Complication-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3e64959cdc312015b9409936a896cc89a5c2b912 GIT binary patch literal 1182 zcmV;P1Y!G$P)Px(SV=@dR9Fe^SkG@%RTRGG&U9v)Dx`@tP(dSPiixnX=)#3;aK}J3=>iBCptJ_U zh94VUm=M_2h0&n2g@8XulO_t&zd#oR#VtnKG_W8OtP5;wVW#ce>-ip?WVrXdH*aPn zxaeE-&He5@-}&CTzs{*rE6+*md^9955M@dStg=0d)H~K%Es7vz*}+Xx`dYdr`OVmC=O2jUBEY%??tgHqZDw}% zgtg|hRqDkEUa4zdD?ONQPY#ZCoc~7}AYriu?wT6dX3FMAp33zSQCy5277{A?{ox?w5Hv?#BPBS>pD+=?)ifv<)tBdiH{EPara3&yazIh4Pyc-UwD&TjISZeGZ->wmh#G>go}11%rHtK+i{HcR1Og7`a?RjVs$V>T zFhmXE5^%dM$V!BcdZ6OM;#qLHHX%O!n*@d^aQNk?Kb$ggR&v-SkK5ikF>sKx8OeTr z*{4S(Mi40y3LI}V08W{Zm56;2AjFY17o;J4ynGf`@rmgcNP4G_zEFI)aEEt`c(d?9 zdl?sht@{~k4$~SEIbKexkZDhC4y*J+1wv%cosZr|fx~+`gSPu1E8!0q#od~0p<9Vp zcTD3D#yN*$DcJc>HiWn40xqIbLeci?T|>XP+?95uKn&V7d1Rk4_PdHf)SL6gGWx|s zSTNK&u|J=^5XmjB!D_C2cKCZ#UpyDZYFzpaVX?$<4y`-Zdjw89cse_!g=!()1~R)m#Oy<2}#2^$a#dTyfxz9l>fLK~aSo0%`jH w>7Pf{A}hax|8zaWf4^1yth`qu@Vp}MFCqJ+mNMsJxBvhE07*qoM6N<$g0-taS^xk5 literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Icon-Complication-22x22@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Icon-Complication-22x22@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1593033216c90bcf748aac43ada05acc4b570aa1 GIT binary patch literal 1290 zcmV+l1@-!gP)Px(#7RU!R9Fe^SxtyrRTRGGz0}F5Ad2I{R#3;u__K5rS2M0{U&MuiRb0(vC^!p| zQvaYuu$FG5f?{XdmExw0fn+RoAy^UoL0nn1iOyJr6crWiz)VQ;uHSjdE6Ka(zW0(h z+D+c(<({AKeDB=9b8nOyJ);baGGJujh(3}l>C!Gku>%6iis98ux2jFOPb;;Tl%53M z?Ml&vR+>oB?~vCa+aRK|IdaOY_q_L8mY72mE>;(3we}Ay(sNoXHw_7p_Lb6~Yu9~! zZSv$NX?&tK0~3C{ws^m<{o`8ey-~11+6a6u=jIL~Ahks zi5d<$^W~|NAH-Poshqx+r2&HE)k<%m>p$EvvK&k6G2d^$?_HdKlVe!I_lZ*(1!R5y zl|Ijy24-6u@iE_YF2<}+1tP~P)2CkU6AFz)!aNK(vx4tc5mtlCn0#k2nabmid*OjQ zZwpp}Z#Vv$aN3Rg+J3u;{5^$??!M|I{2+3ksT7tIVhN6+s5`;Fu?+)!?G@!XNAvj` zPMo>pt*y{cdN0+M#(vh@OVGUryqhE&MQR%>$xLNx<$|b(FgC+pbzu$Q;%b0y|1qbo zE3Ova{oV#H$&2d;ru}BCjNwv{^dS6ErLeM3(y`1+*sCqfXrASzBk|%Aqyc+NX6L5wSno`J@mve8!$W@o58%D-hLD?xd+c=1X z`E&~h92g@H>e+6I7*Pz@yyQ2Ymuh5=P40L_LN#V#XoSN3Jhn)qo&eb2IafWrI=NB} zZHIY3@zX+~)mC3iwK0~t&nksea}utYVK(HWxa7bAnk`k~5>e8pk?p^9;O16KmnE|7 zZ;Q=3D`CDjK>E+Ik@@HX*R$S6>0VP8FX7By*=~M;RbX1QB>Fh+&caHV!T8<)HETlz zM)9qi`YROrhmh^WV?R%@;>FU7!7#9sZMZHS6ytS;)-fD96>E#n@=-i&OYfjW+=)Y| zL(k!)kq}E_5RnD<21>mY5nG#F8w`5PM^7GKE36!{f_4?LLn3s3u(0PT=}ho z>{;G!%XgpnHHvY~+yCWX2G{)KMg&F~$e4kD0S_)OR#sB~S07*qoM6N<$f(u`7 AssI20 literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Icon-Complication-25x25@2x.png b/WatchApp Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Icon-Complication-25x25@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2e5645d8851ac3f30bd3045a1e0e3ee22d35fb67 GIT binary patch literal 1429 zcmV;G1#0?Px)Pf0{URA>e5Sxab~RTRGGPNq(6S_smG(^`qmq&tf?-H1g~+$hZ?6|!;VCW*FW zRS4)p2PufLA`(zD*|_krD45Pn=%Oe>E2Yqfm|Zhd>XJCJ0u4}ar#1$2j6LY(# zzpdrC^+E$#pM|mG%J<)Na}iPsV6rc@GN1WpQ@q zpsVYZ{PxMauDZ@ZG>AX{IjfX-%GG#NasWTduC4>FV4Q&H<+Lz5>pBxSqW6SSXYu!E z+{jC~gMI8L1&GIm63?NXP8W~>qOdQubI4_xb+{NzmvB!wEGH1~y^!ieBGGw^(ss9*OVhKiU29ts1K#I3;g@l9|Hi7=VnHPq2)&(fB=~0s$Ro|n zL@?m|6Cd4H5IY*ASNar-e$Q11fnOGg^2$R2*#})Zo#s;0g$IO)KD14MbDTL_Oe_#Q z@A=ysk66xGvvhnne!$wW#AF0Q`2?O4#-})4c8SE+Gpw^F8DyJ$n9NX26q|`>1af!n zcG4uQX?SCEmmRAUf}w4r4^D*=HWSYXWKAlgur>f<(PSu6n#G6CIt|W@Kqx&m$Z8S@ zd6VNsMYsB3Vlx7v9GeRYkHJuR0%ylYxB1{=GX_kB0@e||Vq4uTKDgM7K&aZm#!64| zRyT_eE;b_&Z;Rmf0p=6*6mJz4Z5w@X_Nkm?;u(PylG%Is)Wnj_#zsjId=w zxNFVxW~12n!z#0B)nEOZ13@v^V$pp1!!-;R(#6qB_-lMXuIs^hN{T3-;OyAwG!p~@ zm(;VI9D?`(Q|Wy;D~gk;Gb5m=jL9jl)73Mo{P#s%hKKBO8@aS6XgS$Hkd_oMVFN)j z);&T3)DA6-yoYtEI)G3RlOoC|=qb(}lVQq1)Q!PMrGvX;*A_GF{e?- z(bEMw9HvEj0OERRs6dDMr~6Vn2V4qtPC#g6(!Wn^^_Q2=;mqu%eybY>Hor}7KJZ0q z>Ms{x);&^ffNHQ*i^Yu>d9GgVM}Ol?gaJW1&Ok_*z)&p~7w)^%Z$-mpd4iUc>r7N) za9&y!g~~4$%=&c&5Q}FOS~I_N#M0@M>z(AM z0#a@G@YS)sW$6!68OeTu>N9^HPo$gxdFns$&(LZh)!$UIp-PM{Vg&v@O}P%G3DxrL j@Ae3^N1#0d&Li+IAOaT$?;+5!00000NkvXXu0mjft)-(J literal 0 HcmV?d00001 diff --git a/WatchApp Extension/Base.lproj/ckcomplication.strings b/WatchApp Extension/Base.lproj/ckcomplication.strings index f05b483c67..a859782678 100644 --- a/WatchApp Extension/Base.lproj/ckcomplication.strings +++ b/WatchApp Extension/Base.lproj/ckcomplication.strings @@ -6,8 +6,5 @@ Copyright © 2016 Nathan Racklyeft. All rights reserved. */ -/* The complication template example unit string */ -"120↘︎" = "120↘︎"; - /* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ "UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/WatchApp Extension/ComplicationController.swift b/WatchApp Extension/ComplicationController.swift index e889eeb229..fc9aeeb9ce 100644 --- a/WatchApp Extension/ComplicationController.swift +++ b/WatchApp Extension/ComplicationController.swift @@ -52,6 +52,8 @@ final class ComplicationController: NSObject, CLKComplicationDataSource { { template.tintColor = UIColor.tintColor entry = CLKComplicationTimelineEntry(date: glucoseDate, complicationTemplate: template) + } else if let image = CLKComplicationTemplate.imageTemplate(for: complication.family) { + entry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: image) } else { entry = nil } @@ -69,62 +71,24 @@ final class ComplicationController: NSObject, CLKComplicationDataSource { let entries: [CLKComplicationTimelineEntry]? if let context = ExtensionDelegate.shared().loopManager.activeContext, - let glucoseDate = context.glucoseDate, - glucoseDate.timeIntervalSince(date) > 0, - let template = CLKComplicationTemplate.templateForFamily(complication.family, from: context) + let glucoseDate = context.glucoseDate { - template.tintColor = UIColor.tintColor - entries = [CLKComplicationTimelineEntry(date: glucoseDate, complicationTemplate: template)] + if glucoseDate.timeIntervalSince(date) > 0, + let template = CLKComplicationTemplate.templateForFamily(complication.family, from: context) + { + template.tintColor = UIColor.tintColor + entries = [CLKComplicationTimelineEntry(date: glucoseDate, complicationTemplate: template)] + } else { + entries = [] + } + + if let image = CLKComplicationTemplate.imageTemplate(for: complication.family) { + entries?.append(CLKComplicationTimelineEntry(date: glucoseDate.addingTimeInterval(.hours(1)), complicationTemplate: image)) + } } else { entries = nil } handler(entries) } - - // MARK: - Placeholder Templates - - func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) { - - let template: CLKComplicationTemplate? - - let glucoseText = CLKSimpleTextProvider.localizableTextProvider(withStringsFileTextKey: "120↘︎", shortTextKey: "120") - let timeText = CLKRelativeDateTextProvider(date: Date(), style: .natural, units: .minute) - - switch complication.family { - case .graphicCorner, .graphicCircular, .graphicRectangular, .graphicBezel: - template = nil - case .modularSmall: - let modularSmall = CLKComplicationTemplateModularSmallStackText() - modularSmall.line1TextProvider = glucoseText - modularSmall.line2TextProvider = timeText - template = modularSmall - case .modularLarge: - let modularSmall = CLKComplicationTemplateModularLargeTallBody() - modularSmall.bodyTextProvider = glucoseText - modularSmall.headerTextProvider = timeText - template = modularSmall - case .circularSmall: - let circularSmall = CLKComplicationTemplateCircularSmallSimpleText() - circularSmall.textProvider = glucoseText - template = circularSmall - case .extraLarge: - let extraLarge = CLKComplicationTemplateExtraLargeStackText() - extraLarge.line1TextProvider = glucoseText - extraLarge.line2TextProvider = timeText - template = extraLarge - case .utilitarianSmall, .utilitarianSmallFlat: - let utilitarianSmallFlat = CLKComplicationTemplateUtilitarianSmallFlat() - utilitarianSmallFlat.textProvider = glucoseText - template = utilitarianSmallFlat - case .utilitarianLarge: - let utilitarianLarge = CLKComplicationTemplateUtilitarianLargeFlat() - let eventualGlucoseText = CLKSimpleTextProvider.localizableTextProvider(withStringsFileTextKey: "75") - utilitarianLarge.textProvider = CLKSimpleTextProvider.localizableTextProvider(withStringsFileFormatKey: "UtilitarianLargeFlat", textProviders: [glucoseText, eventualGlucoseText, CLKTimeTextProvider(date: Date())]) - template = utilitarianLarge - } - - template?.tintColor = UIColor.tintColor - handler(template) - } } diff --git a/WatchApp Extension/Controllers/ChartHUDController.swift b/WatchApp Extension/Controllers/ChartHUDController.swift index 172aefc71b..11770e69fa 100644 --- a/WatchApp Extension/Controllers/ChartHUDController.swift +++ b/WatchApp Extension/Controllers/ChartHUDController.swift @@ -63,6 +63,11 @@ final class ChartHUDController: HUDInterfaceController, WKCrownDelegate { timer = Timer.scheduledTimer(withTimeInterval: pixelInterval, repeats: true) { [weak self] _ in self?.scene.setNeedsUpdate() } + + if #available(watchOSApplicationExtension 5.0, *) { + scene.textInsets.left = max(scene.textInsets.left, systemMinimumLayoutMargins.leading) + scene.textInsets.right = max(scene.textInsets.right, systemMinimumLayoutMargins.trailing) + } } override func willDisappear() { diff --git a/WatchApp Extension/Extensions/CLKComplicationTemplate.swift b/WatchApp Extension/Extensions/CLKComplicationTemplate.swift index 1a3e54331f..c8f636d34e 100644 --- a/WatchApp Extension/Extensions/CLKComplicationTemplate.swift +++ b/WatchApp Extension/Extensions/CLKComplicationTemplate.swift @@ -93,4 +93,63 @@ extension CLKComplicationTemplate { return template } } + + static func imageTemplate(for family: CLKComplicationFamily) -> CLKComplicationTemplate? { + switch family { + case .modularSmall: + guard let image = UIImage(named: "Modular") else { return nil } + + let template = CLKComplicationTemplateModularSmallSimpleImage() + template.imageProvider = CLKImageProvider(onePieceImage: image) + return template + case .modularLarge: + return nil + case .utilitarianSmall: + guard let image = UIImage(named: "Utility") else { return nil } + + let template = CLKComplicationTemplateUtilitarianSmallSquare() + template.imageProvider = CLKImageProvider(onePieceImage: image) + return template + case .utilitarianSmallFlat: + return nil + case .utilitarianLarge: + return nil + case .circularSmall: + guard let image = UIImage(named: "Circular") else { return nil } + + let template = CLKComplicationTemplateCircularSmallSimpleImage() + template.imageProvider = CLKImageProvider(onePieceImage: image) + return template + case .extraLarge: + guard let image = UIImage(named: "Extra Large") else { return nil } + + let template = CLKComplicationTemplateExtraLargeSimpleImage() + template.imageProvider = CLKImageProvider(onePieceImage: image) + return template + case .graphicCorner: + guard #available(watchOSApplicationExtension 5.0, *), let image = UIImage(named: "Graphic Corner") else { return nil } + + let template = CLKComplicationTemplateGraphicCornerCircularImage() + template.imageProvider = CLKFullColorImageProvider(fullColorImage: image) + return template + case .graphicBezel: + guard #available(watchOSApplicationExtension 5.0, *), let image = UIImage(named: "Graphic Bezel") else { return nil } + + let template = CLKComplicationTemplateGraphicBezelCircularText() + template.circularTemplate = { + let template = CLKComplicationTemplateGraphicCircularImage() + template.imageProvider = CLKFullColorImageProvider(fullColorImage: image) + return template + }() + return template + case .graphicCircular: + guard #available(watchOSApplicationExtension 5.0, *), let image = UIImage(named: "Graphic Circular") else { return nil } + + let template = CLKComplicationTemplateGraphicCircularImage() + template.imageProvider = CLKFullColorImageProvider(fullColorImage: image) + return template + case .graphicRectangular: + return nil + } + } } diff --git a/WatchApp Extension/Info.plist b/WatchApp Extension/Info.plist index 44c9ce1e78..95a54bc0cc 100644 --- a/WatchApp Extension/Info.plist +++ b/WatchApp Extension/Info.plist @@ -26,13 +26,16 @@ $(PRODUCT_MODULE_NAME).ComplicationController CLKComplicationSupportedFamilies - CLKComplicationFamilyModularSmall CLKComplicationFamilyCircularSmall CLKComplicationFamilyExtraLarge - CLKComplicationFamilyUtilitarianSmallFlat - CLKComplicationFamilyUtilitarianLarge + CLKComplicationFamilyGraphicBezel + CLKComplicationFamilyGraphicCircular + CLKComplicationFamilyGraphicCorner CLKComplicationFamilyModularLarge + CLKComplicationFamilyModularSmall + CLKComplicationFamilyUtilitarianLarge CLKComplicationFamilyUtilitarianSmall + CLKComplicationFamilyUtilitarianSmallFlat NSExtension diff --git a/WatchApp Extension/Scenes/GlucoseChartScene.swift b/WatchApp Extension/Scenes/GlucoseChartScene.swift index b5a11687ee..2745459773 100644 --- a/WatchApp Extension/Scenes/GlucoseChartScene.swift +++ b/WatchApp Extension/Scenes/GlucoseChartScene.swift @@ -28,7 +28,7 @@ private enum NodePlane: Int { private extension SKLabelNode { static func basic(at position: CGPoint) -> SKLabelNode { let basic = SKLabelNode(text: "--") - basic.fontSize = 12 + basic.fontSize = UIFont.preferredFont(forTextStyle: .caption2).pointSize basic.fontName = "HelveticaNeue" basic.fontColor = .chartLabel basic.alpha = 0.8 diff --git a/WatchApp Extension/de.lproj/ckcomplication.strings b/WatchApp Extension/de.lproj/ckcomplication.strings index 57e3b0a8e6..6839fc3047 100644 --- a/WatchApp Extension/de.lproj/ckcomplication.strings +++ b/WatchApp Extension/de.lproj/ckcomplication.strings @@ -1,6 +1,3 @@ -/* The complication template example unit string */ -"120↘︎" = "120↘︎"; - /* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ "UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/WatchApp Extension/fr.lproj/ckcomplication.strings b/WatchApp Extension/fr.lproj/ckcomplication.strings index ba82abd915..346c8f6ec3 100644 --- a/WatchApp Extension/fr.lproj/ckcomplication.strings +++ b/WatchApp Extension/fr.lproj/ckcomplication.strings @@ -6,9 +6,6 @@ Copyright © 2016 Nathan Racklyeft. All rights reserved. */ -/* The complication template example unit string */ -"120↘︎" = "120↘︎"; - /* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ "UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/WatchApp Extension/it.lproj/ckcomplication.strings b/WatchApp Extension/it.lproj/ckcomplication.strings index 57e3b0a8e6..6839fc3047 100644 --- a/WatchApp Extension/it.lproj/ckcomplication.strings +++ b/WatchApp Extension/it.lproj/ckcomplication.strings @@ -1,6 +1,3 @@ -/* The complication template example unit string */ -"120↘︎" = "120↘︎"; - /* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ "UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/WatchApp Extension/nb.lproj/ckcomplication.strings b/WatchApp Extension/nb.lproj/ckcomplication.strings index f05b483c67..a859782678 100644 --- a/WatchApp Extension/nb.lproj/ckcomplication.strings +++ b/WatchApp Extension/nb.lproj/ckcomplication.strings @@ -6,8 +6,5 @@ Copyright © 2016 Nathan Racklyeft. All rights reserved. */ -/* The complication template example unit string */ -"120↘︎" = "120↘︎"; - /* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ "UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/WatchApp Extension/nl.lproj/ckcomplication.strings b/WatchApp Extension/nl.lproj/ckcomplication.strings index f05b483c67..a859782678 100644 --- a/WatchApp Extension/nl.lproj/ckcomplication.strings +++ b/WatchApp Extension/nl.lproj/ckcomplication.strings @@ -6,8 +6,5 @@ Copyright © 2016 Nathan Racklyeft. All rights reserved. */ -/* The complication template example unit string */ -"120↘︎" = "120↘︎"; - /* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ "UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/WatchApp Extension/pl.lproj/ckcomplication.strings b/WatchApp Extension/pl.lproj/ckcomplication.strings index f05b483c67..a859782678 100644 --- a/WatchApp Extension/pl.lproj/ckcomplication.strings +++ b/WatchApp Extension/pl.lproj/ckcomplication.strings @@ -6,8 +6,5 @@ Copyright © 2016 Nathan Racklyeft. All rights reserved. */ -/* The complication template example unit string */ -"120↘︎" = "120↘︎"; - /* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ "UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/WatchApp Extension/zh-Hans.lproj/ckcomplication.strings b/WatchApp Extension/zh-Hans.lproj/ckcomplication.strings index 57e3b0a8e6..6839fc3047 100644 --- a/WatchApp Extension/zh-Hans.lproj/ckcomplication.strings +++ b/WatchApp Extension/zh-Hans.lproj/ckcomplication.strings @@ -1,6 +1,3 @@ -/* The complication template example unit string */ -"120↘︎" = "120↘︎"; - /* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ "UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/WatchApp/Assets.xcassets/AppIcon.appiconset/38mm Home Screen.png b/WatchApp/Assets.xcassets/AppIcon.appiconset/38mm Home Screen.png deleted file mode 100644 index b9b45b2865667d5e5c037b589846ab5b87bf4314..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5679 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 M07*qoM6N<$f@8y{B8LO4DMUZ; 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 literal 0 HcmV?d00001 diff --git a/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-24x24@2x.png b/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-24x24@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..82bdb41f422415ee3e21b8084aa9d5cb01462ddb GIT binary patch literal 2577 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 literal 0 HcmV?d00001 diff --git a/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-27.5x27.5@2x.png b/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-27.5x27.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..27d3087b557e34fc53a47fa4a28a82812d4e7269 GIT binary patch literal 3314 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 QB=Ad7~hgKCVgyPah0}&8hiM;8JVDg!eH zHp?7`q|K7yV^TS};?58bzB0w|oOk#(#;eq?5~dxU5scyu*>~Pz&~GTQBj=6!Y>X-G z_%(U^m!-&I3)^bXx?I+xs22{(DTOiLF~Utb)d8uNJ)vY2ieuR2V>K|!f<7I4wo{WS z=Y6DX?fU)tQ%lBm>f1lE`n#d^r~lmAwxP6}O9Nw%2kBI0UPfGWI`0fVu7vYW`;B)! zr|te-?$o|pzGh}=EN(R7fL!i|dF{MY*Cp-Nd^7M3BDO)keSEwB_I|vVq#HteXZzr8 wfE;)Xq?;_OztyH=@!;DRMyq!FmHT!2ErT(%7D0No^#A|>07*qoM6N<$g36kP6#xJL literal 0 HcmV?d00001 diff --git a/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-40x40@2x.png b/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d9782e69839dcd7a86bff96f23b1937780534c77 GIT binary patch literal 5659 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 literal 0 HcmV?d00001 diff --git a/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-Companion-29x29@2x.png b/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-Companion-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7df2e309fcc6c19048faa8d7336cdb68dd48373c GIT binary patch literal 3566 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 literal 0 HcmV?d00001 diff --git a/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-Companion-29x29@3x.png b/WatchApp/Assets.xcassets/AppIcon.appiconset/Icon-AppleWatch-Companion-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..77b33293cbd0d69fc9d6d88c4a03f20a179b41f1 GIT binary patch literal 6303 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 diff --git a/WatchApp/Assets.xcassets/bolus.imageset/Bolus Icon 42mm.pdf b/WatchApp/Assets.xcassets/bolus.imageset/Bolus Icon 42mm.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9b1f69cc2d652963a1656670c8d396fff5bd0c8a GIT binary patch literal 3948 zcmai1c{o&k8@5bg$WoR_b&@3|X3SWovM+8HE1<%JEC3}#yax$KWWGJnB%D6ZiGalcnwnrA z5)p^?1P8Fkp{V@z5WaVdB5DVP7QA0!XT|RFZ-#;kjpQxR?^hn$o2Tw*GV#b7rP^L> z0=LL*i=NnVa3An&#G`pH( zVR;_(D!=CPJ&b#vUDcH8XKK^OR&v;v==ubqG{wl5J#)o6H0z|SH&hM5+GH)2 zf2+rtKyMtNWQKP6{v_hONC50dZ7gs;1Ye>P&IeHa0q7CDNX&g7fK^WmR-JzGvG#w} z*NjMTvc!=9TPCT#Az%+E=@C2#L`!e96AoZCK+gvXsQo1PjYIu6j-Ne3e2-E(%}hv1 zht(%9W|IIVeViZO31@-S{r~ODyy<_&azHeSPE(`3+$jafEJ+0M0I!Z4iGa+bjYG{i zBEx0<^tTxb3(23uo_WrWjFNIP5azvh71PhNAZXTHXRdF+7$m#%%$2At4rOe%SPu_O zJn0{BnG5c(W;6SG6;w~MVh@F9TM5rj)!FUb)!w+mv0IRx--`YDh_f>YxvJ06^OdHN zo_^n`xng-%F%(OEt59nu>(jRtk|?F7C%v5wY|yKE;)<*ogCoVVqDfqN3-n?sRbDv~ zsw|q#lk-4ow6V-%xnTSVwJnVzJC-eB-6{SIeuqpo8_JLw$t8ob?b2l4yX0Qx!qLtc zXRt9=4t000-Zo`}2&X%COvq+?L@OHzi_bFz_ zTJ6B_zAKiS8m&PaXXj<7>34Lus1?WGmO5jN6K=1nJ*qol*v&L&m9i;sN>j~z(u+XhKDIaI211IkPL-+a}EJ) z;h{!?oHscYjX3byphr5Iui3yl(AVsK*WA3>dcuNUf=*vm_1>;P$sQaol*ZAG-tn64uh4<=rACp%wR@d41gkD`|G21MZ1Zc^riX843J(d!EJ_C0-ok z+#Z#UPTMWoEIt}#O&-CVL-%1!AiZf$Y3EGE##NmKVPR`m?_qi$=3B`<(DLI^6}lC7 zwDH`9_zSk>l!u(J(bLBz`CFcge~|RPQnlMo*-NDq^hBVaObwlC*fAnIAMot(knr49 zfjXbhn9B!hz#)<$`-bE9H`mG~@YsOduL>Nv2}pZLpAnScp5WdL7pjMwhuue!q#^|a z8|^Ui4{yBId1fprdpcRzI8s{7LRvn(GVF}8o0Pq*hAizsa@#R1lDOMi+W}Q7odr0` z2qbBlr5utKMwv(&=nkAlm^{@E)DG0UXR+hHSC3UuT6Lxkil!fI60C$whEWzNqirS0 z#fk2zQo8b=q~7VY%h!vJFQn>op>b4Ki|4G1oB} zm}tzk4=PROGS8C2lAi2D6>3kGzmmCkKti|sUf`>$%2Soc-r(Lq_9E5tHoB81o0j%} zq%HB_WN@~OLkvlV1f$}G#rAs0g;kh^_&stmnM#gdgpWU^kJ8_&mf;B);nU3(Sv9D2|%B!P; zs@C1UGZFpDl4F_qT(+ip zR!LS~Ewa`&gjXZh zDmGJeP}EUjM#1vvl)`>%dFyRfo|T`<*Bjn6X1Los1-C@HjXG6y<`0fPE-5@Z>{mMz zd_2Rxd{C5nno3{hUzXaC-GFjwLpWgL{RhK8{p%&XY&E^3eK z&b027@7&Ru%gZPBS*+*iZerKPkt#`Iq9Rt2>=@vk-E;PB>Zr}sddI2$xCy^T&&I*m z8UveE8%G3A3M3+9TT%*=CnV^+4%aDV=M&GDJxN-@%(=}KXdcsy){N8KRpVDv9IUj8 z-sITyTOVBP|2(nYzkvd&gC6jF1m}SaLFc$Md6ju~Zu12-)Unr5ukKfRo~_*f`OXqW*?$$R>kc zv2f+p;K``b=?~!1Sw)!L&5G$a#K(-n zc6w=oW1aQI!~6E^-#aY06}_vzkYQT7QmD;_1dfMN~zrx$$P*r@H1Nw40vj+Wf0*%mypZoi>4v|Js`xUrSFhckBj`mAEjr7eed8k508n_XOm0uEXo zLF${Xn@-cCIdWjs;X6fIC7Zpg{mzB7rRlr<7w8q&UE(9F^pv(z*UC^0+vtV#BZifR zpO7U;I(dye81!(d>2o`o(mfhcEC21UmDH}{tSkN-G#5-;<7fA-sdO!qq5Cz6^}c1# z3GBzQZh!n-enHGoagEk;*k<;I(^5;~q3C6r}OymO8DZ&pZb}l zLcfbu!mWckPiT~EvK7i6G92Sq(B?JJr z5N3#qGV}f}l6{%V8wx0$#AAJ!;+ZAUnQXraWGE~ApNx8F654~{@x=im0#J1w7y@c1519L+iKHNasoK8_{Q#2u zud_gZ8HPjp$CM#ZbtnW1g{VNFFo+EVBFDV{j{Gf0rW3&WIx*eV_dJ+pOOI))NX!KE zSu*}RClfqH!2bUIclH59oHG~#Kw)6We=a~(MFpk;I0HX17+i(vJy;ju^$UY2Bbff= zpBPM;RlR>=5QsAKSpS77t1<1;e_=4SKlz~lBMuJ#gAWE(`GXIpj9~WVpZ@`a!T-eI z%qIOOjzmP`J#fVD7S<9U#H=6F6j=}m%$Z@$1+$RGUd{yO0R33&Ge_uzDh!K&v%kcC7mV literal 0 HcmV?d00001 diff --git a/WatchApp/Assets.xcassets/bolus.imageset/Bolus Icon 42mm.png b/WatchApp/Assets.xcassets/bolus.imageset/Bolus Icon 42mm.png deleted file mode 100644 index 5228f517319201998338499e26836ccbe4f6cf56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2001 zcmai#dpr}00>>vB*5*w_xN3!z5wp$vJr~WhyOPIN%(QVDQ(lp9FfI+N!$u*`)jZR4 z8lAG`c&^wSDQC;Or-^mS>E6%%1Bdq4mH0OE)C3i-kK ze?z21AwcN3j!J9KZ zw-6%op5D9l`ys;c0Y@x0+iJnTxNGH1gQ)BICg>_7*leKhEvnc;k!XEYrYhUr{B%QJ z{;2%ZmIRfNW*ZR^yw%X7;EhYz5`${CtA%c|iL%jZA zs0whczfh&c;6UK)5fk0y-+V@AonB(qwHkq*cFKyp99&F)QZgRvIEM<21!8q6IT;&L8`ubCLq$Z({5U@>0 z*{+6DhLWkQ%iKf8T-&IZT3+AUKX=VlEmK|I>#8eF=CJl2N16`N!a?JDU?oMK8%zUC z(o;-TJ6YG4ReN@!Ys&rL=~y~q>hkA^UD2C{;n;r63pg0J@D_FG-uS?6z^dx7b`9S$(>`|#ziaOS*u zsbJ4xI8t=w?_w0@qlB5UQu*e=QQ#DswR6;QM%}=y%`uh(0ls5`F|di2^9HNjtZ>C4D?j0;+H%q`#G_5rf{%Fzw94Xx+JWbZ5^(#my=<8iP~kYPXR`mbEh9NrLo2+l6s zQ7oG{FwodQ=b_dby)Jd0o<5WrSUl^;;gzS)>_ohW+(s<%w2i`^BTr`7@OX{{Z?QF^u|2{M-FVVGO@{&sZOd2vI$YCJL=VbA8Ad(lC+_e#x+=7jt&1wvax!u= zdncvdCC+C34F>%MCZXfHfvSO&#liH1V*uvNCtKQ$(b@o?dy)HFI#=?}Eb;jKV0R@1 zRM#SNZg0i+M}QzOT+{8n15YpIJ}{^Gh4Z1b-_YA5amEO z?>6Y=f?%E|;;jS{JY?gb^jih0Nh=h7iUB~i=*I8nAN|( z;@=gV*F-`BT^-?t|m?@iG}ad(pL3@Kjtq4dNdHXuf6 z#Y`H)m-iSk%A+OKhwVIf*%XmGb08(OtJ(uO&;o0hKH!;rth}mq9uQiHdtF#rWi+xN zz3`-m(~bt?Mbj~=eAtH^;fZ?l{>t%{cF-Kr36>WI`>DI<+mWB4iOnAUWNjBR7_a5{ zg!folpX{UNZyJ4H2Hou97I_bs7l0ogmNU>?ErRR02;T92yMOdQQL)fR93ViO)_ze= zuUSxnFU4Gk04dY)X(3%_Jp&R3n;oOZM>9iA0y#Xc3exmMlf>!GFf(b^)pE6tI(^;K ziqs)f!G>hUL{*+TC~69IwsweltvjCoq|cHR@2MQg$>F7{>GSTR`GK-b^8nb|yym0G zixz@Z9iLxNg&VIJg?^+NWV002l%AKTt!gvJmxWU#Z=OErOT{H-Qlb24?r z(0CBKWaOuUM`Siv`T- z{x3yz$z*Ho!jzke3wc2!`7Godd;+Szb(DhLfstLa;IfnOB6pv%8}J$3Nf=`&Ng@}h zS)8V+uT<#&ZLj{=?m(yv^N|{{D|Z>40|#DJ;ML1 e=5XPqY=tQwT>ZYIZP7nI8sO)B%M diff --git a/WatchApp/Assets.xcassets/bolus.imageset/Contents.json b/WatchApp/Assets.xcassets/bolus.imageset/Contents.json index c2810020f3..e2504681a7 100644 --- a/WatchApp/Assets.xcassets/bolus.imageset/Contents.json +++ b/WatchApp/Assets.xcassets/bolus.imageset/Contents.json @@ -1,5 +1,29 @@ { "images" : [ + { + "idiom" : "watch", + "filename" : "Bolus Icon 42mm.pdf" + }, + { + "idiom" : "watch", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "screen-width" : ">183" + }, + { + "idiom" : "watch", + "scale" : "2x" + }, { "idiom" : "watch", "filename" : "Bolus icon 38mm.png", @@ -13,9 +37,8 @@ }, { "idiom" : "watch", - "filename" : "Bolus Icon 42mm.png", - "screen-width" : ">145", - "scale" : "2x" + "scale" : "2x", + "screen-width" : ">145" }, { "idiom" : "watch", @@ -28,6 +51,7 @@ "author" : "xcode" }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "template", + "auto-scaling" : "auto" } } \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/carbs.imageset/Carb Icon 42mm.pdf b/WatchApp/Assets.xcassets/carbs.imageset/Carb Icon 42mm.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a41b291aa7d1d60cc3406c9519376f4bccde6075 GIT binary patch literal 4590 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 M@_R>6T~`D0ANw@Y6#xJL literal 0 HcmV?d00001 diff --git a/WatchApp/Assets.xcassets/carbs.imageset/Carbs Icon 42mm.png b/WatchApp/Assets.xcassets/carbs.imageset/Carbs Icon 42mm.png deleted file mode 100644 index f82562455205b320a66cf87f82686be7e492ef56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2876 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 UNwo9-Q->)uRrMa#D%+#}0VmmW=>Px# diff --git a/WatchApp/Assets.xcassets/carbs.imageset/Contents.json b/WatchApp/Assets.xcassets/carbs.imageset/Contents.json index 5e0d2deaa5..2eb4ab27dc 100644 --- a/WatchApp/Assets.xcassets/carbs.imageset/Contents.json +++ b/WatchApp/Assets.xcassets/carbs.imageset/Contents.json @@ -1,5 +1,29 @@ { "images" : [ + { + "idiom" : "watch", + "filename" : "Carb Icon 42mm.pdf" + }, + { + "idiom" : "watch", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "screen-width" : ">183" + }, + { + "idiom" : "watch", + "scale" : "2x" + }, { "idiom" : "watch", "filename" : "Carbs icon 38mm.png", @@ -13,9 +37,8 @@ }, { "idiom" : "watch", - "filename" : "Carbs Icon 42mm.png", - "screen-width" : ">145", - "scale" : "2x" + "scale" : "2x", + "screen-width" : ">145" }, { "idiom" : "watch", @@ -28,6 +51,7 @@ "author" : "xcode" }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "template", + "auto-scaling" : "auto" } } \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/pre-meal.imageset/Contents.json b/WatchApp/Assets.xcassets/pre-meal.imageset/Contents.json index 581fbb49aa..28da17b6b7 100644 --- a/WatchApp/Assets.xcassets/pre-meal.imageset/Contents.json +++ b/WatchApp/Assets.xcassets/pre-meal.imageset/Contents.json @@ -1,5 +1,29 @@ { "images" : [ + { + "idiom" : "watch", + "filename" : "Pre-Meal 42mm.pdf" + }, + { + "idiom" : "watch", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "screen-width" : ">183" + }, + { + "idiom" : "watch", + "scale" : "2x" + }, { "idiom" : "watch", "filename" : "Pre-Meal 38mm.png", @@ -13,9 +37,8 @@ }, { "idiom" : "watch", - "filename" : "Pre-Meal 42mm.png", - "screen-width" : ">145", - "scale" : "2x" + "scale" : "2x", + "screen-width" : ">145" }, { "idiom" : "watch", @@ -28,6 +51,7 @@ "author" : "xcode" }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "template", + "auto-scaling" : "auto" } } \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/pre-meal.imageset/Pre-Meal 42mm.pdf b/WatchApp/Assets.xcassets/pre-meal.imageset/Pre-Meal 42mm.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b502d5a66442c2ac083eb7803fd52e1aada69dd4 GIT binary patch literal 4541 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 diff --git a/WatchApp/Assets.xcassets/workout.imageset/Contents.json b/WatchApp/Assets.xcassets/workout.imageset/Contents.json index cc9ab23361..1e233ff059 100644 --- a/WatchApp/Assets.xcassets/workout.imageset/Contents.json +++ b/WatchApp/Assets.xcassets/workout.imageset/Contents.json @@ -1,5 +1,29 @@ { "images" : [ + { + "idiom" : "watch", + "filename" : "Workout 42mm.pdf" + }, + { + "idiom" : "watch", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "screen-width" : ">183" + }, + { + "idiom" : "watch", + "scale" : "2x" + }, { "idiom" : "watch", "filename" : "Workout 38mm.png", @@ -13,9 +37,8 @@ }, { "idiom" : "watch", - "filename" : "Workout 42mm.png", - "screen-width" : ">145", - "scale" : "2x" + "scale" : "2x", + "screen-width" : ">145" }, { "idiom" : "watch", @@ -28,6 +51,7 @@ "author" : "xcode" }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "template", + "auto-scaling" : "auto" } } \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/workout.imageset/Workout 42mm.pdf b/WatchApp/Assets.xcassets/workout.imageset/Workout 42mm.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d8db095e6cde9d694e9dadfc9aeb43d0845c6853 GIT binary patch literal 4828 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 From 86ed39bd60a02e06935936a5e7914812d7c10962 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Fri, 19 Oct 2018 08:44:35 -0500 Subject: [PATCH 3/4] bump version for dev --- DoseMathTests/Info.plist | 2 +- Loop Status Extension/Info.plist | 2 +- Loop.xcodeproj/project.pbxproj | 12 ++++++------ Loop/Info.plist | 2 +- LoopTests/Info.plist | 2 +- LoopUI/Info.plist | 2 +- WatchApp Extension/Info.plist | 2 +- WatchApp/Info.plist | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/DoseMathTests/Info.plist b/DoseMathTests/Info.plist index 4507c55102..5963493d6a 100644 --- a/DoseMathTests/Info.plist +++ b/DoseMathTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.9.2 + 1.9.4 dev CFBundleSignature ???? CFBundleVersion diff --git a/Loop Status Extension/Info.plist b/Loop Status Extension/Info.plist index 0e43389ef6..212d75db30 100644 --- a/Loop Status Extension/Info.plist +++ b/Loop Status Extension/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 1.9.2 + 1.9.4 dev CFBundleVersion $(CURRENT_PROJECT_VERSION) AppGroupIdentifier diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index 600791b5a8..ca508159ab 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -2502,7 +2502,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer: loudnate@gmail.com (XZN842LDLT)"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -2574,7 +2574,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer: loudnate@gmail.com (XZN842LDLT)"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -2825,11 +2825,11 @@ CLANG_WARN_SUSPICIOUS_MOVES = YES; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 53; + DYLIB_CURRENT_VERSION = 54; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = LoopUI/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -2852,11 +2852,11 @@ CLANG_WARN_SUSPICIOUS_MOVES = YES; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 53; + DYLIB_CURRENT_VERSION = 54; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = LoopUI/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; diff --git a/Loop/Info.plist b/Loop/Info.plist index 8d8b8ce20c..d9c870279f 100644 --- a/Loop/Info.plist +++ b/Loop/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.9.2 + 1.9.4 dev CFBundleSignature ???? CFBundleURLTypes diff --git a/LoopTests/Info.plist b/LoopTests/Info.plist index 4507c55102..5963493d6a 100644 --- a/LoopTests/Info.plist +++ b/LoopTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.9.2 + 1.9.4 dev CFBundleSignature ???? CFBundleVersion diff --git a/LoopUI/Info.plist b/LoopUI/Info.plist index ead3c07674..f1c2e1159e 100644 --- a/LoopUI/Info.plist +++ b/LoopUI/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.9.2 + 1.9.4 dev CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/WatchApp Extension/Info.plist b/WatchApp Extension/Info.plist index 95a54bc0cc..ece73b3ce7 100644 --- a/WatchApp Extension/Info.plist +++ b/WatchApp Extension/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 1.9.2 + 1.9.4 dev CFBundleSignature ???? CFBundleVersion diff --git a/WatchApp/Info.plist b/WatchApp/Info.plist index 11079c1573..b9cfe59fb9 100644 --- a/WatchApp/Info.plist +++ b/WatchApp/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.9.2 + 1.9.4 dev CFBundleSignature ???? CFBundleVersion From 47c90bf39547d5515bdc3a5edb7596969bb054ab Mon Sep 17 00:00:00 2001 From: Michael Pangburn Date: Sat, 3 Nov 2018 16:13:06 -0700 Subject: [PATCH 4/4] Series 4 complications draft --- Loop.xcodeproj/project.pbxproj | 57 +++++- .../Base.lproj/ckcomplication.strings | 6 + .../ComplicationController.swift | 177 ++++++++++++++--- .../Controllers/ChartHUDController.swift | 34 ++-- WatchApp Extension/Extensions/CGRect.swift | 23 +++ .../Extensions/CLKComplicationTemplate.swift | 115 +++++------ .../Extensions/CLKTextProvider+Compound.h | 20 ++ .../Extensions/CLKTextProvider+Compound.m | 33 ++++ .../WatchApp Extension-Bridging-Header.h | 5 + WatchApp Extension/Info.plist | 3 +- .../Managers/ComplicationChartManager.swift | 130 +++++++++++++ .../Managers/LoopDataManager.swift | 19 ++ .../Models/GlucoseChartData.swift | 101 ++++++++++ .../Models/GlucoseChartScaler.swift | 95 +++++++++ .../Scenes/GlucoseChartScene.swift | 182 +++--------------- 15 files changed, 729 insertions(+), 271 deletions(-) create mode 100644 WatchApp Extension/Extensions/CGRect.swift create mode 100644 WatchApp Extension/Extensions/CLKTextProvider+Compound.h create mode 100644 WatchApp Extension/Extensions/CLKTextProvider+Compound.m create mode 100644 WatchApp Extension/Extensions/WatchApp Extension-Bridging-Header.h create mode 100644 WatchApp Extension/Managers/ComplicationChartManager.swift create mode 100644 WatchApp Extension/Models/GlucoseChartData.swift create mode 100644 WatchApp Extension/Models/GlucoseChartScaler.swift diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index ca508159ab..76c5aa72e9 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -290,6 +290,11 @@ 7D7076631FE06EE4004AC8EA /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D7076651FE06EE4004AC8EA /* Localizable.strings */; }; 7D7076681FE0702F004AC8EA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D70766A1FE0702F004AC8EA /* InfoPlist.strings */; }; 894F71E21FFEC4D8007D365C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 894F71E11FFEC4D8007D365C /* Assets.xcassets */; }; + 898ECA60218ABD17001E9D35 /* GlucoseChartScaler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 898ECA5E218ABD17001E9D35 /* GlucoseChartScaler.swift */; }; + 898ECA61218ABD17001E9D35 /* GlucoseChartData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 898ECA5F218ABD17001E9D35 /* GlucoseChartData.swift */; }; + 898ECA63218ABD21001E9D35 /* ComplicationChartManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 898ECA62218ABD21001E9D35 /* ComplicationChartManager.swift */; }; + 898ECA65218ABD9B001E9D35 /* CGRect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 898ECA64218ABD9A001E9D35 /* CGRect.swift */; }; + 898ECA69218ABDA9001E9D35 /* CLKTextProvider+Compound.m in Sources */ = {isa = PBXBuildFile; fileRef = 898ECA67218ABDA8001E9D35 /* CLKTextProvider+Compound.m */; }; C10428971D17BAD400DD539A /* NightscoutUploadKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C10428961D17BAD400DD539A /* NightscoutUploadKit.framework */; }; C10B28461EA9BA5E006EA1FC /* far_future_high_bg_forecast.json in Resources */ = {isa = PBXBuildFile; fileRef = C10B28451EA9BA5E006EA1FC /* far_future_high_bg_forecast.json */; }; C11C87DE1E21EAAD00BB71D3 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; @@ -823,6 +828,13 @@ 7DD382781F8DBFC60071272B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/MainInterface.strings; sourceTree = ""; }; 7DD382791F8DBFC60071272B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Interface.strings; sourceTree = ""; }; 894F71E11FFEC4D8007D365C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 898ECA5E218ABD17001E9D35 /* GlucoseChartScaler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlucoseChartScaler.swift; sourceTree = ""; }; + 898ECA5F218ABD17001E9D35 /* GlucoseChartData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlucoseChartData.swift; sourceTree = ""; }; + 898ECA62218ABD21001E9D35 /* ComplicationChartManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComplicationChartManager.swift; sourceTree = ""; }; + 898ECA64218ABD9A001E9D35 /* CGRect.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGRect.swift; sourceTree = ""; }; + 898ECA66218ABDA8001E9D35 /* WatchApp Extension-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "WatchApp Extension-Bridging-Header.h"; sourceTree = ""; }; + 898ECA67218ABDA8001E9D35 /* CLKTextProvider+Compound.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CLKTextProvider+Compound.m"; sourceTree = ""; }; + 898ECA68218ABDA9001E9D35 /* CLKTextProvider+Compound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CLKTextProvider+Compound.h"; sourceTree = ""; }; C10428961D17BAD400DD539A /* NightscoutUploadKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NightscoutUploadKit.framework; path = Carthage/Build/iOS/NightscoutUploadKit.framework; sourceTree = SOURCE_ROOT; }; C10B28451EA9BA5E006EA1FC /* far_future_high_bg_forecast.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = far_future_high_bg_forecast.json; sourceTree = ""; }; C12F21A61DFA79CB00748193 /* recommend_temp_basal_very_low_end_in_range.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_temp_basal_very_low_end_in_range.json; sourceTree = ""; }; @@ -933,7 +945,10 @@ isa = PBXGroup; children = ( 4344629120A7C19800C4BE6F /* ButtonGroup.swift */, + 898ECA64218ABD9A001E9D35 /* CGRect.swift */, 4328E0221CFBE2C500E199AA /* CLKComplicationTemplate.swift */, + 898ECA68218ABDA9001E9D35 /* CLKTextProvider+Compound.h */, + 898ECA67218ABDA8001E9D35 /* CLKTextProvider+Compound.m */, 4F7E8AC420E2AB9600AEA65E /* Date.swift */, 4F73F5FB20E2E7FA00E8D82C /* GlucoseStore.swift */, 4328E0201CFBE2C500E199AA /* IdentifiableClass.swift */, @@ -944,6 +959,7 @@ 43CB2B2A1D924D450079823D /* WCSession.swift */, 4328E0251CFBE2C500E199AA /* WKAlertAction.swift */, 4328E02E1CFBF81800E199AA /* WKInterfaceImage.swift */, + 898ECA66218ABDA8001E9D35 /* WatchApp Extension-Bridging-Header.h */, ); path = Extensions; sourceTree = ""; @@ -1065,6 +1081,7 @@ 4328E01F1CFBE2B100E199AA /* Extensions */, 4FE3475F20D5D7FA00A86D03 /* Managers */, 4F75F0052100146B00B5570E /* Scenes */, + 898ECA5D218ABD17001E9D35 /* Models */, 43A943831B926B7B0051FA24 /* Supporting Files */, ); path = "WatchApp Extension"; @@ -1304,6 +1321,7 @@ isa = PBXGroup; children = ( 4FDDD23620DC51DF00D04B16 /* LoopDataManager.swift */, + 898ECA62218ABD21001E9D35 /* ComplicationChartManager.swift */, ); path = Managers; sourceTree = ""; @@ -1370,6 +1388,15 @@ path = Common; sourceTree = ""; }; + 898ECA5D218ABD17001E9D35 /* Models */ = { + isa = PBXGroup; + children = ( + 898ECA5E218ABD17001E9D35 /* GlucoseChartScaler.swift */, + 898ECA5F218ABD17001E9D35 /* GlucoseChartData.swift */, + ); + path = Models; + sourceTree = ""; + }; 968DCD53F724DE56FFE51920 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -1598,7 +1625,7 @@ }; 43A9437D1B926B7B0051FA24 = { CreatedOnToolsVersion = 7.0; - LastSwiftMigration = 0800; + LastSwiftMigration = 1000; SystemCapabilities = { com.apple.ApplicationGroups.iOS = { enabled = 0; @@ -1966,6 +1993,7 @@ 4FF4D1011E18375000846527 /* WatchContext.swift in Sources */, 435400311C9F744E00D5819C /* BolusSuggestionUserInfo.swift in Sources */, 4372E49A213F7A830068E043 /* WalshInsulinModel.swift in Sources */, + 898ECA63218ABD21001E9D35 /* ComplicationChartManager.swift in Sources */, 43A9438A1B926B7B0051FA24 /* NotificationController.swift in Sources */, 439A7945211FE23A0041B75F /* NSUserActivity.swift in Sources */, 43A943881B926B7B0051FA24 /* ExtensionDelegate.swift in Sources */, @@ -1974,10 +2002,12 @@ 4328E02F1CFBF81800E199AA /* WKInterfaceImage.swift in Sources */, 4F2C15811E0495B200E160D4 /* WatchContext+WatchApp.swift in Sources */, 4372E496213DCDD30068E043 /* GlucoseChartValueHashable.swift in Sources */, + 898ECA61218ABD17001E9D35 /* GlucoseChartData.swift in Sources */, 4344629820A8B2D700C4BE6F /* OSLog.swift in Sources */, 4328E02A1CFBE2C500E199AA /* UIColor.swift in Sources */, 4372E484213A63FB0068E043 /* ChartHUDController.swift in Sources */, 4FDDD23720DC51DF00D04B16 /* LoopDataManager.swift in Sources */, + 898ECA60218ABD17001E9D35 /* GlucoseChartScaler.swift in Sources */, 4328E01B1CFBE1DA00E199AA /* BolusInterfaceController.swift in Sources */, 4F82655020E69F9A0031A8F5 /* HUDInterfaceController.swift in Sources */, 4372E492213D956C0068E043 /* GlucoseRangeSchedule.swift in Sources */, @@ -1994,9 +2024,11 @@ 432CF87520D8AC950066B889 /* NSUserDefaults+WatchApp.swift in Sources */, 43027F0F1DFE0EC900C51989 /* HKUnit.swift in Sources */, 4344629220A7C19800C4BE6F /* ButtonGroup.swift in Sources */, + 898ECA69218ABDA9001E9D35 /* CLKTextProvider+Compound.m in Sources */, 4372E48C213CB6750068E043 /* Double.swift in Sources */, 43785E972120E4500057DED1 /* INRelevantShortcutStore+Loop.swift in Sources */, 4372E48E213CF8AD0068E043 /* LoopSettings.swift in Sources */, + 898ECA65218ABD9B001E9D35 /* CGRect.swift in Sources */, 4372E49B213F7B340068E043 /* NSBundle.swift in Sources */, 43CB2B2B1D924D450079823D /* WCSession.swift in Sources */, 4372E497213F79F90068E043 /* NSUserDefaults.swift in Sources */, @@ -2615,7 +2647,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = Loop/Loop.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = UY678SP37Q; + DEVELOPMENT_TEAM = 5Q5Q8W9ATZ; INFOPLIST_FILE = Loop/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; "OTHER_SWIFT_FLAGS[sdk=iphonesimulator*]" = "-D IOS_SIMULATOR"; @@ -2632,7 +2664,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = Loop/Loop.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = UY678SP37Q; + DEVELOPMENT_TEAM = 5Q5Q8W9ATZ; INFOPLIST_FILE = Loop/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER)"; @@ -2645,10 +2677,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "WatchApp Extension/WatchApp Extension.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = UY678SP37Q; + DEVELOPMENT_TEAM = 5Q5Q8W9ATZ; FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/Carthage/Build/watchOS"; INFOPLIST_FILE = "WatchApp Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; @@ -2657,6 +2690,9 @@ PROVISIONING_PROFILE = ""; SDKROOT = watchos; SKIP_INSTALL = YES; + SWIFT_OBJC_BRIDGING_HEADER = "WatchApp Extension/Extensions/WatchApp Extension-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = 4; }; name = Debug; @@ -2665,10 +2701,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "WatchApp Extension/WatchApp Extension.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = UY678SP37Q; + DEVELOPMENT_TEAM = 5Q5Q8W9ATZ; FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/Carthage/Build/watchOS"; INFOPLIST_FILE = "WatchApp Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; @@ -2677,6 +2714,8 @@ PROVISIONING_PROFILE = ""; SDKROOT = watchos; SKIP_INSTALL = YES; + SWIFT_OBJC_BRIDGING_HEADER = "WatchApp Extension/Extensions/WatchApp Extension-Bridging-Header.h"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = 4; }; name = Release; @@ -2688,7 +2727,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = UY678SP37Q; + DEVELOPMENT_TEAM = 5Q5Q8W9ATZ; FRAMEWORK_SEARCH_PATHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; @@ -2709,7 +2748,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = UY678SP37Q; + DEVELOPMENT_TEAM = 5Q5Q8W9ATZ; FRAMEWORK_SEARCH_PATHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; @@ -2788,7 +2827,7 @@ CODE_SIGN_ENTITLEMENTS = "Loop Status Extension/Loop Status Extension.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = UY678SP37Q; + DEVELOPMENT_TEAM = 5Q5Q8W9ATZ; INFOPLIST_FILE = "Loop Status Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER).statuswidget"; @@ -2807,7 +2846,7 @@ CODE_SIGN_ENTITLEMENTS = "Loop Status Extension/Loop Status Extension.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = UY678SP37Q; + DEVELOPMENT_TEAM = 5Q5Q8W9ATZ; INFOPLIST_FILE = "Loop Status Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER).statuswidget"; diff --git a/WatchApp Extension/Base.lproj/ckcomplication.strings b/WatchApp Extension/Base.lproj/ckcomplication.strings index a859782678..f4d1b4d52c 100644 --- a/WatchApp Extension/Base.lproj/ckcomplication.strings +++ b/WatchApp Extension/Base.lproj/ckcomplication.strings @@ -6,5 +6,11 @@ Copyright © 2016 Nathan Racklyeft. All rights reserved. */ +/* The complication template example glucose and trend string */ +"120↘︎" = "120↘︎"; + +/* The complication template example glucose string */ +"120" = "120"; + /* Utilitarian large flat format string (1: Glucose & Trend symbol) (2: Eventual Glucose) (3: Time) */ "UtilitarianLargeFlat" = "%@%@ %@"; diff --git a/WatchApp Extension/ComplicationController.swift b/WatchApp Extension/ComplicationController.swift index fc9aeeb9ce..ca41ba2b33 100644 --- a/WatchApp Extension/ComplicationController.swift +++ b/WatchApp Extension/ComplicationController.swift @@ -40,25 +40,61 @@ final class ComplicationController: NSObject, CLKComplicationDataSource { // MARK: - Timeline Population - private lazy var formatter = NumberFormatter() + private let chartManager = ComplicationChartManager() - func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: (@escaping (CLKComplicationTimelineEntry?) -> Void)) { - let entry: CLKComplicationTimelineEntry? - - if let context = ExtensionDelegate.shared().loopManager.activeContext, - let glucoseDate = context.glucoseDate, - glucoseDate.timeIntervalSinceNow.minutes >= -15, - let template = CLKComplicationTemplate.templateForFamily(complication.family, from: context) - { - template.tintColor = UIColor.tintColor - entry = CLKComplicationTimelineEntry(date: glucoseDate, complicationTemplate: template) - } else if let image = CLKComplicationTemplate.imageTemplate(for: complication.family) { - entry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: image) - } else { - entry = nil + private func updateChartManagerIfNeeded(completion: @escaping () -> Void) { + if #available(watchOSApplicationExtension 5.0, *) { + guard + let activeComplications = CLKComplicationServer.sharedInstance().activeComplications, + activeComplications.contains(where: { $0.family == .graphicRectangular }) + else { + completion() + return + } + + ExtensionDelegate.shared().loopManager.generateChartData { chartData in + self.chartManager.data = chartData + completion() + } } + } - handler(entry) + var makeChart: () -> UIImage? { + // c.f. https://developer.apple.com/design/human-interface-guidelines/watchos/icons-and-images/complication-images/ + let size: CGSize = { + let scaleFactor = 1 / WKInterfaceDevice.current().screenScale + switch WKInterfaceDevice.current().screenBounds.width { + case 162: // 40mm + return CGSize(width: 150.0 * scaleFactor, height: 47.0 * scaleFactor) + default /* case 184 */: // 44mm + return CGSize(width: 171.0 * scaleFactor, height: 54.0 * scaleFactor) + } + }() + return { [chartManager] in chartManager.renderChartImage(size: size) } + } + + func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: (@escaping (CLKComplicationTimelineEntry?) -> Void)) { + updateChartManagerIfNeeded { + let entry: CLKComplicationTimelineEntry? + + if let context = ExtensionDelegate.shared().loopManager.activeContext, + let glucoseDate = context.glucoseDate, + glucoseDate.timeIntervalSinceNow.minutes >= -15, + let template = CLKComplicationTemplate.templateForFamily(complication.family, from: context, chartGenerator: self.makeChart) + { + switch complication.family { + case .graphicRectangular: + break + default: + template.tintColor = .tintColor + } + entry = CLKComplicationTimelineEntry(date: glucoseDate, complicationTemplate: template) + } else { + entry = nil + } + + handler(entry) + } } func getTimelineEntries(for complication: CLKComplication, before date: Date, limit: Int, withHandler handler: (@escaping ([CLKComplicationTimelineEntry]?) -> Void)) { @@ -67,28 +103,107 @@ final class ComplicationController: NSObject, CLKComplicationDataSource { } func getTimelineEntries(for complication: CLKComplication, after date: Date, limit: Int, withHandler handler: (@escaping ([CLKComplicationTimelineEntry]?) -> Void)) { - // Call the handler with the timeline entries after to the given date - let entries: [CLKComplicationTimelineEntry]? - - if let context = ExtensionDelegate.shared().loopManager.activeContext, - let glucoseDate = context.glucoseDate - { - if glucoseDate.timeIntervalSince(date) > 0, - let template = CLKComplicationTemplate.templateForFamily(complication.family, from: context) + updateChartManagerIfNeeded { + let entries: [CLKComplicationTimelineEntry]? + + if let context = ExtensionDelegate.shared().loopManager.activeContext, + let glucoseDate = context.glucoseDate, + glucoseDate.timeIntervalSince(date) > 0, + let template = CLKComplicationTemplate.templateForFamily(complication.family, from: context, chartGenerator: self.makeChart) { template.tintColor = UIColor.tintColor entries = [CLKComplicationTimelineEntry(date: glucoseDate, complicationTemplate: template)] } else { - entries = [] + entries = nil } - if let image = CLKComplicationTemplate.imageTemplate(for: complication.family) { - entries?.append(CLKComplicationTimelineEntry(date: glucoseDate.addingTimeInterval(.hours(1)), complicationTemplate: image)) - } - } else { - entries = nil + handler(entries) } + } + + // MARK: - Placeholder Templates - handler(entries) + func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) { + let template = getLocalizableSampleTemplate(for: complication.family) + handler(template) + } + + func getLocalizableSampleTemplate(for family: CLKComplicationFamily) -> CLKComplicationTemplate? { + let glucoseAndTrendText = CLKSimpleTextProvider.localizableTextProvider(withStringsFileTextKey: "120↘︎") + let glucoseText = CLKSimpleTextProvider.localizableTextProvider(withStringsFileTextKey: "120") + let timeText = CLKRelativeDateTextProvider(date: Date(), style: .natural, units: .minute) + + switch family { + case .modularSmall: + let template = CLKComplicationTemplateModularSmallStackText() + template.line1TextProvider = glucoseAndTrendText + template.line2TextProvider = timeText + return template + case .modularLarge: + let template = CLKComplicationTemplateModularLargeTallBody() + template.bodyTextProvider = glucoseAndTrendText + template.headerTextProvider = timeText + return template + case .circularSmall: + let template = CLKComplicationTemplateCircularSmallSimpleText() + template.textProvider = glucoseAndTrendText + return template + case .extraLarge: + let template = CLKComplicationTemplateExtraLargeStackText() + template.line1TextProvider = glucoseAndTrendText + template.line2TextProvider = timeText + return template + case .utilitarianSmall, .utilitarianSmallFlat: + let template = CLKComplicationTemplateUtilitarianSmallFlat() + template.textProvider = glucoseAndTrendText + return template + case .utilitarianLarge: + let template = CLKComplicationTemplateUtilitarianLargeFlat() + let eventualGlucoseText = CLKSimpleTextProvider.localizableTextProvider(withStringsFileTextKey: "75") + template.textProvider = CLKSimpleTextProvider.localizableTextProvider(withStringsFileFormatKey: "UtilitarianLargeFlat", textProviders: [glucoseAndTrendText, eventualGlucoseText, CLKTimeTextProvider(date: Date())]) + return template + case .graphicCorner: + if #available(watchOSApplicationExtension 5.0, *) { + let template = CLKComplicationTemplateGraphicCornerStackText() + timeText.tintColor = .tintColor + template.innerTextProvider = timeText + template.outerTextProvider = glucoseAndTrendText + return template + } else { + return nil + } + case .graphicCircular: + if #available(watchOSApplicationExtension 5.0, *) { + let template = CLKComplicationTemplateGraphicCircularOpenGaugeSimpleText() + template.centerTextProvider = glucoseText + template.bottomTextProvider = CLKSimpleTextProvider(text: "↘︎") + template.gaugeProvider = CLKSimpleGaugeProvider(style: .fill, gaugeColor: .tintColor, fillFraction: 1) + return template + } else { + return nil + } + case .graphicBezel: + if #available(watchOSApplicationExtension 5.0, *) { + let template = CLKComplicationTemplateGraphicBezelCircularText() + guard let circularTemplate = getLocalizableSampleTemplate(for: .graphicCircular) as? CLKComplicationTemplateGraphicCircular else { + fatalError("\(#function) invoked with .graphicCircular must return a subclass of CLKComplicationTemplateGraphicCircular") + } + template.circularTemplate = circularTemplate + template.textProvider = timeText + return template + } else { + return nil + } + case .graphicRectangular: + if #available(watchOSApplicationExtension 5.0, *) { + let template = CLKComplicationTemplateGraphicRectangularLargeImage() + // TODO: Better placeholder image here + template.imageProvider = CLKFullColorImageProvider(fullColorImage: UIImage()) + template.textProvider = glucoseAndTrendText + return template + } else { + return nil + } + } } } diff --git a/WatchApp Extension/Controllers/ChartHUDController.swift b/WatchApp Extension/Controllers/ChartHUDController.swift index 11770e69fa..1b86733c00 100644 --- a/WatchApp Extension/Controllers/ChartHUDController.swift +++ b/WatchApp Extension/Controllers/ChartHUDController.swift @@ -51,6 +51,23 @@ final class ChartHUDController: HUDInterfaceController, WKCrownDelegate { glucoseScene.presentScene(scene) } + override func awake(withContext context: Any?) { + super.awake(withContext: context) + + if UserDefaults.standard.startOnChartPage { + log.default("Switching to startOnChartPage") + becomeCurrentPage() + + // For some reason, .didAppear() does not get called when we do this. It gets called *twice* the next + // time this view appears. Force it by hand now, until we figure out the root cause. + // + // TODO: possibly because I'm not calling super.awake()? investigate that. + DispatchQueue.main.async { + self.didAppear() + } + } + } + override func didAppear() { super.didAppear() @@ -63,11 +80,6 @@ final class ChartHUDController: HUDInterfaceController, WKCrownDelegate { timer = Timer.scheduledTimer(withTimeInterval: pixelInterval, repeats: true) { [weak self] _ in self?.scene.setNeedsUpdate() } - - if #available(watchOSApplicationExtension 5.0, *) { - scene.textInsets.left = max(scene.textInsets.left, systemMinimumLayoutMargins.leading) - scene.textInsets.right = max(scene.textInsets.right, systemMinimumLayoutMargins.trailing) - } } override func willDisappear() { @@ -175,17 +187,9 @@ final class ChartHUDController: HUDInterfaceController, WKCrownDelegate { } func updateGlucoseChart() { - guard let activeContext = loopManager.activeContext else { - return - } - - scene.predictedGlucose = activeContext.predictedGlucose?.values - scene.correctionRange = loopManager.settings.glucoseTargetRangeSchedule - scene.unit = activeContext.preferredGlucoseUnit - - loopManager.glucoseStore.getCachedGlucoseSamples(start: .earliestGlucoseCutoff) { (samples) in + loopManager.generateChartData { chartData in DispatchQueue.main.async { - self.scene.historicalGlucose = samples + self.scene.data = chartData self.scene.setNeedsUpdate() } } diff --git a/WatchApp Extension/Extensions/CGRect.swift b/WatchApp Extension/Extensions/CGRect.swift new file mode 100644 index 0000000000..56d6a82fba --- /dev/null +++ b/WatchApp Extension/Extensions/CGRect.swift @@ -0,0 +1,23 @@ +// +// CGRect.swift +// WatchApp Extension +// +// Created by Michael Pangburn on 10/17/18. +// Copyright © 2018 LoopKit Authors. All rights reserved. +// + +import CoreGraphics + + +extension CGRect { + func alignedToScreenScale(_ screenScale: CGFloat) -> CGRect { + let factor = 1 / screenScale + + return CGRect( + x: origin.x.floored(to: factor), + y: origin.y.floored(to: factor), + width: size.width.ceiled(to: factor), + height: size.height.ceiled(to: factor) + ) + } +} diff --git a/WatchApp Extension/Extensions/CLKComplicationTemplate.swift b/WatchApp Extension/Extensions/CLKComplicationTemplate.swift index c8f636d34e..debd12c2c4 100644 --- a/WatchApp Extension/Extensions/CLKComplicationTemplate.swift +++ b/WatchApp Extension/Extensions/CLKComplicationTemplate.swift @@ -14,15 +14,23 @@ import Foundation extension CLKComplicationTemplate { - static func templateForFamily(_ family: CLKComplicationFamily, from context: WatchContext) -> CLKComplicationTemplate? { + static func templateForFamily(_ family: CLKComplicationFamily, from context: WatchContext, chartGenerator makeChart: () -> UIImage?) -> CLKComplicationTemplate? { guard let glucose = context.glucose, let unit = context.preferredGlucoseUnit else { return nil } - return templateForFamily(family, glucose: glucose, unit: unit, date: context.glucoseDate, trend: context.glucoseTrend, eventualGlucose: context.eventualGlucose) + return templateForFamily(family, glucose: glucose, unit: unit, date: context.glucoseDate, trend: context.glucoseTrend, eventualGlucose: context.eventualGlucose, chartGenerator: makeChart) } - static func templateForFamily(_ family: CLKComplicationFamily, glucose: HKQuantity, unit: HKUnit, date: Date?, trend: GlucoseTrend?, eventualGlucose: HKQuantity?) -> CLKComplicationTemplate? { + static func templateForFamily( + _ family: CLKComplicationFamily, + glucose: HKQuantity, + unit: HKUnit, + date: Date?, + trend: GlucoseTrend?, + eventualGlucose: HKQuantity?, + chartGenerator makeChart: () -> UIImage? + ) -> CLKComplicationTemplate? { let formatter = NumberFormatter.glucoseFormatter(for: unit) @@ -32,7 +40,8 @@ extension CLKComplicationTemplate { return nil } - let glucoseAndTrend = "\(glucoseString)\(trend?.symbol ?? " ")" + let trendString = trend?.symbol ?? " " + let glucoseAndTrend = "\(glucoseString)\(trendString)" var accessibilityStrings = [glucoseString] if let trend = trend { @@ -47,8 +56,6 @@ extension CLKComplicationTemplate { timeFormatter.timeStyle = .short switch family { - case .graphicCorner, .graphicCircular, .graphicRectangular, .graphicBezel: - return nil case .modularSmall: let template = CLKComplicationTemplateModularSmallStackText() template.line1TextProvider = glucoseAndTrendText @@ -71,7 +78,6 @@ extension CLKComplicationTemplate { case .utilitarianSmall, .utilitarianSmallFlat: let template = CLKComplicationTemplateUtilitarianSmallFlat() template.textProvider = CLKSimpleTextProvider(text: glucoseString) - return template case .utilitarianLarge: var eventualGlucoseText = "" @@ -91,65 +97,50 @@ extension CLKComplicationTemplate { ] )) return template - } - } - - static func imageTemplate(for family: CLKComplicationFamily) -> CLKComplicationTemplate? { - switch family { - case .modularSmall: - guard let image = UIImage(named: "Modular") else { return nil } - - let template = CLKComplicationTemplateModularSmallSimpleImage() - template.imageProvider = CLKImageProvider(onePieceImage: image) - return template - case .modularLarge: - return nil - case .utilitarianSmall: - guard let image = UIImage(named: "Utility") else { return nil } - - let template = CLKComplicationTemplateUtilitarianSmallSquare() - template.imageProvider = CLKImageProvider(onePieceImage: image) - return template - case .utilitarianSmallFlat: - return nil - case .utilitarianLarge: - return nil - case .circularSmall: - guard let image = UIImage(named: "Circular") else { return nil } - - let template = CLKComplicationTemplateCircularSmallSimpleImage() - template.imageProvider = CLKImageProvider(onePieceImage: image) - return template - case .extraLarge: - guard let image = UIImage(named: "Extra Large") else { return nil } - - let template = CLKComplicationTemplateExtraLargeSimpleImage() - template.imageProvider = CLKImageProvider(onePieceImage: image) - return template case .graphicCorner: - guard #available(watchOSApplicationExtension 5.0, *), let image = UIImage(named: "Graphic Corner") else { return nil } - - let template = CLKComplicationTemplateGraphicCornerCircularImage() - template.imageProvider = CLKFullColorImageProvider(fullColorImage: image) - return template - case .graphicBezel: - guard #available(watchOSApplicationExtension 5.0, *), let image = UIImage(named: "Graphic Bezel") else { return nil } - - let template = CLKComplicationTemplateGraphicBezelCircularText() - template.circularTemplate = { - let template = CLKComplicationTemplateGraphicCircularImage() - template.imageProvider = CLKFullColorImageProvider(fullColorImage: image) + if #available(watchOSApplicationExtension 5.0, *) { + let template = CLKComplicationTemplateGraphicCornerStackText() + timeText.tintColor = .tintColor + template.innerTextProvider = timeText + template.outerTextProvider = glucoseAndTrendText return template - }() - return template + } else { + return nil + } case .graphicCircular: - guard #available(watchOSApplicationExtension 5.0, *), let image = UIImage(named: "Graphic Circular") else { return nil } - - let template = CLKComplicationTemplateGraphicCircularImage() - template.imageProvider = CLKFullColorImageProvider(fullColorImage: image) - return template + if #available(watchOSApplicationExtension 5.0, *) { + let template = CLKComplicationTemplateGraphicCircularOpenGaugeSimpleText() + template.centerTextProvider = CLKSimpleTextProvider(text: glucoseString) + template.bottomTextProvider = CLKSimpleTextProvider(text: trendString) + template.gaugeProvider = CLKSimpleGaugeProvider(style: .fill, gaugeColor: .tintColor, fillFraction: 1) + return template + } else { + return nil + } + case .graphicBezel: + if #available(watchOSApplicationExtension 5.0, *) { + let template = CLKComplicationTemplateGraphicBezelCircularText() + guard + let circularTemplate = templateForFamily(.graphicCircular, glucose: glucose, unit: unit, date: date, trend: trend, eventualGlucose: eventualGlucose, chartGenerator: makeChart) as? CLKComplicationTemplateGraphicCircular + else { + fatalError("\(#function) invoked with .graphicCircular must return a subclass of CLKComplicationTemplateGraphicCircular") + } + template.circularTemplate = circularTemplate + template.textProvider = timeText + return template + } else { + return nil + } case .graphicRectangular: - return nil + if #available(watchOSApplicationExtension 5.0, *) { + let template = CLKComplicationTemplateGraphicRectangularLargeImage() + template.imageProvider = CLKFullColorImageProvider(fullColorImage: makeChart() ?? UIImage()) + timeText.tintColor = .tintColor + template.textProvider = CLKTextProvider(byJoining: [glucoseAndTrendText, timeText], separator: " ") + return template + } else { + return nil + } } } } diff --git a/WatchApp Extension/Extensions/CLKTextProvider+Compound.h b/WatchApp Extension/Extensions/CLKTextProvider+Compound.h new file mode 100644 index 0000000000..8da6380afd --- /dev/null +++ b/WatchApp Extension/Extensions/CLKTextProvider+Compound.h @@ -0,0 +1,20 @@ +// +// CLKTextProvider+Compound.h +// Loop +// +// Created by Michael Pangburn on 10/27/18. +// Copyright © 2018 LoopKit Authors. All rights reserved. +// + +#ifndef CLKTextProvider_Compound_h +#define CLKTextProvider_Compound_h + +#import + +@interface CLKTextProvider (Compound) + ++ (CLKTextProvider *)textProviderByJoiningTextProviders: (nonnull NSArray *)textProviders separator:(nullable NSString *) separator; + +@end + +#endif /* CLKTextProvider_Compound_h */ diff --git a/WatchApp Extension/Extensions/CLKTextProvider+Compound.m b/WatchApp Extension/Extensions/CLKTextProvider+Compound.m new file mode 100644 index 0000000000..37d147361f --- /dev/null +++ b/WatchApp Extension/Extensions/CLKTextProvider+Compound.m @@ -0,0 +1,33 @@ +// +// CLKTextProvider+Compound.m +// WatchApp Extension +// +// Created by Michael Pangburn on 10/27/18. +// Copyright © 2018 LoopKit Authors. All rights reserved. +// + +#import "CLKTextProvider+Compound.h" + +// CLKTextProvider.textProviderWithFormat (compound text provider creation) is unavailable in Swift. +// c.f. https://crunchybagel.com/using-multicolour-clktextprovider-in-swift-in-watchos-5/ +@implementation CLKTextProvider (Compound) + ++ (CLKTextProvider *)textProviderByJoiningTextProviders: (nonnull NSArray *)textProviders separator:(nullable NSString *) separator { + + NSString *formatString = @"%@%@"; + + if (separator.length > 0) { + formatString = [NSString stringWithFormat:@"%@%@%@", @"%@", separator, @"%@"]; + } + + CLKTextProvider *firstItem = textProviders.firstObject; + + for (int index = 1; index < textProviders.count; index++) { + CLKTextProvider *secondItem = [textProviders objectAtIndex: index]; + firstItem = [CLKTextProvider textProviderWithFormat:formatString, firstItem, secondItem]; + } + + return firstItem; +} + +@end diff --git a/WatchApp Extension/Extensions/WatchApp Extension-Bridging-Header.h b/WatchApp Extension/Extensions/WatchApp Extension-Bridging-Header.h new file mode 100644 index 0000000000..35a90b80f3 --- /dev/null +++ b/WatchApp Extension/Extensions/WatchApp Extension-Bridging-Header.h @@ -0,0 +1,5 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#import "CLKTextProvider+Compound.h" diff --git a/WatchApp Extension/Info.plist b/WatchApp Extension/Info.plist index ece73b3ce7..926303a823 100644 --- a/WatchApp Extension/Info.plist +++ b/WatchApp Extension/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 1.9.4 dev + 1.9.2 CFBundleSignature ???? CFBundleVersion @@ -31,6 +31,7 @@ CLKComplicationFamilyGraphicBezel CLKComplicationFamilyGraphicCircular CLKComplicationFamilyGraphicCorner + CLKComplicationFamilyGraphicRectangular CLKComplicationFamilyModularLarge CLKComplicationFamilyModularSmall CLKComplicationFamilyUtilitarianLarge diff --git a/WatchApp Extension/Managers/ComplicationChartManager.swift b/WatchApp Extension/Managers/ComplicationChartManager.swift new file mode 100644 index 0000000000..54619f6bb9 --- /dev/null +++ b/WatchApp Extension/Managers/ComplicationChartManager.swift @@ -0,0 +1,130 @@ +// +// ComplicationChartManager.swift +// WatchApp Extension +// +// Created by Michael Pangburn on 10/17/18. +// Copyright © 2018 LoopKit Authors. All rights reserved. +// + +import Foundation +import UIKit +import HealthKit +import WatchKit + + +private enum ComplicationChartConstants { + static let textInsets = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1) + static let glucoseSize = CGSize(width: 1, height: 1) + static let glucoseLabelAttributes: [NSAttributedString.Key: Any] = [ + .font: UIFont(name: "HelveticaNeue", size: 5)!, + .foregroundColor: UIColor.chartLabel + ] +} + +private enum GlucoseLabelPosition { + case high + case low +} + +final class ComplicationChartManager { + var data: GlucoseChartData? + var lastRenderDate: Date? + var renderedChartImage: UIImage? + var visibleInterval: TimeInterval = .hours(4) + + private var unit: HKUnit { + return data?.unit ?? .milligramsPerDeciliter + } + + func renderChartImage(size: CGSize) -> UIImage? { + UIGraphicsBeginImageContextWithOptions(size, false, 0.0) + defer { UIGraphicsEndImageContext() } + + let context = UIGraphicsGetCurrentContext()! + drawChart(in: context, size: size) + let image = context.makeImage().map(UIImage.init(cgImage:)) + renderedChartImage = image + return image + } + + private func drawChart(in context: CGContext, size: CGSize) { + guard let data = data else { + // TODO: handle empty data case + return + } + + let now = Date() + lastRenderDate = now + let spannedInterval = DateInterval(start: now - visibleInterval / 2, duration: visibleInterval) + let glucoseRange = data.chartableGlucoseRange(from: spannedInterval) + let scaler = GlucoseChartScaler(size: size, dateInterval: spannedInterval, glucoseRange: glucoseRange, unit: unit) + + let drawingSteps = [drawTargetRange, drawOverridesIfNeeded, drawHistoricalGlucose, drawPredictedGlucose, drawGlucoseLabels] + drawingSteps.forEach { drawIn in drawIn(context, scaler) } + } + + private func drawGlucoseLabels(in context: CGContext, using scaler: GlucoseChartScaler) { + let formatter = NumberFormatter.glucoseFormatter(for: unit) + drawGlucoseLabelText(formatter.string(from: scaler.glucoseMax)!, position: .high, scaler: scaler) + drawGlucoseLabelText(formatter.string(from: scaler.glucoseMin)!, position: .low, scaler: scaler) + } + + private func drawGlucoseLabelText(_ text: String, position: GlucoseLabelPosition, scaler: GlucoseChartScaler) { + let attributedText = NSAttributedString(string: text, attributes: ComplicationChartConstants.glucoseLabelAttributes) + let size = attributedText.size() + let x = scaler.xCoordinate(for: scaler.dates.end) - size.width - ComplicationChartConstants.textInsets.right + let y: CGFloat = { + switch position { + case .high: + return scaler.yCoordinate(for: scaler.glucoseMax) + ComplicationChartConstants.textInsets.top + case .low: + return scaler.yCoordinate(for: scaler.glucoseMin) - size.height - ComplicationChartConstants.textInsets.bottom + } + }() + let rect = CGRect(origin: CGPoint(x: x, y: y), size: size).alignedToScreenScale(WKInterfaceDevice.current().screenScale) + attributedText.draw(with: rect, options: .usesLineFragmentOrigin, context: nil) + } + + private func drawTargetRange(in context: CGContext, using scaler: GlucoseChartScaler) { + let activeOverride = data?.correctionRange?.activeOverride + let targetRangeAlpha: CGFloat = activeOverride != nil ? 0.2 : 0.3 + context.setFillColor(UIColor.glucose.withAlphaComponent(targetRangeAlpha).cgColor) + data?.correctionRange?.quantityBetween(start: scaler.dates.start, end: scaler.dates.end).forEach { range in + let rangeRect = scaler.rect(for: range, unit: unit) + context.fill(rangeRect) + } + } + + private func drawOverridesIfNeeded(in context: CGContext, using scaler: GlucoseChartScaler) { + guard let override = data?.correctionRange?.activeOverride else { + return + } + context.setFillColor(UIColor.glucose.withAlphaComponent(0.4).cgColor) + let overrideRect = scaler.rect(for: override, unit: unit) + context.fill(overrideRect) + } + + private func drawHistoricalGlucose(in context: CGContext, using scaler: GlucoseChartScaler) { + context.setFillColor(UIColor.glucose.cgColor) + data?.historicalGlucose?.lazy + .filter { scaler.dates.contains($0.startDate) } + .forEach { glucose in + let origin = scaler.point(for: glucose, unit: unit) + let glucoseRect = CGRect(origin: origin, size: ComplicationChartConstants.glucoseSize).alignedToScreenScale(WKInterfaceDevice.current().screenScale) + context.fill(glucoseRect) + } + } + + private func drawPredictedGlucose(in context: CGContext, using scaler: GlucoseChartScaler) { + guard let predictedGlucose = data?.predictedGlucose, predictedGlucose.count > 2 else { + return + } + let predictedPath = CGMutablePath() + let glucosePoints = predictedGlucose.map { scaler.point(for: $0, unit: unit) } + predictedPath.addLines(between: glucosePoints) + let dashedPath = predictedPath.copy(dashingWithPhase: 6.5, lengths: [2.5, 1.5]) + context.setStrokeColor(UIColor.white.cgColor) + context.addPath(dashedPath) + context.strokePath() + } +} diff --git a/WatchApp Extension/Managers/LoopDataManager.swift b/WatchApp Extension/Managers/LoopDataManager.swift index 7f2b5f9e70..4191ced26f 100644 --- a/WatchApp Extension/Managers/LoopDataManager.swift +++ b/WatchApp Extension/Managers/LoopDataManager.swift @@ -124,3 +124,22 @@ extension LoopDataManager { return true } } + +extension LoopDataManager { + func generateChartData(completion: @escaping (GlucoseChartData?) -> Void) { + guard let activeContext = activeContext else { + completion(nil) + return + } + + glucoseStore.getCachedGlucoseSamples(start: .earliestGlucoseCutoff) { samples in + let chartData = GlucoseChartData( + unit: activeContext.preferredGlucoseUnit, + correctionRange: self.settings.glucoseTargetRangeSchedule, + historicalGlucose: samples, + predictedGlucose: activeContext.predictedGlucose?.values + ) + completion(chartData) + } + } +} diff --git a/WatchApp Extension/Models/GlucoseChartData.swift b/WatchApp Extension/Models/GlucoseChartData.swift new file mode 100644 index 0000000000..6bf47c3670 --- /dev/null +++ b/WatchApp Extension/Models/GlucoseChartData.swift @@ -0,0 +1,101 @@ +// +// GlucoseChartData.swift +// WatchApp Extension +// +// Created by Michael Pangburn on 10/17/18. +// Copyright © 2018 LoopKit Authors. All rights reserved. +// + +import Foundation +import HealthKit +import LoopKit + + +struct GlucoseChartData { + var unit: HKUnit? + + var correctionRange: GlucoseRangeSchedule? + + var historicalGlucose: [SampleValue]? { + didSet { + historicalGlucoseRange = historicalGlucose?.quantityRange + } + } + + private(set) var historicalGlucoseRange: Range? + + var predictedGlucose: [SampleValue]? { + didSet { + predictedGlucoseRange = predictedGlucose?.quantityRange + } + } + + private(set) var predictedGlucoseRange: Range? + + init(unit: HKUnit?, correctionRange: GlucoseRangeSchedule?, historicalGlucose: [SampleValue]?, predictedGlucose: [SampleValue]?) { + self.unit = unit + self.correctionRange = correctionRange + self.historicalGlucose = historicalGlucose + self.historicalGlucoseRange = historicalGlucose?.quantityRange + self.predictedGlucose = predictedGlucose + self.predictedGlucoseRange = predictedGlucose?.quantityRange + } + + func chartableGlucoseRange(from interval: DateInterval) -> Range { + let unit = self.unit ?? .milligramsPerDeciliter + + // Defaults + var min = unit.lowWatermark + var max = unit.highWatermark + + for correction in correctionRange?.quantityBetween(start: interval.start, end: interval.end) ?? [] { + min = Swift.min(min, correction.value.lowerBound.doubleValue(for: unit)) + max = Swift.max(max, correction.value.upperBound.doubleValue(for: unit)) + } + + if let override = correctionRange?.activeOverrideQuantityRange { + min = Swift.min(min, override.lowerBound.doubleValue(for: unit)) + max = Swift.max(max, override.upperBound.doubleValue(for: unit)) + } + + if let historicalGlucoseRange = historicalGlucoseRange { + min = Swift.min(min, historicalGlucoseRange.lowerBound.doubleValue(for: unit)) + max = Swift.max(max, historicalGlucoseRange.upperBound.doubleValue(for: unit)) + } + + if let predictedGlucoseRange = predictedGlucoseRange { + min = Swift.min(min, predictedGlucoseRange.lowerBound.doubleValue(for: unit)) + max = Swift.max(max, predictedGlucoseRange.upperBound.doubleValue(for: unit)) + } + + min = min.floored(to: unit.axisIncrement) + max = max.ceiled(to: unit.axisIncrement) + + let lowerBound = HKQuantity(unit: unit, doubleValue: min) + let upperBound = HKQuantity(unit: unit, doubleValue: max) + + return lowerBound.. CGFloat { + return CGFloat(date.timeIntervalSince(dates.start)) * xScale + } + + func yCoordinate(for glucose: Double) -> CGFloat { + switch coordinateSystem { + case .standard: + return CGFloat(glucoseMax - glucose) * yScale + case .inverted: + return CGFloat(glucose - glucoseMin) * yScale + } + } + + func point(_ date: Date, _ glucose: Double) -> CGPoint { + return CGPoint(x: xCoordinate(for: date), y: yCoordinate(for: glucose)) + } + + func point(for glucose: SampleValue, unit: HKUnit) -> CGPoint { + return point(glucose.startDate, glucose.quantity.doubleValue(for: unit)) + } + + // By default enforce a minimum height so that the range is visible + func rect( + for range: GlucoseChartValueHashable, + unit: HKUnit, + minHeight: CGFloat = 2, + alignedToScreenScale screenScale: CGFloat = WKInterfaceDevice.current().screenScale + ) -> CGRect { + let minY: Double + let maxY: Double + + if unit != .milligramsPerDeciliter { + minY = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: range.min).doubleValue(for: unit) + maxY = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: range.max).doubleValue(for: unit) + } else { + minY = range.min + maxY = range.max + } + + let bottomLeft = point(max(dates.start, range.start), minY) + let topRight = point(min(dates.end, range.end), maxY) + let size = CGSize(width: topRight.x - bottomLeft.x, height: max(topRight.y - bottomLeft.y, minHeight)) + return CGRect(origin: bottomLeft, size: size).alignedToScreenScale(screenScale) + } +} + +extension GlucoseChartScaler { + init(size: CGSize, dateInterval: DateInterval, glucoseRange: Range, unit: HKUnit, coordinateSystem: CoordinateSystem = .standard) { + self.dates = dateInterval + self.glucoseMin = glucoseRange.lowerBound.doubleValue(for: unit) + self.glucoseMax = glucoseRange.upperBound.doubleValue(for: unit) + self.xScale = size.width / CGFloat(dateInterval.duration) + self.yScale = size.height / CGFloat(glucoseRange.span(with: unit)) + self.coordinateSystem = coordinateSystem + } +} + +extension Range where Bound == HKQuantity { + func span(with unit: HKUnit) -> Double { + return upperBound.doubleValue(for: unit) - lowerBound.doubleValue(for: unit) + } +} diff --git a/WatchApp Extension/Scenes/GlucoseChartScene.swift b/WatchApp Extension/Scenes/GlucoseChartScene.swift index 2745459773..32eb582763 100644 --- a/WatchApp Extension/Scenes/GlucoseChartScene.swift +++ b/WatchApp Extension/Scenes/GlucoseChartScene.swift @@ -28,7 +28,7 @@ private enum NodePlane: Int { private extension SKLabelNode { static func basic(at position: CGPoint) -> SKLabelNode { let basic = SKLabelNode(text: "--") - basic.fontSize = UIFont.preferredFont(forTextStyle: .caption2).pointSize + basic.fontSize = 12 basic.fontName = "HelveticaNeue" basic.fontColor = .chartLabel basic.alpha = 0.8 @@ -55,138 +55,27 @@ private extension SKSpriteNode { } } -extension CGRect { - fileprivate func alignedToScreenScale(_ screenScale: CGFloat) -> CGRect { - let factor = 1 / screenScale - - return CGRect( - x: origin.x.floored(to: factor), - y: origin.y.floored(to: factor), - width: size.width.ceiled(to: factor), - height: size.height.ceiled(to: factor) - ) - } -} - -private struct Scaler { - let dates: DateInterval - let glucoseMin: Double - let xScale: CGFloat - let yScale: CGFloat - - func point(_ x: Date, _ y: Double) -> CGPoint { - return CGPoint(x: CGFloat(x.timeIntervalSince(dates.start)) * xScale, y: CGFloat(y - glucoseMin) * yScale) - } - - // By default enforce a minimum height so that the range is visible - func rect(for range: GlucoseChartValueHashable, unit: HKUnit, minHeight: CGFloat = 2) -> CGRect { - let minY: Double - let maxY: Double - - if unit != .milligramsPerDeciliter { - minY = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: range.min).doubleValue(for: unit) - maxY = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: range.max).doubleValue(for: unit) - } else { - minY = range.min - maxY = range.max - } - - let a = point(max(dates.start, range.start), minY) - let b = point(min(dates.end, range.end), maxY) - let size = CGSize(width: b.x - a.x, height: max(b.y - a.y, minHeight)) - return CGRect(origin: CGPoint(x: a.x + size.width / 2, y: a.y + size.height / 2), size: size).alignedToScreenScale(WKInterfaceDevice.current().screenScale) - } -} - -private extension HKUnit { - var axisIncrement: Double { - return chartableIncrement * 25 - } - - var highWatermark: Double { - if self == .milligramsPerDeciliter { - return 150 - } else { - return 8 - } - } - - var lowWatermark: Double { - if self == .milligramsPerDeciliter { - return 50.0 - } else { - return 3.0 - } - } -} - class GlucoseChartScene: SKScene { let log = OSLog(category: "GlucoseChartScene") var textInsets = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5) - var unit: HKUnit? - var correctionRange: GlucoseRangeSchedule? - var historicalGlucose: [SampleValue]? { + var data: GlucoseChartData? { didSet { - historicalGlucoseRange = historicalGlucose?.quantityRange - } - } - private(set) var historicalGlucoseRange: Range? - var predictedGlucose: [SampleValue]? { - didSet { - predictedGlucoseRange = predictedGlucose?.quantityRange - - if let firstNewValue = predictedGlucose?.first { - if oldValue?.first == nil || oldValue?.first!.startDate != firstNewValue.startDate { + if let firstNewValue = data?.predictedGlucose?.first { + if oldValue?.predictedGlucose?.first == nil || oldValue?.predictedGlucose?.first!.startDate != firstNewValue.startDate { shouldAnimatePredictionPath = true } } } } - private(set) var predictedGlucoseRange: Range? - - private func chartableGlucoseRange(from start: Date, to end: Date) -> Range { - let unit = self.unit ?? .milligramsPerDeciliter - - // Defaults - var min = unit.lowWatermark - var max = unit.highWatermark - - for correction in correctionRange?.quantityBetween(start: start, end: end) ?? [] { - min = Swift.min(min, correction.value.lowerBound.doubleValue(for: unit)) - max = Swift.max(max, correction.value.upperBound.doubleValue(for: unit)) - } - - if let override = correctionRange?.activeOverrideQuantityRange { - min = Swift.min(min, override.lowerBound.doubleValue(for: unit)) - max = Swift.max(max, override.upperBound.doubleValue(for: unit)) - } - - if let historicalGlucoseRange = historicalGlucoseRange { - min = Swift.min(min, historicalGlucoseRange.lowerBound.doubleValue(for: unit)) - max = Swift.max(max, historicalGlucoseRange.upperBound.doubleValue(for: unit)) - } - - if let predictedGlucoseRange = predictedGlucoseRange { - min = Swift.min(min, predictedGlucoseRange.lowerBound.doubleValue(for: unit)) - max = Swift.max(max, predictedGlucoseRange.upperBound.doubleValue(for: unit)) - } - - min = min.floored(to: unit.axisIncrement) - max = max.ceiled(to: unit.axisIncrement) - - let lowerBound = HKQuantity(unit: unit, doubleValue: min) - let upperBound = HKQuantity(unit: unit, doubleValue: max) - - return lowerBound.. (sprite: SKSpriteNode, created: Bool) { - var created = false - if nodes[hashValue] == nil { - nodes[hashValue] = SKSpriteNode(color: .clear, size: CGSize(width: 0, height: 0)) - addChild(nodes[hashValue]!) - created = true + if let existingNode = nodes[hashValue] { + return (sprite: existingNode, created: false) + } else { + let newNode = SKSpriteNode(color: .clear, size: CGSize(width: 0, height: 0)) + newNode.anchorPoint = CGPoint(x: 0, y: 0) + nodes[hashValue] = newNode + addChild(newNode) + return (sprite: newNode, created: true) } - return (sprite: nodes[hashValue]!, created: created) } func setNeedsUpdate() { @@ -307,38 +189,31 @@ class GlucoseChartScene: SKScene { } private func performUpdate(animated: Bool) { - guard let unit = unit else { + guard let data = data, let unit = data.unit else { return } - let window = visibleDuration / 2 - let start = Date(timeIntervalSinceNow: -window) - let end = start.addingTimeInterval(visibleDuration) - let yRange = chartableGlucoseRange(from: start, to: end) - let scaler = Scaler( - dates: DateInterval(start: start, end: end), - glucoseMin: yRange.lowerBound.doubleValue(for: unit), - xScale: size.width / CGFloat(window * 2), - yScale: size.height / CGFloat(yRange.upperBound.doubleValue(for: unit) - yRange.lowerBound.doubleValue(for: unit)) - ) + let spannedInterval = DateInterval(start: Date() - visibleDuration / 2, duration: visibleDuration) + let glucoseRange = data.chartableGlucoseRange(from: spannedInterval) + let scaler = GlucoseChartScaler(size: size, dateInterval: spannedInterval, glucoseRange: glucoseRange, unit: unit, coordinateSystem: .inverted) let numberFormatter = NumberFormatter.glucoseFormatter(for: unit) - minBGLabel.text = numberFormatter.string(from: yRange.lowerBound.doubleValue(for: unit)) - maxBGLabel.text = numberFormatter.string(from: yRange.upperBound.doubleValue(for: unit)) + minBGLabel.text = numberFormatter.string(from: glucoseRange.lowerBound.doubleValue(for: unit)) + maxBGLabel.text = numberFormatter.string(from: glucoseRange.upperBound.doubleValue(for: unit)) hoursLabel.text = dateFormatter.string(from: visibleDuration) // Keep track of the nodes we started this pass with so we can expire obsolete nodes at the end var inactiveNodes = nodes - let activeOverride = correctionRange?.activeOverride + let activeOverride = data.correctionRange?.activeOverride - correctionRange?.quantityBetween(start: start, end: end).forEach({ (range) in + data.correctionRange?.quantityBetween(start: spannedInterval.start, end: spannedInterval.end).forEach { range in let (sprite, created) = getSprite(forHash: range.chartHashValue) sprite.color = UIColor.glucose.withAlphaComponent(activeOverride != nil ? 0.2 : 0.3) sprite.zPosition = NodePlane.ranges.zPosition sprite.move(to: scaler.rect(for: range, unit: unit), animated: !created) inactiveNodes.removeValue(forKey: range.chartHashValue) - }) + } // Make temporary overrides visually match what we do in the Loop app. This means that we have // one darker box which represents the duration of the override, but we have a second lighter box which @@ -350,8 +225,8 @@ class GlucoseChartScene: SKScene { sprite1.move(to: scaler.rect(for: range, unit: unit), animated: !created) inactiveNodes.removeValue(forKey: range.chartHashValue) - if range.end < end { - let extendedRange = GlucoseRangeSchedule.Override(context: range.context, start: range.start, end: end, value: range.value) + if range.end < spannedInterval.end { + let extendedRange = GlucoseRangeSchedule.Override(context: range.context, start: range.start, end: spannedInterval.end, value: range.value) let (sprite2, created) = getSprite(forHash: extendedRange.chartHashValue) sprite2.color = UIColor.glucose.withAlphaComponent(0.25) sprite2.zPosition = NodePlane.overrideRanges.zPosition @@ -360,9 +235,10 @@ class GlucoseChartScene: SKScene { } } - historicalGlucose?.filter { scaler.dates.contains($0.startDate) }.forEach { - let origin = scaler.point($0.startDate, $0.quantity.doubleValue(for: unit)) + data.historicalGlucose?.filter { scaler.dates.contains($0.startDate) }.forEach { + let center = scaler.point($0.startDate, $0.quantity.doubleValue(for: unit)) let size = CGSize(width: 2, height: 2) + let origin = CGPoint(x: center.x - size.width / 2, y: center.y - size.height / 2) let (sprite, created) = getSprite(forHash: $0.chartHashValue) sprite.color = .glucose sprite.zPosition = NodePlane.values.zPosition @@ -371,7 +247,7 @@ class GlucoseChartScene: SKScene { } predictedPathNode?.removeFromParent() - if let predictedGlucose = predictedGlucose, predictedGlucose.count > 2 { + if let predictedGlucose = data.predictedGlucose, predictedGlucose.count > 2 { let predictedPath = CGMutablePath() predictedPath.addLines(between: predictedGlucose.map { scaler.point($0.startDate, $0.quantity.doubleValue(for: unit))