From 891f65ce0c6a331618bb9381dc80d8d31aefaad0 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 11 Dec 2016 16:27:07 -0800 Subject: [PATCH 01/12] Rough cut at moving HUD views into their own framework. --- .../Extensions}/HKUnit.swift | 0 .../Extensions/NSNumberFormatter.swift | 0 .../Extensions/NSTimeInterval.swift | 0 {Loop => HUDViewKit}/Extensions/UIColor.swift | 0 HUDViewKit/HUDViewKit.h | 19 ++ HUDViewKit/Info.plist | 26 ++ .../Models/GlucoseTrend.swift | 0 .../Models/SensorDisplayable.swift | 0 .../Views/BasalRateHUDView.swift | 0 .../Views/BasalStateView.swift | 0 .../Views/BatteryLevelHUDView.swift | 0 .../Views/GlucoseHUDView.swift | 0 {Loop => HUDViewKit}/Views/HUDView.swift | 0 .../Views/LevelMaskView.swift | 0 .../Views/LoopCompletionHUDView.swift | 0 .../Views/LoopStateView.swift | 0 .../Views/ReservoirVolumeHUDView.swift | 0 .../StatusExtensionContext.swift | 1 + .../StatusViewController.swift | 3 +- Loop.xcodeproj/project.pbxproj | 301 +++++++++++++----- 20 files changed, 276 insertions(+), 74 deletions(-) rename {Loop Status Extension => HUDViewKit/Extensions}/HKUnit.swift (100%) rename {Loop => HUDViewKit}/Extensions/NSNumberFormatter.swift (100%) rename {Loop => HUDViewKit}/Extensions/NSTimeInterval.swift (100%) rename {Loop => HUDViewKit}/Extensions/UIColor.swift (100%) create mode 100644 HUDViewKit/HUDViewKit.h create mode 100644 HUDViewKit/Info.plist rename {Loop => HUDViewKit}/Models/GlucoseTrend.swift (100%) rename {Loop => HUDViewKit}/Models/SensorDisplayable.swift (100%) rename {Loop => HUDViewKit}/Views/BasalRateHUDView.swift (100%) rename {Loop => HUDViewKit}/Views/BasalStateView.swift (100%) rename {Loop => HUDViewKit}/Views/BatteryLevelHUDView.swift (100%) rename {Loop => HUDViewKit}/Views/GlucoseHUDView.swift (100%) rename {Loop => HUDViewKit}/Views/HUDView.swift (100%) rename {Loop => HUDViewKit}/Views/LevelMaskView.swift (100%) rename {Loop => HUDViewKit}/Views/LoopCompletionHUDView.swift (100%) rename {Loop => HUDViewKit}/Views/LoopStateView.swift (100%) rename {Loop => HUDViewKit}/Views/ReservoirVolumeHUDView.swift (100%) diff --git a/Loop Status Extension/HKUnit.swift b/HUDViewKit/Extensions/HKUnit.swift similarity index 100% rename from Loop Status Extension/HKUnit.swift rename to HUDViewKit/Extensions/HKUnit.swift diff --git a/Loop/Extensions/NSNumberFormatter.swift b/HUDViewKit/Extensions/NSNumberFormatter.swift similarity index 100% rename from Loop/Extensions/NSNumberFormatter.swift rename to HUDViewKit/Extensions/NSNumberFormatter.swift diff --git a/Loop/Extensions/NSTimeInterval.swift b/HUDViewKit/Extensions/NSTimeInterval.swift similarity index 100% rename from Loop/Extensions/NSTimeInterval.swift rename to HUDViewKit/Extensions/NSTimeInterval.swift diff --git a/Loop/Extensions/UIColor.swift b/HUDViewKit/Extensions/UIColor.swift similarity index 100% rename from Loop/Extensions/UIColor.swift rename to HUDViewKit/Extensions/UIColor.swift diff --git a/HUDViewKit/HUDViewKit.h b/HUDViewKit/HUDViewKit.h new file mode 100644 index 0000000000..c2c31c7ce2 --- /dev/null +++ b/HUDViewKit/HUDViewKit.h @@ -0,0 +1,19 @@ +// +// HUDViewKit.h +// HUDViewKit +// +// Created by Bharat Mediratta on 12/11/16. +// Copyright © 2016 LoopKit Authors. All rights reserved. +// + +#import + +//! Project version number for HUDViewKit. +FOUNDATION_EXPORT double HUDViewKitVersionNumber; + +//! Project version string for HUDViewKit. +FOUNDATION_EXPORT const unsigned char HUDViewKitVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/HUDViewKit/Info.plist b/HUDViewKit/Info.plist new file mode 100644 index 0000000000..b8a0c376cc --- /dev/null +++ b/HUDViewKit/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + HUDViewKit + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.2.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Loop/Models/GlucoseTrend.swift b/HUDViewKit/Models/GlucoseTrend.swift similarity index 100% rename from Loop/Models/GlucoseTrend.swift rename to HUDViewKit/Models/GlucoseTrend.swift diff --git a/Loop/Models/SensorDisplayable.swift b/HUDViewKit/Models/SensorDisplayable.swift similarity index 100% rename from Loop/Models/SensorDisplayable.swift rename to HUDViewKit/Models/SensorDisplayable.swift diff --git a/Loop/Views/BasalRateHUDView.swift b/HUDViewKit/Views/BasalRateHUDView.swift similarity index 100% rename from Loop/Views/BasalRateHUDView.swift rename to HUDViewKit/Views/BasalRateHUDView.swift diff --git a/Loop/Views/BasalStateView.swift b/HUDViewKit/Views/BasalStateView.swift similarity index 100% rename from Loop/Views/BasalStateView.swift rename to HUDViewKit/Views/BasalStateView.swift diff --git a/Loop/Views/BatteryLevelHUDView.swift b/HUDViewKit/Views/BatteryLevelHUDView.swift similarity index 100% rename from Loop/Views/BatteryLevelHUDView.swift rename to HUDViewKit/Views/BatteryLevelHUDView.swift diff --git a/Loop/Views/GlucoseHUDView.swift b/HUDViewKit/Views/GlucoseHUDView.swift similarity index 100% rename from Loop/Views/GlucoseHUDView.swift rename to HUDViewKit/Views/GlucoseHUDView.swift diff --git a/Loop/Views/HUDView.swift b/HUDViewKit/Views/HUDView.swift similarity index 100% rename from Loop/Views/HUDView.swift rename to HUDViewKit/Views/HUDView.swift diff --git a/Loop/Views/LevelMaskView.swift b/HUDViewKit/Views/LevelMaskView.swift similarity index 100% rename from Loop/Views/LevelMaskView.swift rename to HUDViewKit/Views/LevelMaskView.swift diff --git a/Loop/Views/LoopCompletionHUDView.swift b/HUDViewKit/Views/LoopCompletionHUDView.swift similarity index 100% rename from Loop/Views/LoopCompletionHUDView.swift rename to HUDViewKit/Views/LoopCompletionHUDView.swift diff --git a/Loop/Views/LoopStateView.swift b/HUDViewKit/Views/LoopStateView.swift similarity index 100% rename from Loop/Views/LoopStateView.swift rename to HUDViewKit/Views/LoopStateView.swift diff --git a/Loop/Views/ReservoirVolumeHUDView.swift b/HUDViewKit/Views/ReservoirVolumeHUDView.swift similarity index 100% rename from Loop/Views/ReservoirVolumeHUDView.swift rename to HUDViewKit/Views/ReservoirVolumeHUDView.swift diff --git a/Loop Status Extension/StatusExtensionContext.swift b/Loop Status Extension/StatusExtensionContext.swift index bbe312e46a..5ab84f9f1c 100644 --- a/Loop Status Extension/StatusExtensionContext.swift +++ b/Loop Status Extension/StatusExtensionContext.swift @@ -9,6 +9,7 @@ import Foundation import HealthKit +import HUDViewKit struct ReservoirContext { let startDate: Date diff --git a/Loop Status Extension/StatusViewController.swift b/Loop Status Extension/StatusViewController.swift index f8a7505b62..c4dd565dc0 100644 --- a/Loop Status Extension/StatusViewController.swift +++ b/Loop Status Extension/StatusViewController.swift @@ -10,9 +10,10 @@ import UIKit import NotificationCenter import HealthKit import CoreData +import HUDViewKit class StatusViewController: UIViewController, NCWidgetProviding { - + @IBOutlet weak var loopCompletionHUD: LoopCompletionHUDView! @IBOutlet weak var glucoseHUD: GlucoseHUDView! @IBOutlet weak var basalRateHUD: BasalRateHUDView! diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index 11ac9d2c75..dcf7bd3d35 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -30,7 +30,6 @@ 432E73CB1D24B3D6009AD15D /* RemoteDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 432E73CA1D24B3D6009AD15D /* RemoteDataManager.swift */; }; 4331E0781C85302200FBE832 /* CGPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4331E0771C85302200FBE832 /* CGPoint.swift */; }; 4331E07A1C85650D00FBE832 /* ChartAxisValueDoubleLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4331E0791C85650D00FBE832 /* ChartAxisValueDoubleLog.swift */; }; - 4337615F1D52F487004A3647 /* GlucoseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */; }; 433EA4C21D9F39C900CD78FB /* PumpIDTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 433EA4C11D9F39C900CD78FB /* PumpIDTableViewController.swift */; }; 433EA4C41D9F71C800CD78FB /* CommandResponseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 433EA4C31D9F71C800CD78FB /* CommandResponseViewController.swift */; }; 4346D1E71C77F5FE00ABAFE3 /* ChartTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4346D1E61C77F5FE00ABAFE3 /* ChartTableViewCell.swift */; }; @@ -50,10 +49,8 @@ 435400321C9F745500D5819C /* BolusSuggestionUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 435400301C9F744E00D5819C /* BolusSuggestionUserInfo.swift */; }; 435400341C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 435400331C9F878D00D5819C /* SetBolusUserInfo.swift */; }; 435400351C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 435400331C9F878D00D5819C /* SetBolusUserInfo.swift */; }; - 4354003A1C9FB81100D5819C /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92501C541832001FFDE1 /* UIColor.swift */; }; 43649A631C7A347F00523D7F /* CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43649A621C7A347F00523D7F /* CollectionType.swift */; }; 436A0DA51D236A2A00104B24 /* LoopError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436A0DA41D236A2A00104B24 /* LoopError.swift */; }; - 436A0E7B1D7DE13400D6475D /* NSNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */; }; 436FACEE1D0BA636004E2427 /* InsulinDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436FACED1D0BA636004E2427 /* InsulinDataSource.swift */; }; 43776F901B8022E90074EA36 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43776F8F1B8022E90074EA36 /* AppDelegate.swift */; }; 43776F971B8022E90074EA36 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 43776F951B8022E90074EA36 /* Main.storyboard */; }; @@ -62,11 +59,6 @@ 437CCADC1D284B830075D2C3 /* ButtonTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CCADB1D284B830075D2C3 /* ButtonTableViewCell.swift */; }; 437CCADE1D2858FD0075D2C3 /* AuthenticationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CCADD1D2858FD0075D2C3 /* AuthenticationViewController.swift */; }; 437CCAE01D285C7B0075D2C3 /* ServiceAuthentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CCADF1D285C7B0075D2C3 /* ServiceAuthentication.swift */; }; - 437CEEBC1CD6DE6A003C8C80 /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */; }; - 437CEEBE1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */; }; - 437CEEC01CD6FCD8003C8C80 /* BasalRateHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */; }; - 437CEEC81CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */; }; - 437CEECA1CD84DB7003C8C80 /* BatteryLevelHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */; }; 437CEEE41CDE5C0A003C8C80 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEE31CDE5C0A003C8C80 /* UIImage.swift */; }; 437D9BA31D7BC977007245E8 /* PredictionTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437D9BA21D7BC977007245E8 /* PredictionTableViewController.swift */; }; 43846AD51D8FA67800799272 /* Base.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 43846AD41D8FA67800799272 /* Base.lproj */; }; @@ -79,8 +71,6 @@ 438A95A81D8B9B24009D12E1 /* xDripG5.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 438A95A71D8B9B24009D12E1 /* xDripG5.framework */; }; 438D42F91D7C88BC003244B0 /* PredictionInputEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438D42F81D7C88BC003244B0 /* PredictionInputEffect.swift */; }; 438D42FB1D7D11A4003244B0 /* PredictionInputEffectTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438D42FA1D7D11A4003244B0 /* PredictionInputEffectTableViewCell.swift */; }; - 438DADC81CDE8F8B007697A5 /* LoopStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */; }; - 439897351CD2F7DE00223065 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; 439897371CD2F80600223065 /* AnalyticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897361CD2F80600223065 /* AnalyticsManager.swift */; }; 4398973B1CD2FC2000223065 /* NSDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4398973A1CD2FC2000223065 /* NSDateFormatter.swift */; }; 43A567691C94880B00334FAC /* LoopDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A567681C94880B00334FAC /* LoopDataManager.swift */; }; @@ -93,7 +83,6 @@ 43A9438E1B926B7B0051FA24 /* ComplicationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A9438D1B926B7B0051FA24 /* ComplicationController.swift */; }; 43A943901B926B7B0051FA24 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 43A9438F1B926B7B0051FA24 /* Assets.xcassets */; }; 43A943941B926B7B0051FA24 /* WatchApp.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 43A943721B926B7B0051FA24 /* WatchApp.app */; }; - 43B371861CE583890013C5A6 /* BasalStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B371851CE583890013C5A6 /* BasalStateView.swift */; }; 43B371881CE597D10013C5A6 /* ShareClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43B371871CE597D10013C5A6 /* ShareClient.framework */; }; 43C0944A1CACCC73001F6403 /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C094491CACCC73001F6403 /* NotificationManager.swift */; }; 43C246A81D89990F0031F8D1 /* Crypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43C246A71D89990F0031F8D1 /* Crypto.framework */; }; @@ -133,8 +122,6 @@ 43E344A41B9E1B1C00C85C07 /* NSUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E344A31B9E1B1C00C85C07 /* NSUserDefaults.swift */; }; 43E397A31D56B9E40028E321 /* Glucose.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E397A21D56B9E40028E321 /* Glucose.swift */; }; 43EA285F1D50ED3D001BC233 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; - 43EA28601D50ED4D001BC233 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; - 43EA28621D517E42001BC233 /* SensorDisplayable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA28611D517E42001BC233 /* SensorDisplayable.swift */; }; 43EB40861C82646A00472A8C /* StatusChartManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EB40851C82646A00472A8C /* StatusChartManager.swift */; }; 43F41C331D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F41C321D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift */; }; 43F41C351D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F41C341D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift */; }; @@ -148,35 +135,37 @@ 43F78D4C1C914197002152D1 /* CarbKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F78D481C914197002152D1 /* CarbKit.framework */; }; 43F78D4D1C914197002152D1 /* GlucoseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F78D491C914197002152D1 /* GlucoseKit.framework */; }; 43F78D4F1C914197002152D1 /* LoopKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F78D4B1C914197002152D1 /* LoopKit.framework */; }; - 43FBEDD81D73843700B21F22 /* LevelMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */; }; 4D3B40041D4A9E1A00BC6334 /* G4ShareSpy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D3B40021D4A9DFE00BC6334 /* G4ShareSpy.framework */; }; 4D5B7A4B1D457CCA00796CA9 /* GlucoseG4.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D5B7A4A1D457CCA00796CA9 /* GlucoseG4.swift */; }; 4F526D5D1DF0FD6500A04910 /* InsulinKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43C6407B1DA051850093E25D /* InsulinKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4F526D5F1DF2459000A04910 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; 4F526D611DF8D9A900A04910 /* NetBasal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D601DF8D9A900A04910 /* NetBasal.swift */; }; 4F526D621DF9D95200A04910 /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; }; 4F70C1DE1DE8DCA7006380B7 /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F70C1DD1DE8DCA7006380B7 /* NotificationCenter.framework */; }; 4F70C1E11DE8DCA7006380B7 /* StatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C1E01DE8DCA7006380B7 /* StatusViewController.swift */; }; 4F70C1E41DE8DCA7006380B7 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4F70C1E21DE8DCA7006380B7 /* MainInterface.storyboard */; }; 4F70C1E81DE8DCA7006380B7 /* Loop Status Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 4F70C1ED1DE8DEDA006380B7 /* GlucoseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */; }; - 4F70C1EF1DE8DF15006380B7 /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */; }; - 4F70C1F01DE8DF22006380B7 /* SensorDisplayable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA28611D517E42001BC233 /* SensorDisplayable.swift */; }; - 4F70C1F21DE8DF3A006380B7 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92501C541832001FFDE1 /* UIColor.swift */; }; - 4F70C1F31DE8DF47006380B7 /* NSNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */; }; - 4F70C1F41DE8E3E1006380B7 /* BasalRateHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */; }; - 4F70C1F51DE8E3E9006380B7 /* BasalStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B371851CE583890013C5A6 /* BasalStateView.swift */; }; - 4F70C1F61DE8E3F1006380B7 /* BatteryLevelHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */; }; - 4F70C1F71DE8E3FD006380B7 /* LevelMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */; }; - 4F70C1F81DE8E403006380B7 /* LoopCompletionHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */; }; - 4F70C1F91DE8E409006380B7 /* LoopStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */; }; - 4F70C1FA1DE8E42D006380B7 /* ReservoirVolumeHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */; }; - 4F70C1FB1DE8E45E006380B7 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; 4F70C1FC1DE8E5FB006380B7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 43776F981B8022E90074EA36 /* Assets.xcassets */; }; - 4F70C20B1DE8E9F4006380B7 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; 4F70C2101DE8FAC5006380B7 /* StatusExtensionDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C20F1DE8FAC5006380B7 /* StatusExtensionDataManager.swift */; }; 4F70C2121DE900EA006380B7 /* StatusExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */; }; 4F70C2131DE90339006380B7 /* StatusExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */; }; + 4F75288F1DFE1DC600C322D6 /* HUDViewKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F75288D1DFE1DC600C322D6 /* HUDViewKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4F7528941DFE1E9500C322D6 /* HUDViewKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */; }; + 4F7528951DFE1E9B00C322D6 /* HUDViewKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */; }; + 4F75289A1DFE1F6000C322D6 /* BasalRateHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */; }; + 4F75289B1DFE1F6000C322D6 /* BatteryLevelHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */; }; + 4F75289C1DFE1F6000C322D6 /* GlucoseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */; }; + 4F75289D1DFE1F6000C322D6 /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */; }; + 4F75289E1DFE1F6000C322D6 /* LoopCompletionHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */; }; + 4F75289F1DFE1F6000C322D6 /* ReservoirVolumeHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */; }; + 4F7528A01DFE1F9D00C322D6 /* LoopStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */; }; + 4F7528A11DFE200B00C322D6 /* BasalStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B371851CE583890013C5A6 /* BasalStateView.swift */; }; + 4F7528A21DFE200B00C322D6 /* LevelMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */; }; + 4F7528A41DFE204900C322D6 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92501C541832001FFDE1 /* UIColor.swift */; }; + 4F7528A51DFE208C00C322D6 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; + 4F7528A71DFE20CE00C322D6 /* SensorDisplayable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA28611D517E42001BC233 /* SensorDisplayable.swift */; }; + 4F7528A81DFE20CE00C322D6 /* NSNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */; }; + 4F7528A91DFE212600C322D6 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; + 4F7528AA1DFE215100C322D6 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; 4FC8C8011DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */; }; 4FC8C8021DEB943800A1452E /* NSUserDefaults+StatusExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */; }; C10428971D17BAD400DD539A /* NightscoutUploadKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C10428961D17BAD400DD539A /* NightscoutUploadKit.framework */; }; @@ -219,6 +208,20 @@ remoteGlobalIDString = 4F70C1DB1DE8DCA7006380B7; remoteInfo = "Loop Status Extension"; }; + 4F7528961DFE1ED400C322D6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 43776F841B8022E90074EA36 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4F75288A1DFE1DC600C322D6; + remoteInfo = HUDViewKit; + }; + 4F7528981DFE1ED800C322D6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 43776F841B8022E90074EA36 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4F75288A1DFE1DC600C322D6; + remoteInfo = HUDViewKit; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -447,6 +450,9 @@ 4F70C1FD1DE8E662006380B7 /* Loop Status Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Loop Status Extension.entitlements"; sourceTree = ""; }; 4F70C20F1DE8FAC5006380B7 /* StatusExtensionDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusExtensionDataManager.swift; sourceTree = ""; }; 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusExtensionContext.swift; sourceTree = ""; }; + 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HUDViewKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4F75288D1DFE1DC600C322D6 /* HUDViewKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HUDViewKit.h; sourceTree = ""; }; + 4F75288E1DFE1DC600C322D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSUserDefaults+StatusExtension.swift"; sourceTree = ""; }; C10428961D17BAD400DD539A /* NightscoutUploadKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NightscoutUploadKit.framework; path = Carthage/Build/iOS/NightscoutUploadKit.framework; sourceTree = ""; }; C12F21A61DFA79CB00748193 /* recommend_tamp_basal_very_low_end_in_range.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_tamp_basal_very_low_end_in_range.json; sourceTree = ""; }; @@ -471,6 +477,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4F7528941DFE1E9500C322D6 /* HUDViewKit.framework in Frameworks */, 43C6407C1DA051850093E25D /* InsulinKit.framework in Frameworks */, 438A95A81D8B9B24009D12E1 /* xDripG5.framework in Frameworks */, 43C246A81D89990F0031F8D1 /* Crypto.framework in Frameworks */, @@ -514,10 +521,18 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4F7528951DFE1E9B00C322D6 /* HUDViewKit.framework in Frameworks */, 4F70C1DE1DE8DCA7006380B7 /* NotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; + 4F7528871DFE1DC600C322D6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -556,13 +571,11 @@ 43F41C321D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift */, 43E397A21D56B9E40028E321 /* Glucose.swift */, 4D5B7A4A1D457CCA00796CA9 /* GlucoseG4.swift */, - 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */, 436FACED1D0BA636004E2427 /* InsulinDataSource.swift */, 436A0DA41D236A2A00104B24 /* LoopError.swift */, 430DA58F1D4B0E4C0097D1CA /* MySentryPumpStatusMessageBody.swift */, 4F526D601DF8D9A900A04910 /* NetBasal.swift */, 438D42F81D7C88BC003244B0 /* PredictionInputEffect.swift */, - 43EA28611D517E42001BC233 /* SensorDisplayable.swift */, 43C418B41CE0575200405B6A /* ShareGlucose+GlucoseKit.swift */, 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, ); @@ -578,6 +591,7 @@ 43A943821B926B7B0051FA24 /* WatchApp Extension */, 43F78D2C1C8FC58F002152D1 /* LoopTests */, 43E2D8D21D20BF42004DA55F /* DoseMathTests */, + 4F75288C1DFE1DC600C322D6 /* HUDViewKit */, 968DCD53F724DE56FFE51920 /* Frameworks */, 43776F8D1B8022E90074EA36 /* Products */, 437D9BA11D7B5203007245E8 /* Loop.xcconfig */, @@ -593,6 +607,7 @@ 43E2D8D11D20BF42004DA55F /* DoseMathTests.xctest */, 43E2D90B1D20C581004DA55F /* LoopTests.xctest */, 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */, + 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */, ); name = Products; sourceTree = ""; @@ -722,12 +737,9 @@ 430DA58D1D4AEC230097D1CA /* NSBundle.swift */, 43CE7CDD1CA8B63E003CC1B0 /* Data.swift */, 4398973A1CD2FC2000223065 /* NSDateFormatter.swift */, - 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */, - 439897341CD2F7DE00223065 /* NSTimeInterval.swift */, 43E344A31B9E1B1C00C85C07 /* NSUserDefaults.swift */, 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */, 43F41C361D3BF32400C11ED6 /* UIAlertController.swift */, - 43DE92501C541832001FFDE1 /* UIColor.swift */, 437CEEE31CDE5C0A003C8C80 /* UIImage.swift */, 434FF1ED1CF27EEF000DB779 /* UITableViewCell.swift */, ); @@ -758,22 +770,13 @@ children = ( 437CCAD91D284ADF0075D2C3 /* AuthenticationTableViewCell.swift */, 434F545A1D2880D4002A9274 /* AuthenticationTableViewCell.xib */, - 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */, - 43B371851CE583890013C5A6 /* BasalStateView.swift */, - 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */, 437CCADB1D284B830075D2C3 /* ButtonTableViewCell.swift */, 434F54581D28805E002A9274 /* ButtonTableViewCell.xib */, 4313EDDF1D8A6BF90060FA79 /* ChartContentView.swift */, 43880F941D9CD54A009061A8 /* ChartPointsScatterDownTrianglesLayer.swift */, 43F41C341D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift */, 4346D1E61C77F5FE00ABAFE3 /* ChartTableViewCell.swift */, - 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */, - 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */, - 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */, - 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */, - 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */, 438D42FA1D7D11A4003244B0 /* PredictionInputEffectTableViewCell.swift */, - 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */, 43A5676A1C96155700334FAC /* SwitchTableViewCell.swift */, 43F64DD81D9C92C900D24DC6 /* TitleSubtitleTableViewCell.swift */, 434F54621D28DD80002A9274 /* ValidatingIndicatorView.swift */, @@ -819,11 +822,58 @@ 4F70C1E21DE8DCA7006380B7 /* MainInterface.storyboard */, 4F70C1E51DE8DCA7006380B7 /* Info.plist */, 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */, - 4F526D5E1DF2459000A04910 /* HKUnit.swift */, ); path = "Loop Status Extension"; sourceTree = SOURCE_ROOT; }; + 4F75288C1DFE1DC600C322D6 /* HUDViewKit */ = { + isa = PBXGroup; + children = ( + 4F7528A61DFE20AE00C322D6 /* Models */, + 4F7528A31DFE202B00C322D6 /* Extensions */, + 4F7528931DFE1E1600C322D6 /* Views */, + 4F75288D1DFE1DC600C322D6 /* HUDViewKit.h */, + 4F75288E1DFE1DC600C322D6 /* Info.plist */, + ); + path = HUDViewKit; + sourceTree = ""; + }; + 4F7528931DFE1E1600C322D6 /* Views */ = { + isa = PBXGroup; + children = ( + 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */, + 43B371851CE583890013C5A6 /* BasalStateView.swift */, + 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */, + 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */, + 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */, + 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */, + 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */, + 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */, + 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 4F7528A31DFE202B00C322D6 /* Extensions */ = { + isa = PBXGroup; + children = ( + 4F526D5E1DF2459000A04910 /* HKUnit.swift */, + 43DE92501C541832001FFDE1 /* UIColor.swift */, + 439897341CD2F7DE00223065 /* NSTimeInterval.swift */, + 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + 4F7528A61DFE20AE00C322D6 /* Models */ = { + isa = PBXGroup; + children = ( + 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */, + 43EA28611D517E42001BC233 /* SensorDisplayable.swift */, + ); + path = Models; + sourceTree = ""; + }; 968DCD53F724DE56FFE51920 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -849,6 +899,17 @@ }; /* End PBXGroup section */ +/* Begin PBXHeadersBuildPhase section */ + 4F7528881DFE1DC600C322D6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F75288F1DFE1DC600C322D6 /* HUDViewKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + /* Begin PBXNativeTarget section */ 43776F8B1B8022E90074EA36 /* Loop */ = { isa = PBXNativeTarget; @@ -865,6 +926,7 @@ buildRules = ( ); dependencies = ( + 4F7528971DFE1ED400C322D6 /* PBXTargetDependency */, 43A943931B926B7B0051FA24 /* PBXTargetDependency */, 4F70C1E71DE8DCA7006380B7 /* PBXTargetDependency */, ); @@ -956,12 +1018,31 @@ buildRules = ( ); dependencies = ( + 4F7528991DFE1ED800C322D6 /* PBXTargetDependency */, ); name = "Loop Status Extension"; productName = "Loop Status Extension"; productReference = 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */; productType = "com.apple.product-type.app-extension"; }; + 4F75288A1DFE1DC600C322D6 /* HUDViewKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4F7528921DFE1DC600C322D6 /* Build configuration list for PBXNativeTarget "HUDViewKit" */; + buildPhases = ( + 4F7528861DFE1DC600C322D6 /* Sources */, + 4F7528871DFE1DC600C322D6 /* Frameworks */, + 4F7528881DFE1DC600C322D6 /* Headers */, + 4F7528891DFE1DC600C322D6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HUDViewKit; + productName = HUDViewKit; + productReference = 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -1035,6 +1116,10 @@ }; }; }; + 4F75288A1DFE1DC600C322D6 = { + CreatedOnToolsVersion = 8.1; + ProvisioningStyle = Automatic; + }; }; }; buildConfigurationList = 43776F871B8022E90074EA36 /* Build configuration list for PBXProject "Loop" */; @@ -1054,6 +1139,7 @@ 4F70C1DB1DE8DCA7006380B7 /* Loop Status Extension */, 43A943711B926B7B0051FA24 /* WatchApp */, 43A9437D1B926B7B0051FA24 /* WatchApp Extension */, + 4F75288A1DFE1DC600C322D6 /* HUDViewKit */, 43E2D8D01D20BF42004DA55F /* DoseMathTests */, 43E2D90A1D20C581004DA55F /* LoopTests */, ); @@ -1130,6 +1216,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4F7528891DFE1DC600C322D6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -1178,7 +1271,6 @@ 43F41C331D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift in Sources */, 43F5C2DB1B92A5E1003EB13D /* SettingsTableViewController.swift in Sources */, 4313EDE01D8A6BF90060FA79 /* ChartContentView.swift in Sources */, - 43B371861CE583890013C5A6 /* BasalStateView.swift in Sources */, 434FF1EA1CF26C29000DB779 /* IdentifiableClass.swift in Sources */, 437CCADE1D2858FD0075D2C3 /* AuthenticationViewController.swift in Sources */, 43A5676B1C96155700334FAC /* SwitchTableViewCell.swift in Sources */, @@ -1187,10 +1279,8 @@ 4302F4E11D4E9C8900F0FCAF /* TextFieldTableViewController.swift in Sources */, 43E344A41B9E1B1C00C85C07 /* NSUserDefaults.swift in Sources */, 43649A631C7A347F00523D7F /* CollectionType.swift in Sources */, - 437CEEBE1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift in Sources */, 43F64DD91D9C92C900D24DC6 /* TitleSubtitleTableViewCell.swift in Sources */, C15713821DAC6983005BC4D2 /* MealBolusNightscoutTreatment.swift in Sources */, - 43EA28621D517E42001BC233 /* SensorDisplayable.swift in Sources */, 435400321C9F745500D5819C /* BolusSuggestionUserInfo.swift in Sources */, 43E3449F1B9D68E900C85C07 /* StatusTableViewController.swift in Sources */, 43DBF0531C93EC8200B3C386 /* DeviceDataManager.swift in Sources */, @@ -1202,7 +1292,6 @@ 43F41C351D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift in Sources */, 43EB40861C82646A00472A8C /* StatusChartManager.swift in Sources */, C17884631D51A7A400405663 /* BatteryIndicator.swift in Sources */, - 437CEEC81CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift in Sources */, 43C0944A1CACCC73001F6403 /* NotificationManager.swift in Sources */, 434FF1EE1CF27EEF000DB779 /* UITableViewCell.swift in Sources */, C18C8C511D5A351900E043FB /* NightscoutDataManager.swift in Sources */, @@ -1223,19 +1312,13 @@ 435400341C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */, 437D9BA31D7BC977007245E8 /* PredictionTableViewController.swift in Sources */, 43F41C371D3BF32400C11ED6 /* UIAlertController.swift in Sources */, - 437CEEBC1CD6DE6A003C8C80 /* HUDView.swift in Sources */, 433EA4C41D9F71C800CD78FB /* CommandResponseViewController.swift in Sources */, - 436A0E7B1D7DE13400D6475D /* NSNumberFormatter.swift in Sources */, 434F545F1D288345002A9274 /* ShareService.swift in Sources */, - 43FBEDD81D73843700B21F22 /* LevelMaskView.swift in Sources */, - 4354003A1C9FB81100D5819C /* UIColor.swift in Sources */, 4328E0331CFC091100E199AA /* WatchContext+LoopKit.swift in Sources */, 4F526D611DF8D9A900A04910 /* NetBasal.swift in Sources */, 4398973B1CD2FC2000223065 /* NSDateFormatter.swift in Sources */, 436A0DA51D236A2A00104B24 /* LoopError.swift in Sources */, - 437CEEC01CD6FCD8003C8C80 /* BasalRateHUDView.swift in Sources */, 43E2D8C61D204678004DA55F /* KeychainManager.swift in Sources */, - 437CEECA1CD84DB7003C8C80 /* BatteryLevelHUDView.swift in Sources */, 433EA4C21D9F39C900CD78FB /* PumpIDTableViewController.swift in Sources */, 43F78D261C8FC000002152D1 /* DoseMath.swift in Sources */, 438D42F91D7C88BC003244B0 /* PredictionInputEffect.swift in Sources */, @@ -1245,17 +1328,13 @@ 436FACEE1D0BA636004E2427 /* InsulinDataSource.swift in Sources */, 439897371CD2F80600223065 /* AnalyticsManager.swift in Sources */, 4346D1F61C78501000ABAFE3 /* ChartPoint.swift in Sources */, - 43EA28601D50ED4D001BC233 /* GlucoseTrend.swift in Sources */, - 4337615F1D52F487004A3647 /* GlucoseHUDView.swift in Sources */, 438849EE1D2A1EBB003B3F23 /* MLabService.swift in Sources */, 438D42FB1D7D11A4003244B0 /* PredictionInputEffectTableViewCell.swift in Sources */, 43880F951D9CD54A009061A8 /* ChartPointsScatterDownTrianglesLayer.swift in Sources */, 43F4EF1D1BA2A57600526CE1 /* DiagnosticLogger.swift in Sources */, 432E73CB1D24B3D6009AD15D /* RemoteDataManager.swift in Sources */, - 438DADC81CDE8F8B007697A5 /* LoopStateView.swift in Sources */, 43DE92591C5479E4001FFDE1 /* CarbEntryUserInfo.swift in Sources */, 434F54631D28DD80002A9274 /* ValidatingIndicatorView.swift in Sources */, - 439897351CD2F7DE00223065 /* NSTimeInterval.swift in Sources */, 43DE92611C555C26001FFDE1 /* AbsorptionTimeType+CarbKit.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1311,26 +1390,33 @@ files = ( 4F526D621DF9D95200A04910 /* NSBundle.swift in Sources */, 4FC8C8021DEB943800A1452E /* NSUserDefaults+StatusExtension.swift in Sources */, - 4F70C20B1DE8E9F4006380B7 /* GlucoseTrend.swift in Sources */, - 4F526D5F1DF2459000A04910 /* HKUnit.swift in Sources */, - 4F70C1FB1DE8E45E006380B7 /* NSTimeInterval.swift in Sources */, - 4F70C1FA1DE8E42D006380B7 /* ReservoirVolumeHUDView.swift in Sources */, - 4F70C1F91DE8E409006380B7 /* LoopStateView.swift in Sources */, - 4F70C1F81DE8E403006380B7 /* LoopCompletionHUDView.swift in Sources */, - 4F70C1F71DE8E3FD006380B7 /* LevelMaskView.swift in Sources */, - 4F70C1F61DE8E3F1006380B7 /* BatteryLevelHUDView.swift in Sources */, - 4F70C1F51DE8E3E9006380B7 /* BasalStateView.swift in Sources */, - 4F70C1F41DE8E3E1006380B7 /* BasalRateHUDView.swift in Sources */, 4F70C2121DE900EA006380B7 /* StatusExtensionContext.swift in Sources */, - 4F70C1F31DE8DF47006380B7 /* NSNumberFormatter.swift in Sources */, - 4F70C1F21DE8DF3A006380B7 /* UIColor.swift in Sources */, - 4F70C1F01DE8DF22006380B7 /* SensorDisplayable.swift in Sources */, - 4F70C1EF1DE8DF15006380B7 /* HUDView.swift in Sources */, - 4F70C1ED1DE8DEDA006380B7 /* GlucoseHUDView.swift in Sources */, 4F70C1E11DE8DCA7006380B7 /* StatusViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; + 4F7528861DFE1DC600C322D6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F7528AA1DFE215100C322D6 /* HKUnit.swift in Sources */, + 4F7528A91DFE212600C322D6 /* GlucoseTrend.swift in Sources */, + 4F7528A71DFE20CE00C322D6 /* SensorDisplayable.swift in Sources */, + 4F7528A81DFE20CE00C322D6 /* NSNumberFormatter.swift in Sources */, + 4F7528A51DFE208C00C322D6 /* NSTimeInterval.swift in Sources */, + 4F7528A41DFE204900C322D6 /* UIColor.swift in Sources */, + 4F7528A11DFE200B00C322D6 /* BasalStateView.swift in Sources */, + 4F7528A21DFE200B00C322D6 /* LevelMaskView.swift in Sources */, + 4F7528A01DFE1F9D00C322D6 /* LoopStateView.swift in Sources */, + 4F75289A1DFE1F6000C322D6 /* BasalRateHUDView.swift in Sources */, + 4F75289B1DFE1F6000C322D6 /* BatteryLevelHUDView.swift in Sources */, + 4F75289C1DFE1F6000C322D6 /* GlucoseHUDView.swift in Sources */, + 4F75289D1DFE1F6000C322D6 /* HUDView.swift in Sources */, + 4F75289E1DFE1F6000C322D6 /* LoopCompletionHUDView.swift in Sources */, + 4F75289F1DFE1F6000C322D6 /* ReservoirVolumeHUDView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1354,6 +1440,16 @@ target = 4F70C1DB1DE8DCA7006380B7 /* Loop Status Extension */; targetProxy = 4F70C1E61DE8DCA7006380B7 /* PBXContainerItemProxy */; }; + 4F7528971DFE1ED400C322D6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4F75288A1DFE1DC600C322D6 /* HUDViewKit */; + targetProxy = 4F7528961DFE1ED400C322D6 /* PBXContainerItemProxy */; + }; + 4F7528991DFE1ED800C322D6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4F75288A1DFE1DC600C322D6 /* HUDViewKit */; + targetProxy = 4F7528981DFE1ED800C322D6 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -1751,6 +1847,57 @@ }; name = Release; }; + 4F7528901DFE1DC600C322D6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = HUDViewKit/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.loudnate.Loop.HUDViewKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 3.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 4F7528911DFE1DC600C322D6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = HUDViewKit/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.loudnate.Loop.HUDViewKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1817,6 +1964,14 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 4F7528921DFE1DC600C322D6 /* Build configuration list for PBXNativeTarget "HUDViewKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4F7528901DFE1DC600C322D6 /* Debug */, + 4F7528911DFE1DC600C322D6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; /* End XCConfigurationList section */ }; rootObject = 43776F841B8022E90074EA36 /* Project object */; From 07182206eed2e992b8f4ec20594df8171c478137 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Tue, 13 Dec 2016 11:57:09 -0800 Subject: [PATCH 02/12] Move view code into the HUDViewKit framework directory --- HUDViewKit/Extensions/NSNumberFormatter.swift | 2 +- HUDViewKit/Extensions/UIColor.swift | 2 +- HUDViewKit/Models/GlucoseTrend.swift | 2 +- HUDViewKit/Models/SensorDisplayable.swift | 13 +------------ HUDViewKit/Views/BasalRateHUDView.swift | 4 ++-- HUDViewKit/Views/BasalStateView.swift | 8 ++++---- HUDViewKit/Views/BatteryLevelHUDView.swift | 6 +++--- HUDViewKit/Views/GlucoseHUDView.swift | 4 ++-- HUDViewKit/Views/HUDView.swift | 2 +- HUDViewKit/Views/LevelMaskView.swift | 6 +++--- HUDViewKit/Views/LoopCompletionHUDView.swift | 10 +++++----- HUDViewKit/Views/LoopStateView.swift | 8 ++++---- HUDViewKit/Views/ReservoirVolumeHUDView.swift | 8 ++++---- Loop.xcodeproj/project.pbxproj | 7 +++---- Loop/Models/ShareGlucose+GlucoseKit.swift | 17 ++++++++++++++--- WatchApp Extension/Models/WatchContext.swift | 2 +- 16 files changed, 50 insertions(+), 51 deletions(-) diff --git a/HUDViewKit/Extensions/NSNumberFormatter.swift b/HUDViewKit/Extensions/NSNumberFormatter.swift index c6092d8e3e..d1f9014a0e 100644 --- a/HUDViewKit/Extensions/NSNumberFormatter.swift +++ b/HUDViewKit/Extensions/NSNumberFormatter.swift @@ -11,7 +11,7 @@ import HealthKit extension NumberFormatter { - static func glucoseFormatter(for unit: HKUnit) -> NumberFormatter { + public static func glucoseFormatter(for unit: HKUnit) -> NumberFormatter { let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .decimal numberFormatter.minimumFractionDigits = unit.preferredMinimumFractionDigits diff --git a/HUDViewKit/Extensions/UIColor.swift b/HUDViewKit/Extensions/UIColor.swift index c3637671d8..6562eeb3f3 100644 --- a/HUDViewKit/Extensions/UIColor.swift +++ b/HUDViewKit/Extensions/UIColor.swift @@ -12,7 +12,7 @@ import UIKit extension UIColor { @nonobjc static var tintColor: UIColor? = nil - @nonobjc static let secondaryLabelColor = UIColor.HIGGrayColor() + @nonobjc public static let secondaryLabelColor = UIColor.HIGGrayColor() @nonobjc static let cellBackgroundColor = UIColor(white: 239 / 255, alpha: 1) diff --git a/HUDViewKit/Models/GlucoseTrend.swift b/HUDViewKit/Models/GlucoseTrend.swift index a79e75afa7..99b2999708 100644 --- a/HUDViewKit/Models/GlucoseTrend.swift +++ b/HUDViewKit/Models/GlucoseTrend.swift @@ -9,7 +9,7 @@ import Foundation -enum GlucoseTrend: Int { +public enum GlucoseTrend: Int { case upUpUp = 1 case upUp = 2 case up = 3 diff --git a/HUDViewKit/Models/SensorDisplayable.swift b/HUDViewKit/Models/SensorDisplayable.swift index f71838e3dd..a6a18d6bfc 100644 --- a/HUDViewKit/Models/SensorDisplayable.swift +++ b/HUDViewKit/Models/SensorDisplayable.swift @@ -9,7 +9,7 @@ import Foundation -protocol SensorDisplayable { +public protocol SensorDisplayable { /// Returns whether the current state is valid var isStateValid: Bool { get } @@ -22,14 +22,3 @@ protocol SensorDisplayable { /// Returns wheter the data is from a locally-connected device var isLocal: Bool { get } } - - -extension SensorDisplayable { - var stateDescription: String { - if isStateValid { - return NSLocalizedString("OK", comment: "Sensor state description for the valid state") - } else { - return NSLocalizedString("Needs Attention", comment: "Sensor state description for the non-valid state") - } - } -} diff --git a/HUDViewKit/Views/BasalRateHUDView.swift b/HUDViewKit/Views/BasalRateHUDView.swift index b11945e34c..c88e399efe 100644 --- a/HUDViewKit/Views/BasalRateHUDView.swift +++ b/HUDViewKit/Views/BasalRateHUDView.swift @@ -9,7 +9,7 @@ import UIKit -final class BasalRateHUDView: HUDView { +public final class BasalRateHUDView: HUDView { @IBOutlet private weak var basalStateView: BasalStateView! @@ -24,7 +24,7 @@ final class BasalRateHUDView: HUDView { private lazy var basalRateFormatString = NSLocalizedString("%@ U", comment: "The format string describing the basal rate.") - func setNetBasalRate(_ rate: Double, percent: Double, at date: Date) { + public func setNetBasalRate(_ rate: Double, percent: Double, at date: Date) { let time = timeFormatter.string(from: date) caption?.text = time diff --git a/HUDViewKit/Views/BasalStateView.swift b/HUDViewKit/Views/BasalStateView.swift index d4deffcb1a..16c3c82eff 100644 --- a/HUDViewKit/Views/BasalStateView.swift +++ b/HUDViewKit/Views/BasalStateView.swift @@ -9,14 +9,14 @@ import UIKit -final class BasalStateView: UIView { +public final class BasalStateView: UIView { var netBasalPercent: Double = 0 { didSet { animateToPath(drawPath()) } } - override class var layerClass : AnyClass { + override public class var layerClass : AnyClass { return CAShapeLayer.self } @@ -34,7 +34,7 @@ final class BasalStateView: UIView { shapeLayer.path = drawPath() } - required init?(coder aDecoder: NSCoder) { + required public init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) shapeLayer.lineWidth = 2 @@ -44,7 +44,7 @@ final class BasalStateView: UIView { shapeLayer.path = drawPath() } - override func layoutSubviews() { + override public func layoutSubviews() { super.layoutSubviews() shapeLayer.path = drawPath() diff --git a/HUDViewKit/Views/BatteryLevelHUDView.swift b/HUDViewKit/Views/BatteryLevelHUDView.swift index a4f1fbee6b..6fcaf5024a 100644 --- a/HUDViewKit/Views/BatteryLevelHUDView.swift +++ b/HUDViewKit/Views/BatteryLevelHUDView.swift @@ -9,11 +9,11 @@ import UIKit -final class BatteryLevelHUDView: HUDView { +public final class BatteryLevelHUDView: HUDView { @IBOutlet private weak var levelMaskView: LevelMaskView! - override func awakeFromNib() { + override public func awakeFromNib() { super.awakeFromNib() tintColor = .unknownColor @@ -29,7 +29,7 @@ final class BatteryLevelHUDView: HUDView { }() - var batteryLevel: Double? { + public var batteryLevel: Double? { didSet { if let value = batteryLevel, let level = numberFormatter.string(from: NSNumber(value: value)) { caption.text = level diff --git a/HUDViewKit/Views/GlucoseHUDView.swift b/HUDViewKit/Views/GlucoseHUDView.swift index 43910dbe60..116c5da410 100644 --- a/HUDViewKit/Views/GlucoseHUDView.swift +++ b/HUDViewKit/Views/GlucoseHUDView.swift @@ -10,7 +10,7 @@ import UIKit import HealthKit -final class GlucoseHUDView: HUDView { +public final class GlucoseHUDView: HUDView { @IBOutlet private weak var unitLabel: UILabel! { didSet { @@ -64,7 +64,7 @@ final class GlucoseHUDView: HUDView { } } - func set(glucoseQuantity: Double, at glucoseStartDate: Date, unitString: String, from sensor: SensorDisplayable?) { + public func set(glucoseQuantity: Double, at glucoseStartDate: Date, unitString: String, from sensor: SensorDisplayable?) { var accessibilityStrings = [String]() let time = timeFormatter.string(from: glucoseStartDate) diff --git a/HUDViewKit/Views/HUDView.swift b/HUDViewKit/Views/HUDView.swift index 1c741cf980..6fe1ab801d 100644 --- a/HUDViewKit/Views/HUDView.swift +++ b/HUDViewKit/Views/HUDView.swift @@ -8,7 +8,7 @@ import UIKit -class HUDView: UIView { +public class HUDView: UIView { @IBOutlet weak var caption: UILabel! { didSet { diff --git a/HUDViewKit/Views/LevelMaskView.swift b/HUDViewKit/Views/LevelMaskView.swift index 5850db54b3..ef5b4d72f0 100644 --- a/HUDViewKit/Views/LevelMaskView.swift +++ b/HUDViewKit/Views/LevelMaskView.swift @@ -11,7 +11,7 @@ import UIKit // Displays a variable-height level indicator, masked by an image. // Inspired by https://github.com/carekit-apple/CareKit/blob/master/CareKit/CareCard/OCKHeartView.h -class LevelMaskView: UIView { +public class LevelMaskView: UIView { var value: Double = 1.0 { didSet { @@ -44,7 +44,7 @@ class LevelMaskView: UIView { private var maskImageView: UIView? - override func layoutSubviews() { + override public func layoutSubviews() { super.layoutSubviews() guard let maskImage = maskImage else { return } @@ -60,7 +60,7 @@ class LevelMaskView: UIView { } } - override func tintColorDidChange() { + override public func tintColorDidChange() { super.tintColorDidChange() fillView?.backgroundColor = tintColor diff --git a/HUDViewKit/Views/LoopCompletionHUDView.swift b/HUDViewKit/Views/LoopCompletionHUDView.swift index 1fc73dd6d6..04b0e04819 100644 --- a/HUDViewKit/Views/LoopCompletionHUDView.swift +++ b/HUDViewKit/Views/LoopCompletionHUDView.swift @@ -8,23 +8,23 @@ import UIKit -final class LoopCompletionHUDView: HUDView { +public final class LoopCompletionHUDView: HUDView { @IBOutlet private weak var loopStateView: LoopStateView! - override func awakeFromNib() { + override public func awakeFromNib() { super.awakeFromNib() updateDisplay(nil) } - var dosingEnabled = false { + public var dosingEnabled = false { didSet { loopStateView.open = !dosingEnabled } } - var lastLoopCompleted: Date? { + public var lastLoopCompleted: Date? { didSet { updateTimer = nil loopInProgress = false @@ -112,7 +112,7 @@ final class LoopCompletionHUDView: HUDView { } } - override func didMoveToWindow() { + override public func didMoveToWindow() { super.didMoveToWindow() assertTimer() diff --git a/HUDViewKit/Views/LoopStateView.swift b/HUDViewKit/Views/LoopStateView.swift index 454c319efc..2cae4ec3e4 100644 --- a/HUDViewKit/Views/LoopStateView.swift +++ b/HUDViewKit/Views/LoopStateView.swift @@ -8,7 +8,7 @@ import UIKit -final class LoopStateView: UIView { +public final class LoopStateView: UIView { enum Freshness { case fresh case aging @@ -43,7 +43,7 @@ final class LoopStateView: UIView { } } - override class var layerClass : AnyClass { + override public class var layerClass : AnyClass { return CAShapeLayer.self } @@ -61,7 +61,7 @@ final class LoopStateView: UIView { shapeLayer.path = drawPath() } - required init?(coder aDecoder: NSCoder) { + required public init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) shapeLayer.lineWidth = 8 @@ -71,7 +71,7 @@ final class LoopStateView: UIView { shapeLayer.path = drawPath() } - override func layoutSubviews() { + override public func layoutSubviews() { super.layoutSubviews() shapeLayer.path = drawPath() diff --git a/HUDViewKit/Views/ReservoirVolumeHUDView.swift b/HUDViewKit/Views/ReservoirVolumeHUDView.swift index d825af2507..a4a6251cd8 100644 --- a/HUDViewKit/Views/ReservoirVolumeHUDView.swift +++ b/HUDViewKit/Views/ReservoirVolumeHUDView.swift @@ -8,13 +8,13 @@ import UIKit -final class ReservoirVolumeHUDView: HUDView { +public final class ReservoirVolumeHUDView: HUDView { @IBOutlet private weak var levelMaskView: LevelMaskView! @IBOutlet private weak var volumeLabel: UILabel! - override func awakeFromNib() { + override public func awakeFromNib() { super.awakeFromNib() tintColor = .unknownColor @@ -23,7 +23,7 @@ final class ReservoirVolumeHUDView: HUDView { accessibilityValue = NSLocalizedString("Unknown", comment: "Accessibility value for an unknown value") } - var reservoirLevel: Double? { + public var reservoirLevel: Double? { didSet { levelMaskView.value = reservoirLevel ?? 1.0 @@ -62,7 +62,7 @@ final class ReservoirVolumeHUDView: HUDView { return formatter }() - func setReservoirVolume(volume: Double, at date: Date) { + public func setReservoirVolume(volume: Double, at date: Date) { if let units = numberFormatter.string(from: NSNumber(value: volume)) { volumeLabel.text = String(format: NSLocalizedString("%@U", comment: "Format string for reservoir volume. (1: The localized volume)"), units) let time = timeFormatter.string(from: date) diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index 3cdaf22d9a..dbb3e11c21 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ 4328E02A1CFBE2C500E199AA /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0241CFBE2C500E199AA /* UIColor.swift */; }; 4328E02B1CFBE2C500E199AA /* WKAlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0251CFBE2C500E199AA /* WKAlertAction.swift */; }; 4328E02F1CFBF81800E199AA /* WKInterfaceImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E02E1CFBF81800E199AA /* WKInterfaceImage.swift */; }; - 4328E0301CFBFAEB00E199AA /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; 4328E0331CFC091100E199AA /* WatchContext+LoopKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */; }; 4328E0351CFC0AE100E199AA /* WatchDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0341CFC0AE100E199AA /* WatchDataManager.swift */; }; 432E73CB1D24B3D6009AD15D /* RemoteDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 432E73CA1D24B3D6009AD15D /* RemoteDataManager.swift */; }; @@ -121,7 +120,6 @@ 43E3449F1B9D68E900C85C07 /* StatusTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E3449E1B9D68E900C85C07 /* StatusTableViewController.swift */; }; 43E344A41B9E1B1C00C85C07 /* NSUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E344A31B9E1B1C00C85C07 /* NSUserDefaults.swift */; }; 43E397A31D56B9E40028E321 /* Glucose.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E397A21D56B9E40028E321 /* Glucose.swift */; }; - 43EA285F1D50ED3D001BC233 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; 43EB40861C82646A00472A8C /* StatusChartManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EB40851C82646A00472A8C /* StatusChartManager.swift */; }; 43F41C331D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F41C321D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift */; }; 43F41C351D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F41C341D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift */; }; @@ -1354,11 +1352,9 @@ 4328E0281CFBE2C500E199AA /* CLKComplicationTemplate.swift in Sources */, 4328E01E1CFBE25F00E199AA /* AddCarbsInterfaceController.swift in Sources */, 43846ADB1D91057000799272 /* ContextUpdatable.swift in Sources */, - 43EA285F1D50ED3D001BC233 /* GlucoseTrend.swift in Sources */, 4328E0261CFBE2C500E199AA /* IdentifiableClass.swift in Sources */, 43CB2B2B1D924D450079823D /* WCSession.swift in Sources */, 43DE925A1C5479E4001FFDE1 /* CarbEntryUserInfo.swift in Sources */, - 4328E0301CFBFAEB00E199AA /* NSTimeInterval.swift in Sources */, 43A9438E1B926B7B0051FA24 /* ComplicationController.swift in Sources */, 4328E01A1CFBE1DA00E199AA /* StatusInterfaceController.swift in Sources */, 43DE925D1C547A20001FFDE1 /* WatchContext.swift in Sources */, @@ -1849,6 +1845,7 @@ 4F7528901DFE1DC600C322D6 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; @@ -1875,6 +1872,7 @@ 4F7528911DFE1DC600C322D6 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; @@ -1970,6 +1968,7 @@ 4F7528911DFE1DC600C322D6 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/Loop/Models/ShareGlucose+GlucoseKit.swift b/Loop/Models/ShareGlucose+GlucoseKit.swift index 7aad5740e9..8a9ea5bdf2 100644 --- a/Loop/Models/ShareGlucose+GlucoseKit.swift +++ b/Loop/Models/ShareGlucose+GlucoseKit.swift @@ -10,6 +10,7 @@ import Foundation import HealthKit import LoopKit import ShareClient +import HUDViewKit extension ShareGlucose: GlucoseValue { @@ -24,15 +25,25 @@ extension ShareGlucose: GlucoseValue { extension ShareGlucose: SensorDisplayable { - var isStateValid: Bool { + public var isStateValid: Bool { return glucose >= 20 } - var trendType: GlucoseTrend? { + public var trendType: GlucoseTrend? { return GlucoseTrend(rawValue: Int(trend)) } - var isLocal: Bool { + public var isLocal: Bool { return false } } + +extension SensorDisplayable { + public var stateDescription: String { + if isStateValid { + return NSLocalizedString("OK", comment: "Sensor state description for the valid state") + } else { + return NSLocalizedString("Needs Attention", comment: "Sensor state description for the non-valid state") + } + } +} diff --git a/WatchApp Extension/Models/WatchContext.swift b/WatchApp Extension/Models/WatchContext.swift index f5cbe7176e..72f5f74425 100644 --- a/WatchApp Extension/Models/WatchContext.swift +++ b/WatchApp Extension/Models/WatchContext.swift @@ -8,7 +8,7 @@ import Foundation import HealthKit - +import HUDViewKit final class WatchContext: NSObject, RawRepresentable { typealias RawValue = [String: Any] From b369975965160f30c6cc0ccda7bb74f813fd03c3 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 14 Dec 2016 15:14:29 -0800 Subject: [PATCH 03/12] Remove HUDViewKit --- WatchApp Extension/Models/WatchContext.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/WatchApp Extension/Models/WatchContext.swift b/WatchApp Extension/Models/WatchContext.swift index 72f5f74425..866d22e742 100644 --- a/WatchApp Extension/Models/WatchContext.swift +++ b/WatchApp Extension/Models/WatchContext.swift @@ -8,7 +8,6 @@ import Foundation import HealthKit -import HUDViewKit final class WatchContext: NSObject, RawRepresentable { typealias RawValue = [String: Any] From 5e09b8d1320a34266475bcdb604cd872da29b8b4 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 14 Dec 2016 15:15:37 -0800 Subject: [PATCH 04/12] Add GlucoseTrend and NSTimeInterval directly to WatchApp Extension so that it doesn't have to pull in HUDViewKit --- Loop.xcodeproj/project.pbxproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index dbb3e11c21..15a7aacdff 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -135,6 +135,8 @@ 43F78D4F1C914197002152D1 /* LoopKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F78D4B1C914197002152D1 /* LoopKit.framework */; }; 4D3B40041D4A9E1A00BC6334 /* G4ShareSpy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D3B40021D4A9DFE00BC6334 /* G4ShareSpy.framework */; }; 4D5B7A4B1D457CCA00796CA9 /* GlucoseG4.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D5B7A4A1D457CCA00796CA9 /* GlucoseG4.swift */; }; + 4F2C15741E0209F500E160D4 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; + 4F2C15751E0209FA00E160D4 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; 4F526D5D1DF0FD6500A04910 /* InsulinKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43C6407B1DA051850093E25D /* InsulinKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4F526D611DF8D9A900A04910 /* NetBasal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D601DF8D9A900A04910 /* NetBasal.swift */; }; 4F526D621DF9D95200A04910 /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; }; @@ -1341,6 +1343,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4F2C15751E0209FA00E160D4 /* GlucoseTrend.swift in Sources */, + 4F2C15741E0209F500E160D4 /* NSTimeInterval.swift in Sources */, 435400311C9F744E00D5819C /* BolusSuggestionUserInfo.swift in Sources */, 43A9438A1B926B7B0051FA24 /* NotificationController.swift in Sources */, 43A943881B926B7B0051FA24 /* ExtensionDelegate.swift in Sources */, From a229634cacb00d253bff3bc05bcd9d097b5c3528 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 18 Dec 2016 15:53:03 -0800 Subject: [PATCH 05/12] Get all targets to compile with HUDViewKit 1. Make HKUnit extension internal and included it directly into all necessary targets to avoid a conflict with the same extension in LoopKit 2. Publicize any necessary HUDViewKit vars, funcs 3. Store the Int raw value for GlucoseTrend in WatchContext and create a computed property that returns it as a GlucoseTrend object to avoid the conflict where both Loop and WatchApp Extension have their own separate concept of GlucoseTrend. --- HUDViewKit/Extensions/HKUnit.swift | 2 +- HUDViewKit/Extensions/UIColor.swift | 24 +++++++++---------- HUDViewKit/Views/LoopCompletionHUDView.swift | 4 ++-- Loop.xcodeproj/project.pbxproj | 8 +++++++ Loop/Managers/DeviceDataManager.swift | 1 + Loop/Managers/WatchDataManager.swift | 2 +- Loop/Models/Glucose.swift | 9 +++---- Loop/Models/GlucoseG4.swift | 9 +++---- .../MySentryPumpStatusMessageBody.swift | 7 +++--- .../StatusTableViewController.swift | 1 + .../Extensions/WatchContext+WatchApp.swift | 21 ++++++++++++++++ WatchApp Extension/Models/WatchContext.swift | 8 +++---- 12 files changed, 64 insertions(+), 32 deletions(-) create mode 100644 WatchApp Extension/Extensions/WatchContext+WatchApp.swift diff --git a/HUDViewKit/Extensions/HKUnit.swift b/HUDViewKit/Extensions/HKUnit.swift index ffa2e62951..0268b0a8e2 100644 --- a/HUDViewKit/Extensions/HKUnit.swift +++ b/HUDViewKit/Extensions/HKUnit.swift @@ -11,7 +11,7 @@ import HealthKit // Code in this extension is duplicated from: // https://github.com/LoopKit/LoopKit/blob/master/LoopKit/HKUnit.swift // to avoid pulling in the LoopKit extension since it's not extension-API safe. -public extension HKUnit { +extension HKUnit { // A formatting helper for determining the preferred decimal style for a given unit var preferredMinimumFractionDigits: Int { if self.unitString == "mg/dL" { diff --git a/HUDViewKit/Extensions/UIColor.swift b/HUDViewKit/Extensions/UIColor.swift index 6562eeb3f3..414ffa7361 100644 --- a/HUDViewKit/Extensions/UIColor.swift +++ b/HUDViewKit/Extensions/UIColor.swift @@ -10,31 +10,31 @@ import UIKit extension UIColor { - @nonobjc static var tintColor: UIColor? = nil + @nonobjc public static var tintColor: UIColor? = nil @nonobjc public static let secondaryLabelColor = UIColor.HIGGrayColor() - @nonobjc static let cellBackgroundColor = UIColor(white: 239 / 255, alpha: 1) + @nonobjc public static let cellBackgroundColor = UIColor(white: 239 / 255, alpha: 1) - @nonobjc static let gridColor = UIColor(white: 193 / 255, alpha: 1) + @nonobjc public static let gridColor = UIColor(white: 193 / 255, alpha: 1) - @nonobjc static let glucoseTintColor = UIColor(red: 0 / 255, green: 176 / 255, blue: 255 / 255, alpha: 1) + @nonobjc public static let glucoseTintColor = UIColor(red: 0 / 255, green: 176 / 255, blue: 255 / 255, alpha: 1) - @nonobjc static let IOBTintColor = UIColor.HIGOrangeColor() + @nonobjc public static let IOBTintColor = UIColor.HIGOrangeColor() - @nonobjc static let COBTintColor = UIColor(red: 99 / 255, green: 218 / 255, blue: 56 / 255, alpha: 1) + @nonobjc public static let COBTintColor = UIColor(red: 99 / 255, green: 218 / 255, blue: 56 / 255, alpha: 1) - @nonobjc static let doseTintColor = UIColor.HIGOrangeColor() + @nonobjc public static let doseTintColor = UIColor.HIGOrangeColor() - @nonobjc static let freshColor = UIColor.HIGGreenColor() + @nonobjc public static let freshColor = UIColor.HIGGreenColor() - @nonobjc static let agingColor = UIColor.HIGYellowColor() + @nonobjc public static let agingColor = UIColor.HIGYellowColor() - @nonobjc static let staleColor = UIColor.HIGRedColor() + @nonobjc public static let staleColor = UIColor.HIGRedColor() - @nonobjc static let unknownColor = UIColor(red: 198 / 255, green: 199 / 255, blue: 201 / 255, alpha: 1) + @nonobjc public static let unknownColor = UIColor(red: 198 / 255, green: 199 / 255, blue: 201 / 255, alpha: 1) - @nonobjc static let deleteColor = UIColor.HIGRedColor() + @nonobjc public static let deleteColor = UIColor.HIGRedColor() // MARK: - HIG colors // See: https://developer.apple.com/ios/human-interface-guidelines/visual-design/color/ diff --git a/HUDViewKit/Views/LoopCompletionHUDView.swift b/HUDViewKit/Views/LoopCompletionHUDView.swift index 04b0e04819..f87e90c852 100644 --- a/HUDViewKit/Views/LoopCompletionHUDView.swift +++ b/HUDViewKit/Views/LoopCompletionHUDView.swift @@ -32,13 +32,13 @@ public final class LoopCompletionHUDView: HUDView { } } - var loopInProgress = false { + public var loopInProgress = false { didSet { loopStateView.animated = loopInProgress } } - func assertTimer(_ active: Bool = true) { + public func assertTimer(_ active: Bool = true) { if active && window != nil, let date = lastLoopCompleted { initTimer(date) } else { diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index 15a7aacdff..2dffc2f29a 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -137,6 +137,9 @@ 4D5B7A4B1D457CCA00796CA9 /* GlucoseG4.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D5B7A4A1D457CCA00796CA9 /* GlucoseG4.swift */; }; 4F2C15741E0209F500E160D4 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; 4F2C15751E0209FA00E160D4 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; + 4F2C15811E0495B200E160D4 /* WatchContext+WatchApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2C15801E0495B200E160D4 /* WatchContext+WatchApp.swift */; }; + 4F2C15821E074FC600E160D4 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; + 4F2C15831E0757E600E160D4 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; 4F526D5D1DF0FD6500A04910 /* InsulinKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43C6407B1DA051850093E25D /* InsulinKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4F526D611DF8D9A900A04910 /* NetBasal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D601DF8D9A900A04910 /* NetBasal.swift */; }; 4F526D621DF9D95200A04910 /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; }; @@ -440,6 +443,7 @@ 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LevelMaskView.swift; sourceTree = ""; }; 4D3B40021D4A9DFE00BC6334 /* G4ShareSpy.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = G4ShareSpy.framework; path = Carthage/Build/iOS/G4ShareSpy.framework; sourceTree = ""; }; 4D5B7A4A1D457CCA00796CA9 /* GlucoseG4.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GlucoseG4.swift; path = Loop/Models/GlucoseG4.swift; sourceTree = SOURCE_ROOT; }; + 4F2C15801E0495B200E160D4 /* WatchContext+WatchApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "WatchContext+WatchApp.swift"; sourceTree = ""; }; 4F526D5E1DF2459000A04910 /* HKUnit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HKUnit.swift; sourceTree = ""; }; 4F526D601DF8D9A900A04910 /* NetBasal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetBasal.swift; sourceTree = ""; }; 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Loop Status Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -555,6 +559,7 @@ 4328E0201CFBE2C500E199AA /* IdentifiableClass.swift */, 4328E0231CFBE2C500E199AA /* NSUserDefaults.swift */, 4328E0241CFBE2C500E199AA /* UIColor.swift */, + 4F2C15801E0495B200E160D4 /* WatchContext+WatchApp.swift */, 43CB2B2A1D924D450079823D /* WCSession.swift */, 4328E0251CFBE2C500E199AA /* WKAlertAction.swift */, 4328E02E1CFBF81800E199AA /* WKInterfaceImage.swift */, @@ -1264,6 +1269,7 @@ 434F54571D287FDB002A9274 /* NibLoadable.swift in Sources */, 4315D28A1CA5F45E00589052 /* DiagnosticLogger+LoopKit.swift in Sources */, 43C418B51CE0575200405B6A /* ShareGlucose+GlucoseKit.swift in Sources */, + 4F2C15821E074FC600E160D4 /* NSTimeInterval.swift in Sources */, 430DA58E1D4AEC230097D1CA /* NSBundle.swift in Sources */, 43776F901B8022E90074EA36 /* AppDelegate.swift in Sources */, 437CCADA1D284ADF0075D2C3 /* AuthenticationTableViewCell.swift in Sources */, @@ -1350,6 +1356,7 @@ 43A943881B926B7B0051FA24 /* ExtensionDelegate.swift in Sources */, 4328E0291CFBE2C500E199AA /* NSUserDefaults.swift in Sources */, 4328E02F1CFBF81800E199AA /* WKInterfaceImage.swift in Sources */, + 4F2C15811E0495B200E160D4 /* WatchContext+WatchApp.swift in Sources */, 4328E02A1CFBE2C500E199AA /* UIColor.swift in Sources */, 4328E01B1CFBE1DA00E199AA /* BolusInterfaceController.swift in Sources */, 4328E02B1CFBE2C500E199AA /* WKAlertAction.swift in Sources */, @@ -1388,6 +1395,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4F2C15831E0757E600E160D4 /* HKUnit.swift in Sources */, 4F526D621DF9D95200A04910 /* NSBundle.swift in Sources */, 4FC8C8021DEB943800A1452E /* NSUserDefaults+StatusExtension.swift in Sources */, 4F70C2121DE900EA006380B7 /* StatusExtensionContext.swift in Sources */, diff --git a/Loop/Managers/DeviceDataManager.swift b/Loop/Managers/DeviceDataManager.swift index 495ef0333e..10ec0f8310 100644 --- a/Loop/Managers/DeviceDataManager.swift +++ b/Loop/Managers/DeviceDataManager.swift @@ -12,6 +12,7 @@ import CoreData import G4ShareSpy import GlucoseKit import HealthKit +import HUDViewKit import InsulinKit import LoopKit import MinimedKit diff --git a/Loop/Managers/WatchDataManager.swift b/Loop/Managers/WatchDataManager.swift index 37c98a3ead..b00c038fb0 100644 --- a/Loop/Managers/WatchDataManager.swift +++ b/Loop/Managers/WatchDataManager.swift @@ -118,7 +118,7 @@ final class WatchDataManager: NSObject, WCSessionDelegate { context.maxBolus = maxBolus if let trend = self.deviceDataManager.sensorInfo?.trendType { - context.glucoseTrend = trend + context.glucoseTrendRawValue = trend.rawValue } completionHandler(context) diff --git a/Loop/Models/Glucose.swift b/Loop/Models/Glucose.swift index 0ae2ca0cb1..568d444f2c 100644 --- a/Loop/Models/Glucose.swift +++ b/Loop/Models/Glucose.swift @@ -7,15 +7,16 @@ // import Foundation +import HUDViewKit import xDripG5 extension Glucose: SensorDisplayable { - var isStateValid: Bool { + public var isStateValid: Bool { return state == .ok && status == .ok } - var stateDescription: String { + public var stateDescription: String { let status: String switch self.status { case .ok: @@ -29,7 +30,7 @@ extension Glucose: SensorDisplayable { return String(format: "%1$@ %2$@", String(describing: state), status) } - var trendType: GlucoseTrend? { + public var trendType: GlucoseTrend? { guard trend < Int(Int8.max) else { return nil } @@ -52,7 +53,7 @@ extension Glucose: SensorDisplayable { } } - var isLocal: Bool { + public var isLocal: Bool { return true } } diff --git a/Loop/Models/GlucoseG4.swift b/Loop/Models/GlucoseG4.swift index 30df44498d..e634599d48 100644 --- a/Loop/Models/GlucoseG4.swift +++ b/Loop/Models/GlucoseG4.swift @@ -9,6 +9,7 @@ import Foundation import G4ShareSpy import HealthKit +import HUDViewKit import LoopKit @@ -24,11 +25,11 @@ extension GlucoseG4: GlucoseValue { extension GlucoseG4: SensorDisplayable { - var isStateValid: Bool { + public var isStateValid: Bool { return glucose >= 20 } - var stateDescription: String { + public var stateDescription: String { if isStateValid { return NSLocalizedString("OK", comment: "Sensor state description for the valid state") } else { @@ -36,11 +37,11 @@ extension GlucoseG4: SensorDisplayable { } } - var trendType: GlucoseTrend? { + public var trendType: GlucoseTrend? { return GlucoseTrend(rawValue: Int(trend)) } - var isLocal: Bool { + public var isLocal: Bool { return true } } diff --git a/Loop/Models/MySentryPumpStatusMessageBody.swift b/Loop/Models/MySentryPumpStatusMessageBody.swift index 4ce3524ccd..39491c5cde 100644 --- a/Loop/Models/MySentryPumpStatusMessageBody.swift +++ b/Loop/Models/MySentryPumpStatusMessageBody.swift @@ -6,12 +6,13 @@ // Copyright © 2016 Nathan Racklyeft. All rights reserved. // +import HUDViewKit import LoopKit import MinimedKit extension MySentryPumpStatusMessageBody: SensorDisplayable { - var isStateValid: Bool { + public var isStateValid: Bool { switch glucose { case .active, .off: return true @@ -20,7 +21,7 @@ extension MySentryPumpStatusMessageBody: SensorDisplayable { } } - var trendType: GlucoseTrend? { + public var trendType: HUDViewKit.GlucoseTrend? { guard case .active = glucose else { return nil } @@ -39,7 +40,7 @@ extension MySentryPumpStatusMessageBody: SensorDisplayable { } } - var isLocal: Bool { + public var isLocal: Bool { return true } diff --git a/Loop/View Controllers/StatusTableViewController.swift b/Loop/View Controllers/StatusTableViewController.swift index ec995ffb83..1cac28d307 100644 --- a/Loop/View Controllers/StatusTableViewController.swift +++ b/Loop/View Controllers/StatusTableViewController.swift @@ -10,6 +10,7 @@ import UIKit import CarbKit import GlucoseKit import HealthKit +import HUDViewKit import InsulinKit import LoopKit import SwiftCharts diff --git a/WatchApp Extension/Extensions/WatchContext+WatchApp.swift b/WatchApp Extension/Extensions/WatchContext+WatchApp.swift new file mode 100644 index 0000000000..aff2dc566e --- /dev/null +++ b/WatchApp Extension/Extensions/WatchContext+WatchApp.swift @@ -0,0 +1,21 @@ +// +// WatchContext.swift +// Loop +// +// Created by Bharat Mediratta on 12/16/16. +// Copyright © 2016 LoopKit Authors. All rights reserved. +// + +import Foundation + +extension WatchContext { + var glucoseTrend: GlucoseTrend? { + get { + if let glucoseTrendRawValue = glucoseTrendRawValue { + return GlucoseTrend(rawValue: glucoseTrendRawValue) + } else { + return nil + } + } + } +} diff --git a/WatchApp Extension/Models/WatchContext.swift b/WatchApp Extension/Models/WatchContext.swift index 866d22e742..e5e7af322f 100644 --- a/WatchApp Extension/Models/WatchContext.swift +++ b/WatchApp Extension/Models/WatchContext.swift @@ -18,7 +18,7 @@ final class WatchContext: NSObject, RawRepresentable { var maxBolus: Double? var glucose: HKQuantity? - var glucoseTrend: GlucoseTrend? + var glucoseTrendRawValue: Int? var eventualGlucose: HKQuantity? var glucoseDate: Date? @@ -63,9 +63,7 @@ final class WatchContext: NSObject, RawRepresentable { } } - if let rawTrend = rawValue["gt"] as? Int { - glucoseTrend = GlucoseTrend(rawValue: rawTrend) - } + glucoseTrendRawValue = rawValue["gt"] as? Int glucoseDate = rawValue["gd"] as? Date IOB = rawValue["iob"] as? Double @@ -97,7 +95,7 @@ final class WatchContext: NSObject, RawRepresentable { raw["gv"] = glucose?.doubleValue(for: unit) } - raw["gt"] = glucoseTrend?.rawValue + raw["gt"] = glucoseTrendRawValue raw["gd"] = glucoseDate raw["iob"] = IOB raw["ld"] = loopLastRunDate From c38c99095e5611bc451c03b96050a0b70652fa20 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 18 Dec 2016 16:07:19 -0800 Subject: [PATCH 06/12] Rename HUDViewKit to LoopUI --- HUDViewKit/HUDViewKit.h | 19 ------- .../StatusExtensionContext.swift | 2 +- .../StatusViewController.swift | 8 +-- Loop.xcodeproj/project.pbxproj | 57 ++++++++++--------- Loop/Managers/DeviceDataManager.swift | 2 +- Loop/Models/Glucose.swift | 2 +- Loop/Models/GlucoseG4.swift | 2 +- .../MySentryPumpStatusMessageBody.swift | 4 +- Loop/Models/ShareGlucose+GlucoseKit.swift | 2 +- .../StatusTableViewController.swift | 2 +- .../Extensions/HKUnit.swift | 0 .../Extensions/NSNumberFormatter.swift | 0 .../Extensions/NSTimeInterval.swift | 0 .../Extensions/UIColor.swift | 0 {HUDViewKit => LoopUI}/Info.plist | 2 +- LoopUI/LoopUI.h | 19 +++++++ .../Models/GlucoseTrend.swift | 0 .../Models/SensorDisplayable.swift | 0 .../Views/BasalRateHUDView.swift | 0 .../Views/BasalStateView.swift | 0 .../Views/BatteryLevelHUDView.swift | 0 .../Views/GlucoseHUDView.swift | 0 {HUDViewKit => LoopUI}/Views/HUDView.swift | 0 .../Views/LevelMaskView.swift | 0 .../Views/LoopCompletionHUDView.swift | 0 .../Views/LoopStateView.swift | 0 .../Views/ReservoirVolumeHUDView.swift | 0 27 files changed, 61 insertions(+), 60 deletions(-) delete mode 100644 HUDViewKit/HUDViewKit.h rename {HUDViewKit => LoopUI}/Extensions/HKUnit.swift (100%) rename {HUDViewKit => LoopUI}/Extensions/NSNumberFormatter.swift (100%) rename {HUDViewKit => LoopUI}/Extensions/NSTimeInterval.swift (100%) rename {HUDViewKit => LoopUI}/Extensions/UIColor.swift (100%) rename {HUDViewKit => LoopUI}/Info.plist (96%) create mode 100644 LoopUI/LoopUI.h rename {HUDViewKit => LoopUI}/Models/GlucoseTrend.swift (100%) rename {HUDViewKit => LoopUI}/Models/SensorDisplayable.swift (100%) rename {HUDViewKit => LoopUI}/Views/BasalRateHUDView.swift (100%) rename {HUDViewKit => LoopUI}/Views/BasalStateView.swift (100%) rename {HUDViewKit => LoopUI}/Views/BatteryLevelHUDView.swift (100%) rename {HUDViewKit => LoopUI}/Views/GlucoseHUDView.swift (100%) rename {HUDViewKit => LoopUI}/Views/HUDView.swift (100%) rename {HUDViewKit => LoopUI}/Views/LevelMaskView.swift (100%) rename {HUDViewKit => LoopUI}/Views/LoopCompletionHUDView.swift (100%) rename {HUDViewKit => LoopUI}/Views/LoopStateView.swift (100%) rename {HUDViewKit => LoopUI}/Views/ReservoirVolumeHUDView.swift (100%) diff --git a/HUDViewKit/HUDViewKit.h b/HUDViewKit/HUDViewKit.h deleted file mode 100644 index c2c31c7ce2..0000000000 --- a/HUDViewKit/HUDViewKit.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// HUDViewKit.h -// HUDViewKit -// -// Created by Bharat Mediratta on 12/11/16. -// Copyright © 2016 LoopKit Authors. All rights reserved. -// - -#import - -//! Project version number for HUDViewKit. -FOUNDATION_EXPORT double HUDViewKitVersionNumber; - -//! Project version string for HUDViewKit. -FOUNDATION_EXPORT const unsigned char HUDViewKitVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Loop Status Extension/StatusExtensionContext.swift b/Loop Status Extension/StatusExtensionContext.swift index c0a02c6ee6..be37aa25d4 100644 --- a/Loop Status Extension/StatusExtensionContext.swift +++ b/Loop Status Extension/StatusExtensionContext.swift @@ -9,7 +9,7 @@ import Foundation import HealthKit -import HUDViewKit +import LoopUI struct ReservoirContext { let startDate: Date diff --git a/Loop Status Extension/StatusViewController.swift b/Loop Status Extension/StatusViewController.swift index 05dc7471ab..9a0c469063 100644 --- a/Loop Status Extension/StatusViewController.swift +++ b/Loop Status Extension/StatusViewController.swift @@ -6,11 +6,11 @@ // Copyright © 2016 LoopKit Authors. All rights reserved. // -import UIKit -import NotificationCenter -import HealthKit import CoreData -import HUDViewKit +import HealthKit +import LoopUI +import NotificationCenter +import UIKit class StatusViewController: UIViewController, NCWidgetProviding { diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index 2dffc2f29a..6ec7991b17 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -140,6 +140,7 @@ 4F2C15811E0495B200E160D4 /* WatchContext+WatchApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2C15801E0495B200E160D4 /* WatchContext+WatchApp.swift */; }; 4F2C15821E074FC600E160D4 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; 4F2C15831E0757E600E160D4 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; + 4F2C15851E075B8700E160D4 /* LoopUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F75288D1DFE1DC600C322D6 /* LoopUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4F526D5D1DF0FD6500A04910 /* InsulinKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43C6407B1DA051850093E25D /* InsulinKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4F526D611DF8D9A900A04910 /* NetBasal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D601DF8D9A900A04910 /* NetBasal.swift */; }; 4F526D621DF9D95200A04910 /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; }; @@ -151,9 +152,8 @@ 4F70C2101DE8FAC5006380B7 /* StatusExtensionDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C20F1DE8FAC5006380B7 /* StatusExtensionDataManager.swift */; }; 4F70C2121DE900EA006380B7 /* StatusExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */; }; 4F70C2131DE90339006380B7 /* StatusExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */; }; - 4F75288F1DFE1DC600C322D6 /* HUDViewKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F75288D1DFE1DC600C322D6 /* HUDViewKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4F7528941DFE1E9500C322D6 /* HUDViewKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */; }; - 4F7528951DFE1E9B00C322D6 /* HUDViewKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */; }; + 4F7528941DFE1E9500C322D6 /* LoopUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */; }; + 4F7528951DFE1E9B00C322D6 /* LoopUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */; }; 4F75289A1DFE1F6000C322D6 /* BasalRateHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */; }; 4F75289B1DFE1F6000C322D6 /* BatteryLevelHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */; }; 4F75289C1DFE1F6000C322D6 /* GlucoseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */; }; @@ -216,14 +216,14 @@ containerPortal = 43776F841B8022E90074EA36 /* Project object */; proxyType = 1; remoteGlobalIDString = 4F75288A1DFE1DC600C322D6; - remoteInfo = HUDViewKit; + remoteInfo = LoopUI; }; 4F7528981DFE1ED800C322D6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 43776F841B8022E90074EA36 /* Project object */; proxyType = 1; remoteGlobalIDString = 4F75288A1DFE1DC600C322D6; - remoteInfo = HUDViewKit; + remoteInfo = LoopUI; }; /* End PBXContainerItemProxy section */ @@ -454,8 +454,8 @@ 4F70C1FD1DE8E662006380B7 /* Loop Status Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Loop Status Extension.entitlements"; sourceTree = ""; }; 4F70C20F1DE8FAC5006380B7 /* StatusExtensionDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusExtensionDataManager.swift; sourceTree = ""; }; 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusExtensionContext.swift; sourceTree = ""; }; - 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HUDViewKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4F75288D1DFE1DC600C322D6 /* HUDViewKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HUDViewKit.h; sourceTree = ""; }; + 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LoopUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4F75288D1DFE1DC600C322D6 /* LoopUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoopUI.h; sourceTree = ""; }; 4F75288E1DFE1DC600C322D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSUserDefaults+StatusExtension.swift"; sourceTree = ""; }; C10428961D17BAD400DD539A /* NightscoutUploadKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NightscoutUploadKit.framework; path = Carthage/Build/iOS/NightscoutUploadKit.framework; sourceTree = ""; }; @@ -481,7 +481,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7528941DFE1E9500C322D6 /* HUDViewKit.framework in Frameworks */, + 4F7528941DFE1E9500C322D6 /* LoopUI.framework in Frameworks */, 43C6407C1DA051850093E25D /* InsulinKit.framework in Frameworks */, 438A95A81D8B9B24009D12E1 /* xDripG5.framework in Frameworks */, 43C246A81D89990F0031F8D1 /* Crypto.framework in Frameworks */, @@ -525,7 +525,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7528951DFE1E9B00C322D6 /* HUDViewKit.framework in Frameworks */, + 4F7528951DFE1E9B00C322D6 /* LoopUI.framework in Frameworks */, 4F70C1DE1DE8DCA7006380B7 /* NotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -596,7 +596,7 @@ 43A943821B926B7B0051FA24 /* WatchApp Extension */, 43F78D2C1C8FC58F002152D1 /* LoopTests */, 43E2D8D21D20BF42004DA55F /* DoseMathTests */, - 4F75288C1DFE1DC600C322D6 /* HUDViewKit */, + 4F75288C1DFE1DC600C322D6 /* LoopUI */, 968DCD53F724DE56FFE51920 /* Frameworks */, 43776F8D1B8022E90074EA36 /* Products */, 437D9BA11D7B5203007245E8 /* Loop.xcconfig */, @@ -612,7 +612,7 @@ 43E2D8D11D20BF42004DA55F /* DoseMathTests.xctest */, 43E2D90B1D20C581004DA55F /* LoopTests.xctest */, 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */, - 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */, + 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */, ); name = Products; sourceTree = ""; @@ -831,16 +831,17 @@ path = "Loop Status Extension"; sourceTree = SOURCE_ROOT; }; - 4F75288C1DFE1DC600C322D6 /* HUDViewKit */ = { + 4F75288C1DFE1DC600C322D6 /* LoopUI */ = { isa = PBXGroup; children = ( 4F7528A61DFE20AE00C322D6 /* Models */, 4F7528A31DFE202B00C322D6 /* Extensions */, 4F7528931DFE1E1600C322D6 /* Views */, - 4F75288D1DFE1DC600C322D6 /* HUDViewKit.h */, + 4F75288D1DFE1DC600C322D6 /* LoopUI.h */, 4F75288E1DFE1DC600C322D6 /* Info.plist */, ); - path = HUDViewKit; + name = LoopUI; + path = LoopUI; sourceTree = ""; }; 4F7528931DFE1E1600C322D6 /* Views */ = { @@ -909,7 +910,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4F75288F1DFE1DC600C322D6 /* HUDViewKit.h in Headers */, + 4F2C15851E075B8700E160D4 /* LoopUI.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1030,9 +1031,9 @@ productReference = 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */; productType = "com.apple.product-type.app-extension"; }; - 4F75288A1DFE1DC600C322D6 /* HUDViewKit */ = { + 4F75288A1DFE1DC600C322D6 /* LoopUI */ = { isa = PBXNativeTarget; - buildConfigurationList = 4F7528921DFE1DC600C322D6 /* Build configuration list for PBXNativeTarget "HUDViewKit" */; + buildConfigurationList = 4F7528921DFE1DC600C322D6 /* Build configuration list for PBXNativeTarget "LoopUI" */; buildPhases = ( 4F7528861DFE1DC600C322D6 /* Sources */, 4F7528871DFE1DC600C322D6 /* Frameworks */, @@ -1043,9 +1044,9 @@ ); dependencies = ( ); - name = HUDViewKit; - productName = HUDViewKit; - productReference = 4F75288B1DFE1DC600C322D6 /* HUDViewKit.framework */; + name = LoopUI; + productName = LoopUI; + productReference = 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -1144,7 +1145,7 @@ 4F70C1DB1DE8DCA7006380B7 /* Loop Status Extension */, 43A943711B926B7B0051FA24 /* WatchApp */, 43A9437D1B926B7B0051FA24 /* WatchApp Extension */, - 4F75288A1DFE1DC600C322D6 /* HUDViewKit */, + 4F75288A1DFE1DC600C322D6 /* LoopUI */, 43E2D8D01D20BF42004DA55F /* DoseMathTests */, 43E2D90A1D20C581004DA55F /* LoopTests */, ); @@ -1450,12 +1451,12 @@ }; 4F7528971DFE1ED400C322D6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 4F75288A1DFE1DC600C322D6 /* HUDViewKit */; + target = 4F75288A1DFE1DC600C322D6 /* LoopUI */; targetProxy = 4F7528961DFE1ED400C322D6 /* PBXContainerItemProxy */; }; 4F7528991DFE1ED800C322D6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 4F75288A1DFE1DC600C322D6 /* HUDViewKit */; + target = 4F75288A1DFE1DC600C322D6 /* LoopUI */; targetProxy = 4F7528981DFE1ED800C322D6 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -1868,10 +1869,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = HUDViewKit/Info.plist; + INFOPLIST_FILE = LoopUI/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.loudnate.Loop.HUDViewKit; + PRODUCT_BUNDLE_IDENTIFIER = com.loudnate.Loop.LoopUI; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; @@ -1895,10 +1896,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = HUDViewKit/Info.plist; + INFOPLIST_FILE = LoopUI/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.loudnate.Loop.HUDViewKit; + PRODUCT_BUNDLE_IDENTIFIER = com.loudnate.Loop.LoopUI; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; @@ -1973,7 +1974,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4F7528921DFE1DC600C322D6 /* Build configuration list for PBXNativeTarget "HUDViewKit" */ = { + 4F7528921DFE1DC600C322D6 /* Build configuration list for PBXNativeTarget "LoopUI" */ = { isa = XCConfigurationList; buildConfigurations = ( 4F7528901DFE1DC600C322D6 /* Debug */, diff --git a/Loop/Managers/DeviceDataManager.swift b/Loop/Managers/DeviceDataManager.swift index 10ec0f8310..4dad875a39 100644 --- a/Loop/Managers/DeviceDataManager.swift +++ b/Loop/Managers/DeviceDataManager.swift @@ -12,9 +12,9 @@ import CoreData import G4ShareSpy import GlucoseKit import HealthKit -import HUDViewKit import InsulinKit import LoopKit +import LoopUI import MinimedKit import NightscoutUploadKit import RileyLinkKit diff --git a/Loop/Models/Glucose.swift b/Loop/Models/Glucose.swift index 568d444f2c..ddc1c6848a 100644 --- a/Loop/Models/Glucose.swift +++ b/Loop/Models/Glucose.swift @@ -7,7 +7,7 @@ // import Foundation -import HUDViewKit +import LoopUI import xDripG5 diff --git a/Loop/Models/GlucoseG4.swift b/Loop/Models/GlucoseG4.swift index e634599d48..de8b64f0ac 100644 --- a/Loop/Models/GlucoseG4.swift +++ b/Loop/Models/GlucoseG4.swift @@ -9,8 +9,8 @@ import Foundation import G4ShareSpy import HealthKit -import HUDViewKit import LoopKit +import LoopUI extension GlucoseG4: GlucoseValue { diff --git a/Loop/Models/MySentryPumpStatusMessageBody.swift b/Loop/Models/MySentryPumpStatusMessageBody.swift index 39491c5cde..f1f14dd392 100644 --- a/Loop/Models/MySentryPumpStatusMessageBody.swift +++ b/Loop/Models/MySentryPumpStatusMessageBody.swift @@ -6,8 +6,8 @@ // Copyright © 2016 Nathan Racklyeft. All rights reserved. // -import HUDViewKit import LoopKit +import LoopUI import MinimedKit @@ -21,7 +21,7 @@ extension MySentryPumpStatusMessageBody: SensorDisplayable { } } - public var trendType: HUDViewKit.GlucoseTrend? { + public var trendType: LoopUI.GlucoseTrend? { guard case .active = glucose else { return nil } diff --git a/Loop/Models/ShareGlucose+GlucoseKit.swift b/Loop/Models/ShareGlucose+GlucoseKit.swift index 8a9ea5bdf2..b40b2349fa 100644 --- a/Loop/Models/ShareGlucose+GlucoseKit.swift +++ b/Loop/Models/ShareGlucose+GlucoseKit.swift @@ -9,8 +9,8 @@ import Foundation import HealthKit import LoopKit +import LoopUI import ShareClient -import HUDViewKit extension ShareGlucose: GlucoseValue { diff --git a/Loop/View Controllers/StatusTableViewController.swift b/Loop/View Controllers/StatusTableViewController.swift index 1cac28d307..874d19d6c1 100644 --- a/Loop/View Controllers/StatusTableViewController.swift +++ b/Loop/View Controllers/StatusTableViewController.swift @@ -10,9 +10,9 @@ import UIKit import CarbKit import GlucoseKit import HealthKit -import HUDViewKit import InsulinKit import LoopKit +import LoopUI import SwiftCharts diff --git a/HUDViewKit/Extensions/HKUnit.swift b/LoopUI/Extensions/HKUnit.swift similarity index 100% rename from HUDViewKit/Extensions/HKUnit.swift rename to LoopUI/Extensions/HKUnit.swift diff --git a/HUDViewKit/Extensions/NSNumberFormatter.swift b/LoopUI/Extensions/NSNumberFormatter.swift similarity index 100% rename from HUDViewKit/Extensions/NSNumberFormatter.swift rename to LoopUI/Extensions/NSNumberFormatter.swift diff --git a/HUDViewKit/Extensions/NSTimeInterval.swift b/LoopUI/Extensions/NSTimeInterval.swift similarity index 100% rename from HUDViewKit/Extensions/NSTimeInterval.swift rename to LoopUI/Extensions/NSTimeInterval.swift diff --git a/HUDViewKit/Extensions/UIColor.swift b/LoopUI/Extensions/UIColor.swift similarity index 100% rename from HUDViewKit/Extensions/UIColor.swift rename to LoopUI/Extensions/UIColor.swift diff --git a/HUDViewKit/Info.plist b/LoopUI/Info.plist similarity index 96% rename from HUDViewKit/Info.plist rename to LoopUI/Info.plist index b8a0c376cc..095f91358f 100644 --- a/HUDViewKit/Info.plist +++ b/LoopUI/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - HUDViewKit + LoopUI CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier diff --git a/LoopUI/LoopUI.h b/LoopUI/LoopUI.h new file mode 100644 index 0000000000..fd22d90ece --- /dev/null +++ b/LoopUI/LoopUI.h @@ -0,0 +1,19 @@ +// +// LoopUI.h +// LoopUI +// +// Created by Bharat Mediratta on 12/11/16. +// Copyright © 2016 LoopKit Authors. All rights reserved. +// + +#import + +//! Project version number for LoopUI. +FOUNDATION_EXPORT double LoopUIVersionNumber; + +//! Project version string for LoopUI. +FOUNDATION_EXPORT const unsigned char LoopUIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/HUDViewKit/Models/GlucoseTrend.swift b/LoopUI/Models/GlucoseTrend.swift similarity index 100% rename from HUDViewKit/Models/GlucoseTrend.swift rename to LoopUI/Models/GlucoseTrend.swift diff --git a/HUDViewKit/Models/SensorDisplayable.swift b/LoopUI/Models/SensorDisplayable.swift similarity index 100% rename from HUDViewKit/Models/SensorDisplayable.swift rename to LoopUI/Models/SensorDisplayable.swift diff --git a/HUDViewKit/Views/BasalRateHUDView.swift b/LoopUI/Views/BasalRateHUDView.swift similarity index 100% rename from HUDViewKit/Views/BasalRateHUDView.swift rename to LoopUI/Views/BasalRateHUDView.swift diff --git a/HUDViewKit/Views/BasalStateView.swift b/LoopUI/Views/BasalStateView.swift similarity index 100% rename from HUDViewKit/Views/BasalStateView.swift rename to LoopUI/Views/BasalStateView.swift diff --git a/HUDViewKit/Views/BatteryLevelHUDView.swift b/LoopUI/Views/BatteryLevelHUDView.swift similarity index 100% rename from HUDViewKit/Views/BatteryLevelHUDView.swift rename to LoopUI/Views/BatteryLevelHUDView.swift diff --git a/HUDViewKit/Views/GlucoseHUDView.swift b/LoopUI/Views/GlucoseHUDView.swift similarity index 100% rename from HUDViewKit/Views/GlucoseHUDView.swift rename to LoopUI/Views/GlucoseHUDView.swift diff --git a/HUDViewKit/Views/HUDView.swift b/LoopUI/Views/HUDView.swift similarity index 100% rename from HUDViewKit/Views/HUDView.swift rename to LoopUI/Views/HUDView.swift diff --git a/HUDViewKit/Views/LevelMaskView.swift b/LoopUI/Views/LevelMaskView.swift similarity index 100% rename from HUDViewKit/Views/LevelMaskView.swift rename to LoopUI/Views/LevelMaskView.swift diff --git a/HUDViewKit/Views/LoopCompletionHUDView.swift b/LoopUI/Views/LoopCompletionHUDView.swift similarity index 100% rename from HUDViewKit/Views/LoopCompletionHUDView.swift rename to LoopUI/Views/LoopCompletionHUDView.swift diff --git a/HUDViewKit/Views/LoopStateView.swift b/LoopUI/Views/LoopStateView.swift similarity index 100% rename from HUDViewKit/Views/LoopStateView.swift rename to LoopUI/Views/LoopStateView.swift diff --git a/HUDViewKit/Views/ReservoirVolumeHUDView.swift b/LoopUI/Views/ReservoirVolumeHUDView.swift similarity index 100% rename from HUDViewKit/Views/ReservoirVolumeHUDView.swift rename to LoopUI/Views/ReservoirVolumeHUDView.swift From 100164fc09a6470db088cb00d7c9790f0eabfb05 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 21 Dec 2016 13:36:43 -0800 Subject: [PATCH 07/12] partway through moving layout --- .../Base.lproj/MainInterface.storyboard | 278 +------------- .../StatusViewController.swift | 38 +- Loop.xcodeproj/project.pbxproj | 25 +- Loop/Base.lproj/Main.storyboard | 346 ++++-------------- .../Assets.xcassets}/Contents.json | 0 .../Assets.xcassets/battery}/Contents.json | 0 .../battery/battery.imageset/Contents.json | 0 .../battery/battery.imageset/battery.pdf | Bin .../battery_mask.imageset/Contents.json | 0 .../battery_mask.imageset/battery_mask.pdf | Bin .../Assets.xcassets/reservoir/Contents.json | 6 + .../reservoir.imageset/Contents.json | 0 .../reservoir.imageset/reservoir.pdf | Bin .../reservoir_mask.imageset/Contents.json | 0 .../reservoir_mask.pdf | Bin LoopUI/HUDStackView.xib | 294 +++++++++++++++ LoopUI/Views/BasalRateHUDView.swift | 2 +- LoopUI/Views/BaseHUDView.swift | 19 + LoopUI/Views/BatteryLevelHUDView.swift | 2 +- LoopUI/Views/GlucoseHUDView.swift | 2 +- LoopUI/Views/HUDStackView.swift | 17 + LoopUI/Views/HUDView.swift | 29 +- LoopUI/Views/LoopCompletionHUDView.swift | 2 +- LoopUI/Views/ReservoirVolumeHUDView.swift | 2 +- 24 files changed, 486 insertions(+), 576 deletions(-) rename {Loop/Assets.xcassets/battery => LoopUI/Assets.xcassets}/Contents.json (100%) rename {Loop/Assets.xcassets/reservoir => LoopUI/Assets.xcassets/battery}/Contents.json (100%) rename {Loop => LoopUI}/Assets.xcassets/battery/battery.imageset/Contents.json (100%) rename {Loop => LoopUI}/Assets.xcassets/battery/battery.imageset/battery.pdf (100%) rename {Loop => LoopUI}/Assets.xcassets/battery/battery_mask.imageset/Contents.json (100%) rename {Loop => LoopUI}/Assets.xcassets/battery/battery_mask.imageset/battery_mask.pdf (100%) create mode 100644 LoopUI/Assets.xcassets/reservoir/Contents.json rename {Loop => LoopUI}/Assets.xcassets/reservoir/reservoir.imageset/Contents.json (100%) rename {Loop => LoopUI}/Assets.xcassets/reservoir/reservoir.imageset/reservoir.pdf (100%) rename {Loop => LoopUI}/Assets.xcassets/reservoir/reservoir_mask.imageset/Contents.json (100%) rename {Loop => LoopUI}/Assets.xcassets/reservoir/reservoir_mask.imageset/reservoir_mask.pdf (100%) create mode 100644 LoopUI/HUDStackView.xib create mode 100644 LoopUI/Views/BaseHUDView.swift create mode 100644 LoopUI/Views/HUDStackView.swift diff --git a/Loop Status Extension/Base.lproj/MainInterface.storyboard b/Loop Status Extension/Base.lproj/MainInterface.storyboard index 71370e45c5..05b95fa8dd 100644 --- a/Loop Status Extension/Base.lproj/MainInterface.storyboard +++ b/Loop Status Extension/Base.lproj/MainInterface.storyboard @@ -1,12 +1,11 @@ - - + + - @@ -23,267 +22,8 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -312,11 +52,7 @@ - - - - - + @@ -325,10 +61,4 @@ - - - - - - diff --git a/Loop Status Extension/StatusViewController.swift b/Loop Status Extension/StatusViewController.swift index 9a0c469063..5520f7161f 100644 --- a/Loop Status Extension/StatusViewController.swift +++ b/Loop Status Extension/StatusViewController.swift @@ -14,13 +14,39 @@ import UIKit class StatusViewController: UIViewController, NCWidgetProviding { - @IBOutlet weak var loopCompletionHUD: LoopCompletionHUDView! - @IBOutlet weak var glucoseHUD: GlucoseHUDView! - @IBOutlet weak var basalRateHUD: BasalRateHUDView! - @IBOutlet weak var reservoirVolumeHUD: ReservoirVolumeHUDView! - @IBOutlet weak var batteryHUD: BatteryLevelHUDView! + @IBOutlet weak var hudView: HUDView! @IBOutlet weak var subtitleLabel: UILabel! - + + var loopCompletionHUD: LoopCompletionHUDView! { + get { + return hudView.view.loopCompletionHUD + } + } + + var glucoseHUD: GlucoseHUDView! { + get { + return hudView.view.glucoseHUD + } + } + + var basalRateHUD: BasalRateHUDView! { + get { + return hudView.view.basalRateHUD + } + } + + var reservoirVolumeHUD: ReservoirVolumeHUDView! { + get { + return hudView.view.reservoirVolumeHUD + } + } + + var batteryHUD: BatteryLevelHUDView! { + get { + return hudView.view.batteryHUD + } + } + override func viewDidLoad() { super.viewDidLoad() subtitleLabel.alpha = 0 diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index 6ec7991b17..0654cc95c8 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -141,6 +141,10 @@ 4F2C15821E074FC600E160D4 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; 4F2C15831E0757E600E160D4 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; 4F2C15851E075B8700E160D4 /* LoopUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F75288D1DFE1DC600C322D6 /* LoopUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4F2C15931E09BF2C00E160D4 /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2C15921E09BF2C00E160D4 /* HUDView.swift */; }; + 4F2C15951E09BF3C00E160D4 /* HUDStackView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4F2C15941E09BF3C00E160D4 /* HUDStackView.xib */; }; + 4F2C15971E09E94E00E160D4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4F2C15961E09E94E00E160D4 /* Assets.xcassets */; }; + 4F2C15991E0A0FF400E160D4 /* HUDStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2C15981E0A0FF400E160D4 /* HUDStackView.swift */; }; 4F526D5D1DF0FD6500A04910 /* InsulinKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43C6407B1DA051850093E25D /* InsulinKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4F526D611DF8D9A900A04910 /* NetBasal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D601DF8D9A900A04910 /* NetBasal.swift */; }; 4F526D621DF9D95200A04910 /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; }; @@ -157,7 +161,7 @@ 4F75289A1DFE1F6000C322D6 /* BasalRateHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */; }; 4F75289B1DFE1F6000C322D6 /* BatteryLevelHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */; }; 4F75289C1DFE1F6000C322D6 /* GlucoseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */; }; - 4F75289D1DFE1F6000C322D6 /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */; }; + 4F75289D1DFE1F6000C322D6 /* BaseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBB1CD6DE6A003C8C80 /* BaseHUDView.swift */; }; 4F75289E1DFE1F6000C322D6 /* LoopCompletionHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */; }; 4F75289F1DFE1F6000C322D6 /* ReservoirVolumeHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */; }; 4F7528A01DFE1F9D00C322D6 /* LoopStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */; }; @@ -349,7 +353,7 @@ 437CCADB1D284B830075D2C3 /* ButtonTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonTableViewCell.swift; sourceTree = ""; }; 437CCADD1D2858FD0075D2C3 /* AuthenticationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthenticationViewController.swift; sourceTree = ""; }; 437CCADF1D285C7B0075D2C3 /* ServiceAuthentication.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceAuthentication.swift; sourceTree = ""; }; - 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HUDView.swift; sourceTree = ""; }; + 437CEEBB1CD6DE6A003C8C80 /* BaseHUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseHUDView.swift; sourceTree = ""; }; 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoopCompletionHUDView.swift; sourceTree = ""; }; 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasalRateHUDView.swift; sourceTree = ""; }; 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReservoirVolumeHUDView.swift; sourceTree = ""; }; @@ -444,6 +448,10 @@ 4D3B40021D4A9DFE00BC6334 /* G4ShareSpy.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = G4ShareSpy.framework; path = Carthage/Build/iOS/G4ShareSpy.framework; sourceTree = ""; }; 4D5B7A4A1D457CCA00796CA9 /* GlucoseG4.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GlucoseG4.swift; path = Loop/Models/GlucoseG4.swift; sourceTree = SOURCE_ROOT; }; 4F2C15801E0495B200E160D4 /* WatchContext+WatchApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "WatchContext+WatchApp.swift"; sourceTree = ""; }; + 4F2C15921E09BF2C00E160D4 /* HUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HUDView.swift; sourceTree = ""; }; + 4F2C15941E09BF3C00E160D4 /* HUDStackView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HUDStackView.xib; sourceTree = ""; }; + 4F2C15961E09E94E00E160D4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 4F2C15981E0A0FF400E160D4 /* HUDStackView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HUDStackView.swift; sourceTree = ""; }; 4F526D5E1DF2459000A04910 /* HKUnit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HKUnit.swift; sourceTree = ""; }; 4F526D601DF8D9A900A04910 /* NetBasal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetBasal.swift; sourceTree = ""; }; 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Loop Status Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -839,8 +847,9 @@ 4F7528931DFE1E1600C322D6 /* Views */, 4F75288D1DFE1DC600C322D6 /* LoopUI.h */, 4F75288E1DFE1DC600C322D6 /* Info.plist */, + 4F2C15941E09BF3C00E160D4 /* HUDStackView.xib */, + 4F2C15961E09E94E00E160D4 /* Assets.xcassets */, ); - name = LoopUI; path = LoopUI; sourceTree = ""; }; @@ -851,11 +860,13 @@ 43B371851CE583890013C5A6 /* BasalStateView.swift */, 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */, 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */, - 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */, + 437CEEBB1CD6DE6A003C8C80 /* BaseHUDView.swift */, 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */, 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */, 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */, 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */, + 4F2C15921E09BF2C00E160D4 /* HUDView.swift */, + 4F2C15981E0A0FF400E160D4 /* HUDStackView.swift */, ); path = Views; sourceTree = ""; @@ -1226,6 +1237,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4F2C15971E09E94E00E160D4 /* Assets.xcassets in Resources */, + 4F2C15951E09BF3C00E160D4 /* HUDStackView.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1412,15 +1425,17 @@ 4F7528A91DFE212600C322D6 /* GlucoseTrend.swift in Sources */, 4F7528A71DFE20CE00C322D6 /* SensorDisplayable.swift in Sources */, 4F7528A81DFE20CE00C322D6 /* NSNumberFormatter.swift in Sources */, + 4F2C15931E09BF2C00E160D4 /* HUDView.swift in Sources */, 4F7528A51DFE208C00C322D6 /* NSTimeInterval.swift in Sources */, 4F7528A41DFE204900C322D6 /* UIColor.swift in Sources */, 4F7528A11DFE200B00C322D6 /* BasalStateView.swift in Sources */, + 4F2C15991E0A0FF400E160D4 /* HUDStackView.swift in Sources */, 4F7528A21DFE200B00C322D6 /* LevelMaskView.swift in Sources */, 4F7528A01DFE1F9D00C322D6 /* LoopStateView.swift in Sources */, 4F75289A1DFE1F6000C322D6 /* BasalRateHUDView.swift in Sources */, 4F75289B1DFE1F6000C322D6 /* BatteryLevelHUDView.swift in Sources */, 4F75289C1DFE1F6000C322D6 /* GlucoseHUDView.swift in Sources */, - 4F75289D1DFE1F6000C322D6 /* HUDView.swift in Sources */, + 4F75289D1DFE1F6000C322D6 /* BaseHUDView.swift in Sources */, 4F75289E1DFE1F6000C322D6 /* LoopCompletionHUDView.swift in Sources */, 4F75289F1DFE1F6000C322D6 /* ReservoirVolumeHUDView.swift in Sources */, ); diff --git a/Loop/Base.lproj/Main.storyboard b/Loop/Base.lproj/Main.storyboard index 7389695acf..d406573ea0 100644 --- a/Loop/Base.lproj/Main.storyboard +++ b/Loop/Base.lproj/Main.storyboard @@ -1,9 +1,11 @@ - - + + + + + - - + @@ -13,23 +15,26 @@ - + - + - + - + + + @@ -46,21 +51,21 @@ - + - +