Просмотр исходного кода

Extend CGM calendar settings with toggles for IOB, COB, emoji display; extend calender entry logic

dnzxy 2 лет назад
Родитель
Сommit
12711c0e96

+ 10 - 0
FreeAPS/Sources/Models/FreeAPSSettings.swift

@@ -15,6 +15,8 @@ struct FreeAPSSettings: JSON, Equatable {
     var cgm: CGMType = .nightscout
     var uploadGlucose: Bool = true
     var useCalendar: Bool = false
+    var displayCalendarIOBandCOB: Bool = false
+    var displayCalendarEmojis: Bool = false
     var glucoseBadge: Bool = false
     var glucoseNotificationsAlways: Bool = false
     var useAlarmSound: Bool = false
@@ -113,6 +115,14 @@ extension FreeAPSSettings: Decodable {
             settings.useCalendar = useCalendar
         }
 
+        if let displayCalendarIOBandCOB = try? container.decode(Bool.self, forKey: .displayCalendarIOBandCOB) {
+            settings.displayCalendarIOBandCOB = displayCalendarIOBandCOB
+        }
+
+        if let displayCalendarEmojis = try? container.decode(Bool.self, forKey: .displayCalendarEmojis) {
+            settings.displayCalendarEmojis = displayCalendarEmojis
+        }
+
         if let useAppleHealth = try? container.decode(Bool.self, forKey: .useAppleHealth) {
             settings.useAppleHealth = useAppleHealth
         }

+ 4 - 0
FreeAPS/Sources/Modules/CGM/CGMStateModel.swift

@@ -16,6 +16,8 @@ extension CGM {
         @Published var uploadGlucose = true
         @Published var smoothGlucose = false
         @Published var createCalendarEvents = false
+        @Published var displayCalendarIOBandCOB = false
+        @Published var displayCalendarEmojis = false
         @Published var calendarIDs: [String] = []
         @Published var currentCalendarID: String = ""
         @Persisted(key: "CalendarManager.currentCalendarID") var storedCalendarID: String? = nil
@@ -28,6 +30,8 @@ extension CGM {
             cgmTransmitterDeviceAddress = UserDefaults.standard.cgmTransmitterDeviceAddress
 
             subscribeSetting(\.useCalendar, on: $createCalendarEvents) { createCalendarEvents = $0 }
+            subscribeSetting(\.displayCalendarIOBandCOB, on: $displayCalendarIOBandCOB) { displayCalendarIOBandCOB = $0 }
+            subscribeSetting(\.displayCalendarEmojis, on: $displayCalendarEmojis) { displayCalendarEmojis = $0 }
             subscribeSetting(\.smoothGlucose, on: $smoothGlucose, initial: { smoothGlucose = $0 })
 
             $cgm

+ 4 - 0
FreeAPS/Sources/Modules/CGM/View/CGMRootView.swift

@@ -61,6 +61,10 @@ extension CGM {
                                     Text($0).tag($0)
                                 }
                             }
+                            Toggle("Display IOB and COB", isOn: $state.displayCalendarIOBandCOB)
+                            if state.displayCalendarIOBandCOB {
+                                Toggle("Display Emojis", isOn: $state.displayCalendarEmojis)
+                            }
                         }
                     }
 

+ 22 - 2
FreeAPS/Sources/Services/Calendar/CalendarManager.swift

@@ -63,6 +63,8 @@ final class BaseCalendarManager: CalendarManager, Injectable {
         // create an event now
         let event = EKEvent(eventStore: eventStore)
 
+        let glucoseIcon = "🟢" // TODO: change icon color on BG range
+
         let glucoseText = glucoseFormatter
             .string(from: Double(
                 settingsManager.settings.units == .mmolL ?glucoseValue
@@ -79,9 +81,27 @@ final class BaseCalendarManager: CalendarManager, Injectable {
         let iobText = iobFormatter.string(from: (fetchedSuggestion?.iob ?? 0) as NSNumber) ?? ""
         let cobText = cobFormatter.string(from: (fetchedSuggestion?.cob ?? 0) as NSNumber) ?? ""
 
-        let title = glucoseText + " " + directionText + " " + deltaText + "; IOB: " + iobText + " COB: " + cobText
+        var glucoseDisplayText = settingsManager.settings.displayCalendarEmojis ? glucoseIcon + " " : ""
+        glucoseDisplayText += glucoseText + " " + directionText + " " + deltaText
+        
+        var iobDisplayText = ""
+        var cobDisplayText = ""
+
+        if settingsManager.settings.displayCalendarIOBandCOB {
+            if settingsManager.settings.displayCalendarEmojis {
+                iobDisplayText += "💉"
+                cobDisplayText += "🍞"
+            } else {
+                iobDisplayText += "IOB:"
+                cobDisplayText += "COB:"
+            }
+            iobDisplayText += " " + iobText
+            cobDisplayText += " " + cobText
+
+            event.location = iobDisplayText + " " + cobDisplayText
+        }
 
-        event.title = title
+        event.title = glucoseDisplayText
         event.notes = "iAPS"
         event.startDate = Date()
         event.endDate = Date(timeIntervalSinceNow: 60 * 10)