GeneralSettingsViewController.swift 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. //
  2. // GeneralSetingsViewController.swift
  3. // LoopFollow
  4. //
  5. // Created by Jose Paredes on 7/16/20.
  6. // Copyright © 2020 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. import Eureka
  10. import EventKit
  11. import EventKitUI
  12. class GeneralSettingsViewController: FormViewController {
  13. var appStateController: AppStateController?
  14. override func viewDidLoad() {
  15. super.viewDidLoad()
  16. if UserDefaultsRepository.forceDarkMode.value {
  17. overrideUserInterfaceStyle = .dark
  18. }
  19. buildGeneralSettings()
  20. }
  21. private func buildGeneralSettings() {
  22. form
  23. +++ Section("App Settings")
  24. <<< SwitchRow("appBadge"){ row in
  25. row.title = "Display App Badge"
  26. row.tag = "appBadge"
  27. row.value = UserDefaultsRepository.appBadge.value
  28. }.onChange { [weak self] row in
  29. guard let value = row.value else { return }
  30. UserDefaultsRepository.appBadge.value = value
  31. // Force main screen update
  32. //guard let mainScreen = self?.tabBarController!.viewControllers?[0] as? MainViewController else { return }
  33. //mainScreen.nightscoutLoader(forceLoad: true)
  34. // set the appstate to indicate settings change and flags
  35. if let appState = self!.appStateController {
  36. appState.generalSettingsChanged = true
  37. appState.generalSettingsChanges |= GeneralSettingsChangeEnum.appBadgeChange.rawValue
  38. }
  39. }
  40. <<< SwitchRow("backgroundRefresh"){ row in
  41. row.title = "Background Refresh"
  42. row.tag = "backgroundRefresh"
  43. row.value = UserDefaultsRepository.backgroundRefresh.value
  44. }.onChange { [weak self] row in
  45. guard let value = row.value else { return }
  46. UserDefaultsRepository.backgroundRefresh.value = value
  47. }
  48. <<< SwitchRow("persistentNotification") { row in
  49. row.title = "Persistent Notification"
  50. row.value = UserDefaultsRepository.persistentNotification.value
  51. }.onChange { [weak self] row in
  52. guard let value = row.value else { return }
  53. UserDefaultsRepository.persistentNotification.value = value
  54. }
  55. +++ Section("Display Settings")
  56. <<< SwitchRow("forceDarkMode") { row in
  57. row.title = "Force Dark Mode (Restart App)"
  58. row.value = UserDefaultsRepository.forceDarkMode.value
  59. }.onChange { [weak self] row in
  60. guard let value = row.value else { return }
  61. UserDefaultsRepository.forceDarkMode.value = value
  62. }
  63. <<< SwitchRow("showStats") { row in
  64. row.title = "Display Stats"
  65. row.value = UserDefaultsRepository.showStats.value
  66. }.onChange { [weak self] row in
  67. guard let value = row.value else { return }
  68. UserDefaultsRepository.showStats.value = value
  69. // set the appstate to indicate settings change and flags
  70. if let appState = self!.appStateController {
  71. appState.generalSettingsChanged = true
  72. appState.generalSettingsChanges |= GeneralSettingsChangeEnum.showStatsChange.rawValue
  73. }
  74. }
  75. <<< SwitchRow("useIFCC") { row in
  76. row.title = "Use IFCC A1C"
  77. row.value = UserDefaultsRepository.useIFCC.value
  78. }.onChange { [weak self] row in
  79. guard let value = row.value else { return }
  80. UserDefaultsRepository.useIFCC.value = value
  81. // set the appstate to indicate settings change and flags
  82. if let appState = self!.appStateController {
  83. appState.generalSettingsChanged = true
  84. appState.generalSettingsChanges |= GeneralSettingsChangeEnum.useIFCCChange.rawValue
  85. }
  86. }
  87. <<< SwitchRow("showSmallGraph") { row in
  88. row.title = "Display Small Graph"
  89. row.value = UserDefaultsRepository.showSmallGraph.value
  90. }.onChange { [weak self] row in
  91. guard let value = row.value else { return }
  92. UserDefaultsRepository.showSmallGraph.value = value
  93. // set the appstate to indicate settings change and flags
  94. if let appState = self!.appStateController {
  95. appState.generalSettingsChanged = true
  96. appState.generalSettingsChanges |= GeneralSettingsChangeEnum.showSmallGraphChange.rawValue
  97. }
  98. }
  99. <<< SwitchRow("colorBGText") { row in
  100. row.title = "Color Main BG Text"
  101. row.value = UserDefaultsRepository.colorBGText.value
  102. }.onChange { [weak self] row in
  103. guard let value = row.value else { return }
  104. UserDefaultsRepository.colorBGText.value = value
  105. // Force main screen update
  106. //guard let mainScreen = self?.tabBarController!.viewControllers?[0] as? MainViewController else { return }
  107. //mainScreen.setBGTextColor()
  108. // set the appstate to indicate settings change and flags
  109. if let appState = self!.appStateController {
  110. appState.generalSettingsChanged = true
  111. appState.generalSettingsChanges |= GeneralSettingsChangeEnum.colorBGTextChange.rawValue
  112. }
  113. }
  114. <<< SwitchRow("screenlockSwitchState") { row in
  115. row.title = "Keep Screen Active"
  116. row.value = UserDefaultsRepository.screenlockSwitchState.value
  117. }.onChange { [weak self] row in
  118. guard let value = row.value else { return }
  119. UserDefaultsRepository.screenlockSwitchState.value = value
  120. }
  121. <<< SwitchRow("speakBG"){ row in
  122. row.title = "Speak BG"
  123. row.value = UserDefaultsRepository.speakBG.value
  124. }.onChange { [weak self] row in
  125. guard let value = row.value else { return }
  126. UserDefaultsRepository.speakBG.value = value
  127. }
  128. +++ ButtonRow() {
  129. $0.title = "DONE"
  130. }.onCellSelection { (row, arg) in
  131. self.dismiss(animated:true, completion: nil)
  132. }
  133. }
  134. }