فهرست منبع

Add: show/hide Stats and Small Graph

Jon Fawcett 6 سال پیش
والد
کامیت
ec0b6bd27e

+ 2 - 1
LoopFollow/Application/Base.lproj/Main.storyboard

@@ -115,7 +115,7 @@
                                 <rect key="frame" x="8" y="319.33333333333326" width="398" height="309.66666666666674"/>
                                 <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                             </view>
-                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ikj-at-auF">
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ikj-at-auF" userLabel="statsView">
                                 <rect key="frame" x="8" y="705" width="398" height="100"/>
                                 <subviews>
                                     <stackView opaque="NO" contentMode="scaleToFill" ambiguous="YES" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="XsT-6R-Vym">
@@ -301,6 +301,7 @@
                         <outlet property="statsLowPercent" destination="TzL-hn-9qu" id="0QR-Mz-KJe"/>
                         <outlet property="statsPieChart" destination="Hhh-F1-s1p" id="Rhh-Up-Kr0"/>
                         <outlet property="statsStdDev" destination="wAI-Tp-784" id="BUZ-lS-JfA"/>
+                        <outlet property="statsView" destination="ikj-at-auF" id="7AQ-VA-Pw2"/>
                     </connections>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="W5J-7L-Pyd" sceneMemberID="firstResponder"/>

+ 2 - 0
LoopFollow/Controllers/AppStateController.swift

@@ -42,6 +42,8 @@ enum GeneralSettingsChangeEnum: Int {
    case persistentNotificationChange = 128
    case persistentNotificationLastBGTimeChange = 256
    case screenlockSwitchStateChange = 512
+    case showStatsChange = 1024
+    case showSmallGraphChange = 2048
 }
 
 class AppStateController {

+ 84 - 53
LoopFollow/ViewControllers/GeneralSettingsViewController.swift

@@ -26,49 +26,25 @@ class GeneralSettingsViewController: FormViewController {
    
    private func buildGeneralSettings() {
       form
-        +++ Section("General Settings")
-        <<< SwitchRow("colorBGText") { row in
-        row.title = "Color Main BG Text"
-        row.value = UserDefaultsRepository.colorBGText.value
+        +++ Section("App Settings")
+        <<< SwitchRow("appBadge"){ row in
+            row.title = "Display App Badge"
+            row.tag = "appBadge"
+            row.value = UserDefaultsRepository.appBadge.value
         }.onChange { [weak self] row in
-            guard let value = row.value else { return }
-            UserDefaultsRepository.colorBGText.value = value
-            // Force main screen update
-            //guard let mainScreen = self?.tabBarController!.viewControllers?[0] as? MainViewController else { return }
-            //mainScreen.setBGTextColor()
-            
-            // set the appstate to indicate settings change and flags
-            if let appState = self!.appStateController {
+                    guard let value = row.value else { return }
+                    UserDefaultsRepository.appBadge.value = value
+                    // Force main screen update
+                    //guard let mainScreen = self?.tabBarController!.viewControllers?[0] as? MainViewController else { return }
+                    //mainScreen.nightscoutLoader(forceLoad: true)
+                    
+           // set the appstate to indicate settings change and flags
+           if let appState = self!.appStateController {
               appState.generalSettingsChanged = true
-              appState.generalSettingsChanges |= GeneralSettingsChangeEnum.colorBGTextChange.rawValue
+              appState.generalSettingsChanges |= GeneralSettingsChangeEnum.appBadgeChange.rawValue
            }
+           
         }
-        <<< SwitchRow("forceDarkMode") { row in
-        row.title = "Force Dark Mode (Restart App)"
-        row.value = UserDefaultsRepository.forceDarkMode.value
-        }.onChange { [weak self] row in
-            guard let value = row.value else { return }
-            UserDefaultsRepository.forceDarkMode.value = value
-             
-        }
-        <<< SwitchRow("persistentNotification") { row in
-        row.title = "Persistent Notification"
-        row.value = UserDefaultsRepository.persistentNotification.value
-        }.onChange { [weak self] row in
-            guard let value = row.value else { return }
-                UserDefaultsRepository.persistentNotification.value = value
-        }
-        <<< SwitchRow("screenlockSwitchState") { row in
-            row.title = "Keep Screen Active"
-            row.value = UserDefaultsRepository.screenlockSwitchState.value
-            }.onChange { [weak self] row in
-                guard let value = row.value else { return }
-                
-                if value {
-                    UserDefaultsRepository.screenlockSwitchState.value = value
-                }
-            }
-        
         <<< SwitchRow("backgroundRefresh"){ row in
             row.title = "Background Refresh"
             row.tag = "backgroundRefresh"
@@ -89,25 +65,80 @@ class GeneralSettingsViewController: FormViewController {
                 guard let value = row.value else { return }
                 UserDefaultsRepository.backgroundRefreshFrequency.value = value
         }
+        <<< SwitchRow("persistentNotification") { row in
+        row.title = "Persistent Notification"
+        row.value = UserDefaultsRepository.persistentNotification.value
+        }.onChange { [weak self] row in
+            guard let value = row.value else { return }
+                UserDefaultsRepository.persistentNotification.value = value
+        }
+        
+        +++ Section("Display Settings")
+        <<< SwitchRow("forceDarkMode") { row in
+        row.title = "Force Dark Mode (Restart App)"
+        row.value = UserDefaultsRepository.forceDarkMode.value
+        }.onChange { [weak self] row in
+            guard let value = row.value else { return }
+            UserDefaultsRepository.forceDarkMode.value = value
+             
+        }
+        <<< SwitchRow("showStats") { row in
+        row.title = "Display Stats"
+        row.value = UserDefaultsRepository.showStats.value
+        }.onChange { [weak self] row in
+            guard let value = row.value else { return }
+            UserDefaultsRepository.showStats.value = value
             
-        <<< SwitchRow("appBadge"){ row in
-            row.title = "Display App Badge"
-            row.tag = "appBadge"
-            row.value = UserDefaultsRepository.appBadge.value
+             // set the appstate to indicate settings change and flags
+             if let appState = self!.appStateController {
+                appState.generalSettingsChanged = true
+                appState.generalSettingsChanges |= GeneralSettingsChangeEnum.showStatsChange.rawValue
+             }
+        }
+        <<< SwitchRow("showSmallGraph") { row in
+        row.title = "Display Small Graph"
+        row.value = UserDefaultsRepository.showSmallGraph.value
         }.onChange { [weak self] row in
-                    guard let value = row.value else { return }
-                    UserDefaultsRepository.appBadge.value = value
-                    // Force main screen update
-                    //guard let mainScreen = self?.tabBarController!.viewControllers?[0] as? MainViewController else { return }
-                    //mainScreen.nightscoutLoader(forceLoad: true)
-                    
-           // set the appstate to indicate settings change and flags
-           if let appState = self!.appStateController {
+            guard let value = row.value else { return }
+            UserDefaultsRepository.showSmallGraph.value = value
+             
+            // set the appstate to indicate settings change and flags
+            if let appState = self!.appStateController {
+               appState.generalSettingsChanged = true
+               appState.generalSettingsChanges |= GeneralSettingsChangeEnum.showSmallGraphChange.rawValue
+            }
+        }
+        <<< SwitchRow("colorBGText") { row in
+        row.title = "Color Main BG Text"
+        row.value = UserDefaultsRepository.colorBGText.value
+        }.onChange { [weak self] row in
+            guard let value = row.value else { return }
+            UserDefaultsRepository.colorBGText.value = value
+            // Force main screen update
+            //guard let mainScreen = self?.tabBarController!.viewControllers?[0] as? MainViewController else { return }
+            //mainScreen.setBGTextColor()
+            
+            // set the appstate to indicate settings change and flags
+            if let appState = self!.appStateController {
               appState.generalSettingsChanged = true
-              appState.generalSettingsChanges |= GeneralSettingsChangeEnum.appBadgeChange.rawValue
+              appState.generalSettingsChanges |= GeneralSettingsChangeEnum.colorBGTextChange.rawValue
            }
-           
         }
+        
+        <<< SwitchRow("screenlockSwitchState") { row in
+            row.title = "Keep Screen Active"
+            row.value = UserDefaultsRepository.screenlockSwitchState.value
+            }.onChange { [weak self] row in
+                guard let value = row.value else { return }
+                
+                if value {
+                    UserDefaultsRepository.screenlockSwitchState.value = value
+                }
+            }
+        
+        
+            
+        
         <<< SwitchRow("speakBG"){ row in
             row.title = "Speak BG"
             row.value = UserDefaultsRepository.speakBG.value

+ 27 - 4
LoopFollow/ViewControllers/MainViewController.swift

@@ -32,7 +32,8 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     @IBOutlet weak var statsEstA1C: UILabel!
     @IBOutlet weak var statsStdDev: UILabel!
     @IBOutlet weak var serverText: UILabel!
-
+    @IBOutlet weak var statsView: UIView!
+    
       
     // Data Table class
     class infoData {
@@ -120,8 +121,18 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     override func viewDidLoad() {
         super.viewDidLoad()
 
-        
-
+        // reset the infoTable names in case we add or delete items
+        UserDefaultsRepository.infoNames.value.removeAll()
+        UserDefaultsRepository.infoNames.value.append("IOB")
+        UserDefaultsRepository.infoNames.value.append("COB")
+        UserDefaultsRepository.infoNames.value.append("Basal")
+        UserDefaultsRepository.infoNames.value.append("Override")
+        UserDefaultsRepository.infoNames.value.append("Battery")
+        UserDefaultsRepository.infoNames.value.append("Pump")
+        UserDefaultsRepository.infoNames.value.append("SAGE")
+        UserDefaultsRepository.infoNames.value.append("CAGE")
+        UserDefaultsRepository.infoNames.value.append("Rec. Bolus")
+        UserDefaultsRepository.infoNames.value.append("Pred. Min/Max")
  
         // table view
         //infoTable.layer.borderColor = UIColor.darkGray.cgColor
@@ -132,7 +143,6 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
         infoTable.tableFooterView = UIView(frame: .zero) // get rid of extra rows
         infoTable.bounces = false
         infoTable.addBorder(toSide: .Left, withColor: UIColor.darkGray.cgColor, andThickness: 2)
-      
         
         // initialize the tableData
         self.tableData = []
@@ -149,6 +159,9 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
         
         //print("Share: \(dexShare)")
         
+        // setup show/hide small graph and stats
+        BGChartFull.isHidden = !UserDefaultsRepository.showSmallGraph.value
+        statsView.isHidden = !UserDefaultsRepository.showStats.value
         
         BGChart.delegate = self
         BGChartFull.delegate = self
@@ -216,6 +229,16 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
               if appState.generalSettingsChanges & GeneralSettingsChangeEnum.colorBGTextChange.rawValue != 0 {
                  self.setBGTextColor()
               }
+            
+            // settings for showStats changed
+            if appState.generalSettingsChanges & GeneralSettingsChangeEnum.showStatsChange.rawValue != 0 {
+               statsView.isHidden = !UserDefaultsRepository.showStats.value
+            }
+            
+            // settings for showSmallGraph changed
+            if appState.generalSettingsChanges & GeneralSettingsChangeEnum.showSmallGraphChange.rawValue != 0 {
+                BGChartFull.isHidden = !UserDefaultsRepository.showSmallGraph.value
+            }
               
               // reset the app state
               appState.generalSettingsChanged = false

+ 2 - 0
LoopFollow/repository/UserDefaults.swift

@@ -53,6 +53,8 @@ class UserDefaultsRepository {
     
     // General Settings
     static let colorBGText = UserDefaultsValue<Bool>(key: "colorBGText", default: true)
+    static let showStats = UserDefaultsValue<Bool>(key: "showStats", default: true)
+    static let showSmallGraph = UserDefaultsValue<Bool>(key: "showSmallGraph", default: true)
     static let speakBG = UserDefaultsValue<Bool>(key: "speakBG", default: false)
     static let backgroundRefreshFrequency = UserDefaultsValue<Double>(key: "backgroundRefreshFrequency", default: 1)
     static let backgroundRefresh = UserDefaultsValue<Bool>(key: "backgroundRefresh", default: true)