Skip to content

Commit 52977a5

Browse files
committed
Adjusting the enable/disable interface
1 parent 28172f9 commit 52977a5

File tree

2 files changed

+39
-35
lines changed

2 files changed

+39
-35
lines changed

Loop/Managers/DeviceDataManager.swift

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -701,40 +701,44 @@ class DeviceDataManager: CarbStoreDelegate, TransmitterDelegate {
701701
}
702702
}
703703

704-
// TODO: Add a setter with a duration argument
705-
var workoutMode: Bool? {
706-
get {
707-
guard let range = glucoseTargetRangeSchedule else {
708-
return nil
709-
}
704+
var workoutModeEnabled: Bool? {
705+
guard let range = glucoseTargetRangeSchedule else {
706+
return nil
707+
}
710708

711-
guard let override = range.temporaryOverride else {
712-
return false
713-
}
709+
guard let override = range.temporaryOverride else {
710+
return false
711+
}
712+
713+
return override.endDate.timeIntervalSinceNow > 0
714+
}
714715

715-
return override.endDate.timeIntervalSinceNow > 0
716+
/// Attempts to enable workout glucose targets for the given duration, and returns true if successful.
717+
/// TODO: This can live on the schedule itself once its a value type, since didSet would invoke when mutated.
718+
func enableWorkoutMode(duration duration: NSTimeInterval) -> Bool {
719+
guard let glucoseTargetRangeSchedule = glucoseTargetRangeSchedule else {
720+
return false
716721
}
717-
set {
718-
guard let glucoseTargetRangeSchedule = glucoseTargetRangeSchedule, newValue = newValue else {
719-
return
720-
}
721722

722-
if newValue {
723-
// Hardcoded: 160-180 mg/dL for 1 hour.
724-
let endDate = NSDate(timeIntervalSinceNow: NSTimeInterval(hours: 1))
725-
let unit = HKUnit.milligramsPerDeciliterUnit()
726-
let targets = DoubleRange(
727-
minValue: HKQuantity(unit: unit, doubleValue: 160).doubleValueForUnit(glucoseTargetRangeSchedule.unit),
728-
maxValue: HKQuantity(unit: unit, doubleValue: 180).doubleValueForUnit(glucoseTargetRangeSchedule.unit)
729-
)
723+
// Hardcoded: 160-180 mg/dL for 1 hour.
724+
let endDate = NSDate(timeIntervalSinceNow: NSTimeInterval(hours: 1))
725+
let unit = HKUnit.milligramsPerDeciliterUnit()
726+
let targets = DoubleRange(
727+
minValue: HKQuantity(unit: unit, doubleValue: 160).doubleValueForUnit(glucoseTargetRangeSchedule.unit),
728+
maxValue: HKQuantity(unit: unit, doubleValue: 180).doubleValueForUnit(glucoseTargetRangeSchedule.unit)
729+
)
730730

731-
glucoseTargetRangeSchedule.setOverride(targets, untilDate: endDate)
732-
} else {
733-
glucoseTargetRangeSchedule.clearOverride()
734-
}
731+
glucoseTargetRangeSchedule.setOverride(targets, untilDate: endDate)
735732

736-
NSNotificationCenter.defaultCenter().postNotificationName(self.dynamicType.LoopSettingsUpdatedNotification, object: self)
737-
}
733+
NSNotificationCenter.defaultCenter().postNotificationName(self.dynamicType.LoopSettingsUpdatedNotification, object: self)
734+
735+
return true
736+
}
737+
738+
func disableWorkoutMode() {
739+
glucoseTargetRangeSchedule?.clearOverride()
740+
741+
NSNotificationCenter.defaultCenter().postNotificationName(self.dynamicType.LoopSettingsUpdatedNotification, object: self)
738742
}
739743

740744
var maximumBasalRatePerHour: Double? = NSUserDefaults.standardUserDefaults().maximumBasalRatePerHour {

Loop/View Controllers/StatusTableViewController.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ class StatusTableViewController: UITableViewController, UIGestureRecognizerDeleg
216216

217217
charts.glucoseTargetRangeSchedule = dataManager.glucoseTargetRangeSchedule
218218

219-
workoutMode = dataManager.workoutMode
219+
workoutMode = dataManager.workoutModeEnabled
220220

221221
dispatch_group_notify(reloadGroup, dispatch_get_main_queue()) {
222222
self.charts.prerender()
@@ -738,13 +738,13 @@ class StatusTableViewController: UITableViewController, UIGestureRecognizerDeleg
738738
return item
739739
}
740740

741-
@IBAction func toggleWorkoutMode(sender: UIButton) {
742-
guard let workoutMode = workoutMode else {
743-
return
744-
}
745-
741+
@IBAction func toggleWorkoutMode(sender: UIBarButtonItem) {
746742
// TODO: Display an action sheet to select a duration
747-
dataManager.workoutMode = !workoutMode
743+
if let workoutModeEnabled = workoutMode where workoutModeEnabled {
744+
dataManager.disableWorkoutMode()
745+
} else {
746+
dataManager.enableWorkoutMode(duration: NSTimeInterval(hours: 1))
747+
}
748748
}
749749

750750
// MARK: - HUDs

0 commit comments

Comments
 (0)