@@ -20,8 +20,6 @@ class AlarmViewController: CustomFormViewController {
2020 fileprivate let MAX_ALERT_BELOW_VALUE : Float = 200
2121 fileprivate let MIN_ALERT_BELOW_VALUE : Float = 50
2222
23- fileprivate let SNAP_INCREMENT : Float = 10 // or change it to 5?
24-
2523 override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
2624 return UIInterfaceOrientationMask . portrait
2725 }
@@ -39,10 +37,10 @@ class AlarmViewController: CustomFormViewController {
3937
4038 override func constructForm( ) {
4139
42- aboveSliderRow = createSliderRow ( initialValue: AlarmRule . alertIfAboveValue. value, minimumValue: MIN_ALERT_ABOVE_VALUE, maximumValue: MAX_ALERT_ABOVE_VALUE)
40+ aboveSliderRow = SliderRow . glucoseLevelSlider ( initialValue: AlarmRule . alertIfAboveValue. value, minimumValue: MIN_ALERT_ABOVE_VALUE, maximumValue: MAX_ALERT_ABOVE_VALUE)
4341 aboveSliderRow. cell. slider. addTarget ( self , action: #selector( onSliderValueChanged ( slider: event: ) ) , for: . valueChanged)
4442
45- belowSliderRow = createSliderRow ( initialValue: AlarmRule . alertIfBelowValue. value, minimumValue: MIN_ALERT_BELOW_VALUE, maximumValue: MAX_ALERT_BELOW_VALUE)
43+ belowSliderRow = SliderRow . glucoseLevelSlider ( initialValue: AlarmRule . alertIfBelowValue. value, minimumValue: MIN_ALERT_BELOW_VALUE, maximumValue: MAX_ALERT_BELOW_VALUE)
4644 belowSliderRow. cell. slider. addTarget ( self , action: #selector( onSliderValueChanged ( slider: event: ) ) , for: . valueChanged)
4745
4846
@@ -89,6 +87,28 @@ class AlarmViewController: CustomFormViewController {
8987 }
9088 }
9189
90+ <<< ButtonRowWithDynamicDetails ( " Persistent High " ) { row in
91+ row. controllerProvider = { return PersistentHighViewController ( ) }
92+ row. detailTextProvider = {
93+
94+ let urgentHighInMgdl = AlarmRule . persistentHighUpperBound. value
95+ let urgentHigh = UnitsConverter . toDisplayUnits ( " \( urgentHighInMgdl) " )
96+ let units = UserDefaultsRepository . units. value. description
97+ let urgentHighWithUnits = " \( urgentHigh) \( units) "
98+
99+ if AlarmRule . isPersistentHighEnabled. value {
100+ if #available( iOS 11 . 0 , * ) {
101+ return " Alerts when BG remains high for more than \( AlarmRule . persistentHighMinutes. value) minutes or exceeds the urgent high value ( \( urgentHighWithUnits) ). "
102+ } else {
103+ // single line, as iOS 10 doesn't expand cell for more lines
104+ return " \( AlarmRule . persistentHighMinutes. value) minutes (< \( urgentHighWithUnits) ) "
105+ }
106+ } else {
107+ return " Off "
108+ }
109+ }
110+ }
111+
92112 <<< ButtonRowWithDynamicDetails ( " Low Prediction " ) { row in
93113 row. controllerProvider = { return LowPredictionViewController ( ) }
94114 row. detailTextProvider = {
@@ -174,34 +194,6 @@ class AlarmViewController: CustomFormViewController {
174194 }
175195 }
176196
177- private func createSliderRow( initialValue: Float , minimumValue: Float , maximumValue: Float ) -> SliderRow {
178-
179- return SliderRow ( ) { row in
180- row. value = Float ( UnitsConverter . toDisplayUnits ( " \( initialValue) " ) ) !
181- } . cellSetup { [ weak self] cell, row in
182- guard let self = self else { return }
183- // row.shouldHideValue = true
184-
185- let minimumValue = Float ( UnitsConverter . toDisplayUnits ( " \( minimumValue) " ) ) !
186- let maximumValue = Float ( UnitsConverter . toDisplayUnits ( " \( maximumValue) " ) ) !
187- let snapIncrement = ( UserDefaultsRepository . units. value == . mgdl) ? self . SNAP_INCREMENT : 0.1
188-
189- let steps = ( maximumValue - minimumValue) / snapIncrement
190- row. steps = UInt ( steps. rounded ( ) )
191- cell. slider. minimumValue = minimumValue
192- cell. slider. maximumValue = maximumValue
193- row. displayValueFor = { value in
194- guard let value = value else { return " " }
195- let units = UserDefaultsRepository . units. value. description
196- return String ( " \( value. cleanValue) \( units) " )
197- }
198-
199- // fixed width for value label
200- let widthConstraint = NSLayoutConstraint ( item: cell. valueLabel, attribute: NSLayoutConstraint . Attribute. width, relatedBy: NSLayoutConstraint . Relation. equal, toItem: nil , attribute: NSLayoutConstraint . Attribute. notAnAttribute, multiplier: 1 , constant: 96 )
201- cell. valueLabel. addConstraints ( [ widthConstraint] )
202- }
203- }
204-
205197 private func alertInvalidChange( message: String ) {
206198 let alertController = UIAlertController ( title: " Invalid change " , message: message, preferredStyle: . alert)
207199 let actionOk = UIAlertAction ( title: " OK " , style: . default, handler: nil )
0 commit comments