SettingsViewController.swift 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // SettingsViewController.swift
  3. // LoopFollow
  4. //
  5. // Created by Jon Fawcett on 6/3/20.
  6. // Copyright © 2020 Jon Fawcett. All rights reserved.
  7. //
  8. import UIKit
  9. import Eureka
  10. class SettingsViewController: FormViewController {
  11. override func viewDidLoad() {
  12. super.viewDidLoad()
  13. form +++ Section("Nightscout Settings")
  14. <<< TextRow(){ row in
  15. row.title = "URL"
  16. row.placeholder = "https://mycgm.herokuapp.com"
  17. row.value = UserDefaultsRepository.url.value
  18. }.onChange { row in
  19. guard let value = row.value else { return }
  20. UserDefaultsRepository.url.value = value.lowercased()
  21. }
  22. +++ Section("General Settings")
  23. <<< SwitchRow("backgroundRefresh"){ row in
  24. row.title = "Background Refresh"
  25. row.tag = "backgroundRefresh"
  26. row.value = UserDefaultsRepository.backgroundRefresh.value
  27. }.onChange { [weak self] row in
  28. guard let value = row.value else { return }
  29. UserDefaultsRepository.backgroundRefresh.value = value
  30. }
  31. <<< SliderRow() { row in
  32. row.title = "Refresh Minutes"
  33. row.tag = "backgroundRefreshFrequency"
  34. row.steps = 19
  35. row.value = Float(UserDefaultsRepository.backgroundRefreshFrequency.value)
  36. row.hidden = "$backgroundRefresh == false"
  37. }.cellSetup { cell, row in
  38. cell.slider.minimumValue = 0.5
  39. cell.slider.maximumValue = 10
  40. }
  41. <<< SwitchRow("appBadge"){ row in
  42. row.title = "Display App Badge"
  43. row.tag = "appBadge"
  44. row.value = UserDefaultsRepository.appBadge.value
  45. }.onChange { [weak self] row in
  46. guard let value = row.value else { return }
  47. UserDefaultsRepository.appBadge.value = value
  48. }
  49. +++ Section("Graph Settings")
  50. <<< SwitchRow("switchRowDots"){ row in
  51. row.title = "Display Dots"
  52. row.value = UserDefaultsRepository.showDots.value
  53. }.onChange { [weak self] row in
  54. guard let value = row.value else { return }
  55. UserDefaultsRepository.showDots.value = value
  56. }
  57. <<< SwitchRow("switchRowLines"){ row in
  58. row.title = "Display Lines"
  59. row.value = UserDefaultsRepository.showLines.value
  60. }.onChange { [weak self] row in
  61. guard let value = row.value else { return }
  62. UserDefaultsRepository.showLines.value = value
  63. }
  64. <<< StepperRow("lowLine") { row in
  65. row.title = "Low Line Value"
  66. row.cell.stepper.stepValue = 1
  67. row.cell.stepper.minimumValue = 150
  68. row.cell.stepper.maximumValue = 400
  69. row.value = Double(UserDefaultsRepository.lowLine.value)
  70. row.displayValueFor = { value in
  71. guard let value = value else { return nil }
  72. return "\(Int(value))"
  73. }
  74. }.onChange { [weak self] row in
  75. guard let value = row.value else { return }
  76. UserDefaultsRepository.lowLine.value = Int(value)
  77. }
  78. <<< StepperRow("highLine") { row in
  79. row.title = "High Line Value"
  80. row.cell.stepper.stepValue = 1
  81. row.cell.stepper.minimumValue = 150
  82. row.cell.stepper.maximumValue = 400
  83. row.value = Double(UserDefaultsRepository.highLine.value)
  84. row.displayValueFor = { value in
  85. guard let value = value else { return nil }
  86. return "\(Int(value))"
  87. }
  88. }.onChange { [weak self] row in
  89. guard let value = row.value else { return }
  90. UserDefaultsRepository.highLine.value = Int(value)
  91. }
  92. }
  93. }