Просмотр исходного кода

Update AppState to force redraw on graph settings changes

Ostap Korkuna 4 лет назад
Родитель
Сommit
22a3226794

+ 2 - 0
LoopFollow/Controllers/AppStateController.swift

@@ -28,6 +28,8 @@ enum ChartSettingsChangeEnum: Int {
   case lowLineChanged = 512
   case lowLineChanged = 512
   case highLineChanged = 1024
   case highLineChanged = 1024
   case smallGraphHeight = 2048
   case smallGraphHeight = 2048
+  case showDIALinesChanged = 4096
+  case showMidnightLinesChanged = 8192
 }
 }
 
 
 // General Settings Flags
 // General Settings Flags

+ 5 - 0
LoopFollow/Controllers/Graphs.swift

@@ -423,6 +423,11 @@ extension MainViewController {
         ul.limit = Double(UserDefaultsRepository.highLine.value)
         ul.limit = Double(UserDefaultsRepository.highLine.value)
         ul.lineColor = NSUIColor.systemYellow.withAlphaComponent(0.5)
         ul.lineColor = NSUIColor.systemYellow.withAlphaComponent(0.5)
         BGChart.rightAxis.addLimitLine(ul)
         BGChart.rightAxis.addLimitLine(ul)
+        
+        // Re-create vertical markers in case their settings changed
+        BGChart.xAxis.removeAllLimitLines()
+        createNowAndDIALines()
+        createMidnightLines()
     
     
         BGChart.data?.dataSets[dataIndex].notifyDataSetChanged()
         BGChart.data?.dataSets[dataIndex].notifyDataSetChanged()
         BGChart.data?.notifyDataChanged()
         BGChart.data?.notifyDataChanged()

+ 10 - 0
LoopFollow/ViewControllers/GraphSettingsViewController.swift

@@ -116,6 +116,11 @@ class GraphSettingsViewController: FormViewController {
                         guard let value = row.value else { return }
                         guard let value = row.value else { return }
                         UserDefaultsRepository.showDIALines.value = value
                         UserDefaultsRepository.showDIALines.value = value
                         
                         
+                // tell main screen that graph needs updating
+                if let appState = self!.appStateController {
+                   appState.chartSettingsChanged = true
+                   appState.chartSettingsChanges |= ChartSettingsChangeEnum.showDIALinesChanged.rawValue
+                }
             }
             }
             <<< SwitchRow("smallGraphTreatments"){ row in
             <<< SwitchRow("smallGraphTreatments"){ row in
                 row.title = "Treatments on Small Graph"
                 row.title = "Treatments on Small Graph"
@@ -249,6 +254,11 @@ class GraphSettingsViewController: FormViewController {
                     guard let value = row.value else { return }
                     guard let value = row.value else { return }
                     UserDefaultsRepository.showMidnightLines.value = value
                     UserDefaultsRepository.showMidnightLines.value = value
                     
                     
+            // tell main screen that graph needs updating
+            if let appState = self!.appStateController {
+               appState.chartSettingsChanged = true
+               appState.chartSettingsChanges |= ChartSettingsChangeEnum.showMidnightLinesChanged.rawValue
+            }
         }
         }