Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 11 additions & 10 deletions LoopFollow/Controllers/AppStateController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,20 @@ enum ChartSettingsChangeEnum: Int {

// General Settings Flags
enum GeneralSettingsChangeEnum: Int {
case colorBGTextChange = 1
case speakBGChange = 2
case backgroundRefreshFrequencyChange = 4
case backgroundRefreshChange = 8
case appBadgeChange = 16
case dimScreenWhenIdleChange = 32
case forceDarkModeChang = 64
case persistentNotificationChange = 128
case persistentNotificationLastBGTimeChange = 256
case screenlockSwitchStateChange = 512
case colorBGTextChange = 1
case speakBGChange = 2
case backgroundRefreshFrequencyChange = 4
case backgroundRefreshChange = 8
case appBadgeChange = 16
case dimScreenWhenIdleChange = 32
case forceDarkModeChang = 64
case persistentNotificationChange = 128
case persistentNotificationLastBGTimeChange = 256
case screenlockSwitchStateChange = 512
case showStatsChange = 1024
case showSmallGraphChange = 2048
case useIFCCChange = 4096
case showDisplayNameChange = 8192
}

class AppStateController {
Expand Down
10 changes: 9 additions & 1 deletion LoopFollow/Controllers/Nightscout/BGData.swift
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,14 @@ extension MainViewController {
viewUpdateNSBG(sourceName: sourceName)
}

func updateServerText(with serverText: String? = nil) {
if UserDefaultsRepository.showDisplayName.value, let displayName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String {
self.serverText.text = displayName
} else if let serverText = serverText {
self.serverText.text = serverText
}
}

// NS BG Data Front end updater
func viewUpdateNSBG (sourceName: String) {
DispatchQueue.main.async {
Expand All @@ -229,7 +237,7 @@ extension MainViewController {
userUnit = " mmol/L"
}

self.serverText.text = sourceName
self.updateServerText(with: sourceName)

var snoozerBG = ""
var snoozerDirection = ""
Expand Down
15 changes: 14 additions & 1 deletion LoopFollow/ViewControllers/GeneralSettingsViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,20 @@ class GeneralSettingsViewController: FormViewController {
NotificationCenter.default.post(name: Notification.Name("toggleSpeakBG"), object: nil)
}

+++ ButtonRow() {
<<< SwitchRow("showDisplayName") { row in
row.title = "Show Display Name"
row.value = UserDefaultsRepository.showDisplayName.value
}.onChange { [weak self] row in
guard let value = row.value else { return }
UserDefaultsRepository.showDisplayName.value = value

if let appState = self!.appStateController {
appState.generalSettingsChanged = true
appState.generalSettingsChanges |= GeneralSettingsChangeEnum.showDisplayNameChange.rawValue
}
}

+++ ButtonRow() {
$0.title = "DONE"
}.onCellSelection { (row, arg) in
self.dismiss(animated:true, completion: nil)
Expand Down
106 changes: 55 additions & 51 deletions LoopFollow/ViewControllers/MainViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -296,61 +296,65 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
// check the app state
// TODO: move to a function ?
if let appState = self.appStateController {

if appState.chartSettingsChanged {

// can look at settings flags to be more fine tuned
self.updateBGGraphSettings()

if ChartSettingsChangeEnum.smallGraphHeight.rawValue != 0 {
smallGraphHeightConstraint.constant = CGFloat(UserDefaultsRepository.smallGraphHeight.value)
self.view.layoutIfNeeded()
}

// reset the app state
appState.chartSettingsChanged = false
appState.chartSettingsChanges = 0
}
if appState.generalSettingsChanged {

// settings for appBadge changed
if appState.generalSettingsChanges & GeneralSettingsChangeEnum.appBadgeChange.rawValue != 0 {

}

// settings for textcolor changed
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
if appState.chartSettingsChanged {

// can look at settings flags to be more fine tuned
self.updateBGGraphSettings()

if ChartSettingsChangeEnum.smallGraphHeight.rawValue != 0 {
smallGraphHeightConstraint.constant = CGFloat(UserDefaultsRepository.smallGraphHeight.value)
self.view.layoutIfNeeded()
}

// reset the app state
appState.chartSettingsChanged = false
appState.chartSettingsChanges = 0
}

// settings for useIFCC changed
if appState.generalSettingsChanges & GeneralSettingsChangeEnum.useIFCCChange.rawValue != 0 {
updateStats()
if appState.generalSettingsChanged {

// settings for appBadge changed
if appState.generalSettingsChanges & GeneralSettingsChangeEnum.appBadgeChange.rawValue != 0 {

}

// settings for textcolor changed
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 useIFCC changed
if appState.generalSettingsChanges & GeneralSettingsChangeEnum.useIFCCChange.rawValue != 0 {
updateStats()
}

// settings for showSmallGraph changed
if appState.generalSettingsChanges & GeneralSettingsChangeEnum.showSmallGraphChange.rawValue != 0 {
BGChartFull.isHidden = !UserDefaultsRepository.showSmallGraph.value
}

if appState.generalSettingsChanges & GeneralSettingsChangeEnum.showDisplayNameChange.rawValue != 0 {
self.updateServerText()
}

// reset the app state
appState.generalSettingsChanged = false
appState.generalSettingsChanges = 0
}

// settings for showSmallGraph changed
if appState.generalSettingsChanges & GeneralSettingsChangeEnum.showSmallGraphChange.rawValue != 0 {
BGChartFull.isHidden = !UserDefaultsRepository.showSmallGraph.value
if appState.infoDataSettingsChanged {
createDerivedData()
self.infoTable.reloadData()

// reset
appState.infoDataSettingsChanged = false
}

// reset the app state
appState.generalSettingsChanged = false
appState.generalSettingsChanges = 0
}
if appState.infoDataSettingsChanged {
createDerivedData()
self.infoTable.reloadData()

// reset
appState.infoDataSettingsChanged = false
}

// add more processing of the app state

// add more processing of the app state
}
}

Expand Down
1 change: 1 addition & 0 deletions LoopFollow/repository/UserDefaults.swift
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ class UserDefaultsRepository {
static let useIFCC = UserDefaultsValue<Bool>(key: "useIFCC", default: false)
static let showSmallGraph = UserDefaultsValue<Bool>(key: "showSmallGraph", default: true)
static let speakBG = UserDefaultsValue<Bool>(key: "speakBG", default: false)
static let showDisplayName = UserDefaultsValue<Bool>(key: "showDisplayName", default: false)
static let backgroundRefreshFrequency = UserDefaultsValue<Double>(key: "backgroundRefreshFrequency", default: 1)
static let backgroundRefresh = UserDefaultsValue<Bool>(key: "backgroundRefresh", default: true)
static let appBadge = UserDefaultsValue<Bool>(key: "appBadge", default: true)
Expand Down