GeneralSettingsViewController.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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. override func viewDidLoad() {
  14. super.viewDidLoad()
  15. if UserDefaultsRepository.forceDarkMode.value {
  16. overrideUserInterfaceStyle = .dark
  17. }
  18. buildGeneralSettings()
  19. }
  20. private func buildGeneralSettings() {
  21. form
  22. +++ Section("General Settings")
  23. <<< SwitchRow("colorBGText") { row in
  24. row.title = "Color Main BG Text"
  25. row.value = UserDefaultsRepository.colorBGText.value
  26. }.onChange { [weak self] row in
  27. guard let value = row.value else { return }
  28. UserDefaultsRepository.colorBGText.value = value
  29. // Force main screen update
  30. guard let mainScreen = self?.tabBarController!.viewControllers?[0] as? MainViewController else { return }
  31. mainScreen.setBGTextColor()
  32. }
  33. <<< SwitchRow("forceDarkMode") { row in
  34. row.title = "Force Dark Mode (Restart App)"
  35. row.value = UserDefaultsRepository.forceDarkMode.value
  36. }.onChange { [weak self] row in
  37. guard let value = row.value else { return }
  38. UserDefaultsRepository.forceDarkMode.value = value
  39. }
  40. <<< SwitchRow("persistentNotification") { row in
  41. row.title = "Persistent Notification"
  42. row.value = UserDefaultsRepository.persistentNotification.value
  43. }.onChange { [weak self] row in
  44. guard let value = row.value else { return }
  45. UserDefaultsRepository.persistentNotification.value = value
  46. }
  47. <<< SwitchRow("screenlockSwitchState") { row in
  48. row.title = "Keep Screen Active"
  49. row.value = UserDefaultsRepository.screenlockSwitchState.value
  50. }.onChange { [weak self] row in
  51. guard let value = row.value else { return }
  52. if value {
  53. UserDefaultsRepository.screenlockSwitchState.value = value
  54. }
  55. }
  56. <<< SwitchRow("backgroundRefresh"){ row in
  57. row.title = "Background Refresh"
  58. row.tag = "backgroundRefresh"
  59. row.value = UserDefaultsRepository.backgroundRefresh.value
  60. }.onChange { [weak self] row in
  61. guard let value = row.value else { return }
  62. UserDefaultsRepository.backgroundRefresh.value = value
  63. }
  64. <<< StepperRow("backgroundRefreshFrequency") { row in
  65. row.title = "Refresh Minutes"
  66. row.tag = "backgroundRefreshFrequency"
  67. row.cell.stepper.stepValue = 0.25
  68. row.cell.stepper.minimumValue = 0.25
  69. row.cell.stepper.maximumValue = 10
  70. row.value = Double(UserDefaultsRepository.backgroundRefreshFrequency.value)
  71. row.hidden = "$backgroundRefresh == false"
  72. }.onChange { [weak self] row in
  73. guard let value = row.value else { return }
  74. UserDefaultsRepository.backgroundRefreshFrequency.value = value
  75. }
  76. <<< SwitchRow("appBadge"){ row in
  77. row.title = "Display App Badge"
  78. row.tag = "appBadge"
  79. row.value = UserDefaultsRepository.appBadge.value
  80. }.onChange { [weak self] row in
  81. guard let value = row.value else { return }
  82. UserDefaultsRepository.appBadge.value = value
  83. // Force main screen update
  84. guard let mainScreen = self?.tabBarController!.viewControllers?[0] as? MainViewController else { return }
  85. mainScreen.nightscoutLoader(forceLoad: true)
  86. }
  87. <<< SwitchRow("speakBG"){ row in
  88. row.title = "Speak BG"
  89. row.value = UserDefaultsRepository.speakBG.value
  90. }.onChange { [weak self] row in
  91. guard let value = row.value else { return }
  92. UserDefaultsRepository.speakBG.value = value
  93. }
  94. +++ ButtonRow() {
  95. $0.title = "DONE"
  96. }.onCellSelection { (row, arg) in
  97. self.dismiss(animated:true, completion: nil)
  98. }
  99. }
  100. }