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

Reduce clutter.
Make more roome in Carbs View (needs more work). Button removed.
Move some of settings to UI/UX Section.

Jon Mårtensson 2 лет назад
Родитель
Сommit
04ed9f6c7f

+ 2 - 2
FreeAPS/Sources/Modules/AddCarbs/AddCarbsStateModel.swift

@@ -12,7 +12,7 @@ extension AddCarbs {
         @Published var protein: Decimal = 0
         @Published var fat: Decimal = 0
         @Published var carbsRequired: Decimal?
-        @Published var useFPUconversion: Bool = true
+        @Published var useFPUconversion: Bool = false
         @Published var dish: String = ""
         @Published var selection: Presets?
         @Published var summation: [String] = []
@@ -25,10 +25,10 @@ extension AddCarbs {
         let coredataContext = CoreDataStack.shared.persistentContainer.viewContext
 
         override func subscribe() {
-            subscribeSetting(\.useFPUconversion, on: $useFPUconversion) { useFPUconversion = $0 }
             carbsRequired = provider.suggestion?.carbsReq
             maxCarbs = settings.settings.maxCarbs
             skipBolus = settingsManager.settings.skipBolusScreenAfterCarbs
+            useFPUconversion = settingsManager.settings.useFPUconversion
         }
 
         func add() {

+ 91 - 118
FreeAPS/Sources/Modules/AddCarbs/View/AddCarbsRootView.swift

@@ -63,58 +63,13 @@ extension AddCarbs {
                                 .controlSize(.mini)
                         }
                     }.focused($isFocused)
-                    HStack {
-                        Button {
-                            state.useFPUconversion.toggle()
+                        .popover(isPresented: $isPromptPresented) {
+                            presetPopover
                         }
-                        label: {
-                            Text(
-                                state
-                                    .useFPUconversion ? NSLocalizedString("Hide Fat & Protein", comment: "") :
-                                    NSLocalizedString("Fat & Protein", comment: "")
-                            ) }
-                            .controlSize(.mini)
-                            .buttonStyle(BorderlessButtonStyle())
-                        Button {
-                            isPromptPresented = true
-                        }
-                        label: { Text("Save as Preset") }
-                            .frame(maxWidth: .infinity, alignment: .trailing)
-                            .controlSize(.mini)
-                            .buttonStyle(BorderlessButtonStyle())
-                            .foregroundColor(
-                                (state.carbs <= 0 && state.fat <= 0 && state.protein <= 0) ||
-                                    (
-                                        (((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal) == state
-                                            .carbs && (((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal) == state
-                                            .fat && (((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal) ==
-                                            state
-                                            .protein
-                                    ) ? .secondary : .orange
-                            )
-                            .disabled(
-                                (state.carbs <= 0 && state.fat <= 0 && state.protein <= 0) ||
-                                    (
-                                        (((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal) == state
-                                            .carbs && (((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal) == state
-                                            .fat && (((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal) == state
-                                            .protein
-                                    )
-                            )
-                    }
-                    .popover(isPresented: $isPromptPresented) {
-                        presetPopover
-                    }
-                }
-
-                if state.useFPUconversion {
-                    Section {
-                        mealPresets
-                    }
                 }
 
                 Section {
-                    DatePicker("Date", selection: $state.date)
+                    mealPresets
                 }
 
                 Section {
@@ -124,10 +79,8 @@ extension AddCarbs {
                         .frame(maxWidth: .infinity, alignment: .center)
                 } footer: { Text(state.waitersNotepad().description) }
 
-                if !state.useFPUconversion {
-                    Section {
-                        mealPresets
-                    }
+                Section {
+                    DatePicker("Change Date", selection: $state.date)
                 }
             }
             .onAppear {
@@ -135,7 +88,7 @@ extension AddCarbs {
                     state.loadEntries(editMode)
                 }
             }
-            .navigationTitle("Add Meals")
+            .navigationTitle("Add Meal")
             .navigationBarTitleDisplayMode(.inline)
             .navigationBarItems(leading: Button("Close", action: state.hideModal))
         }
@@ -170,14 +123,30 @@ extension AddCarbs {
 
         var mealPresets: some View {
             Section {
-                VStack {
-                    Picker("Meal Presets", selection: $state.selection) {
-                        Text("Empty").tag(nil as Presets?)
+                HStack {
+                    Button {
+                        isPromptPresented = true
+                    }
+                    label: { Text("Save as Preset") }
+                        .buttonStyle(BorderlessButtonStyle())
+                        .disabled(
+                            (state.carbs <= 0 && state.fat <= 0 && state.protein <= 0) ||
+                                (
+                                    (((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal) == state
+                                        .carbs && (((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal) == state
+                                        .fat && (((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal) == state
+                                        .protein
+                                )
+                        )
+
+                    Picker("Select a Preset", selection: $state.selection) {
+                        Text("Presets").tag(nil as Presets?)
                         ForEach(carbPresets, id: \.self) { (preset: Presets) in
                             Text(preset.dish ?? "").tag(preset as Presets?)
                         }
                     }
-                    .pickerStyle(.automatic)
+                    .labelsHidden()
+                    .frame(maxWidth: .infinity, alignment: .trailing)
                     ._onBindingChange($state.selection) { _ in
                         state.carbs += ((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal
                         state.fat += ((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal
@@ -185,80 +154,84 @@ extension AddCarbs {
                         state.addToSummation()
                     }
                 }
-                HStack {
-                    Button("Delete Preset") {
-                        showAlert.toggle()
-                    }
-                    .disabled(state.selection == nil)
-                    .accentColor(.orange)
-                    .buttonStyle(BorderlessButtonStyle())
-                    .alert(
-                        "Delete preset '\(state.selection?.dish ?? "")'?",
-                        isPresented: $showAlert,
-                        actions: {
-                            Button("No", role: .cancel) {}
-                            Button("Yes", role: .destructive) {
-                                state.deletePreset()
 
-                                state.carbs += ((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal
-                                state.fat += ((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal
-                                state.protein += ((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal
+                if state.selection != nil {
+                    HStack {
+                        Button("Delete Preset") {
+                            showAlert.toggle()
+                        }
+                        .disabled(state.selection == nil)
+                        .tint(.orange)
+                        .buttonStyle(BorderlessButtonStyle())
+                        .alert(
+                            "Delete preset '\(state.selection?.dish ?? "")'?",
+                            isPresented: $showAlert,
+                            actions: {
+                                Button("No", role: .cancel) {}
+                                Button("Yes", role: .destructive) {
+                                    state.deletePreset()
 
-                                state.addPresetToNewMeal()
+                                    state.carbs += ((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal
+                                    state.fat += ((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal
+                                    state.protein += ((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal
+
+                                    state.addPresetToNewMeal()
+                                }
                             }
-                        }
-                    )
-                    Button {
-                        if state.carbs != 0,
-                           (state.carbs - (((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal) as Decimal) >= 0
-                        {
-                            state.carbs -= (((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal)
-                        } else { state.carbs = 0 }
+                        )
+                        Button {
+                            if state.carbs != 0,
+                               (state.carbs - (((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal) as Decimal) >= 0
+                            {
+                                state.carbs -= (((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal)
+                            } else { state.carbs = 0 }
 
-                        if state.fat != 0,
-                           (state.fat - (((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal) as Decimal) >= 0
-                        {
-                            state.fat -= (((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal)
-                        } else { state.fat = 0 }
+                            if state.fat != 0,
+                               (state.fat - (((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal) as Decimal) >= 0
+                            {
+                                state.fat -= (((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal)
+                            } else { state.fat = 0 }
 
-                        if state.protein != 0,
-                           (state.protein - (((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal) as Decimal) >= 0
-                        {
-                            state.protein -= (((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal)
-                        } else { state.protein = 0 }
+                            if state.protein != 0,
+                               (state.protein - (((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal) as Decimal) >= 0
+                            {
+                                state.protein -= (((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal)
+                            } else { state.protein = 0 }
 
-                        state.removePresetFromNewMeal()
-                        if state.carbs == 0, state.fat == 0, state.protein == 0 { state.summation = [] }
-                    }
-                    label: { Text("[ -1 ]") }
-                        .disabled(
-                            state
-                                .selection == nil ||
-                                (
-                                    !state.summation.contains(state.selection?.dish ?? "") && (state.selection?.dish ?? "") != ""
-                                )
-                        )
-                        .buttonStyle(BorderlessButtonStyle())
-                        .frame(maxWidth: .infinity, alignment: .trailing)
-                        .accentColor(.minus)
-                    Button {
-                        state.carbs += ((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal
-                        state.fat += ((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal
-                        state.protein += ((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal
+                            state.removePresetFromNewMeal()
+                            if state.carbs == 0, state.fat == 0, state.protein == 0 { state.summation = [] }
+                        }
+                        label: { Text("[ -1 ]") }
+                            .disabled(
+                                state
+                                    .selection == nil ||
+                                    (
+                                        !state.summation
+                                            .contains(state.selection?.dish ?? "") && (state.selection?.dish ?? "") != ""
+                                    )
+                            )
+                            .buttonStyle(BorderlessButtonStyle())
+                            .frame(maxWidth: .infinity, alignment: .trailing)
+                            .tint(.minus)
+                        Button {
+                            state.carbs += ((state.selection?.carbs ?? 0) as NSDecimalNumber) as Decimal
+                            state.fat += ((state.selection?.fat ?? 0) as NSDecimalNumber) as Decimal
+                            state.protein += ((state.selection?.protein ?? 0) as NSDecimalNumber) as Decimal
 
-                        state.addPresetToNewMeal()
+                            state.addPresetToNewMeal()
+                        }
+                        label: { Text("[ +1 ]") }
+                            .disabled(state.selection == nil)
+                            .buttonStyle(BorderlessButtonStyle())
+                            .tint(.blue)
                     }
-                    label: { Text("[ +1 ]") }
-                        .disabled(state.selection == nil)
-                        .buttonStyle(BorderlessButtonStyle())
-                        .accentColor(.blue)
                 }
             }
         }
 
         @ViewBuilder private func proteinAndFat() -> some View {
             HStack {
-                Text("Fat").foregroundColor(.orange) // .fontWeight(.thin)
+                Text("Fat").foregroundColor(.orange)
                 Spacer()
                 DecimalTextField(
                     "0",
@@ -270,7 +243,7 @@ extension AddCarbs {
                 Text("grams").foregroundColor(.secondary)
             }
             HStack {
-                Text("Protein").foregroundColor(.red) // .fontWeight(.thin)
+                Text("Protein").foregroundColor(.red)
                 Spacer()
                 DecimalTextField(
                     "0",

+ 0 - 1
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift

@@ -15,7 +15,6 @@ extension PreferencesEditor {
             useAlternativeBolusCalc = settingsManager.settings.useCalc
             subscribeSetting(\.allowAnnouncements, on: $allowAnnouncements) { allowAnnouncements = $0 }
             subscribeSetting(\.insulinReqPercentage, on: $insulinReqPercentage) { insulinReqPercentage = $0 }
-            subscribeSetting(\.skipBolusScreenAfterCarbs, on: $skipBolusScreenAfterCarbs) { skipBolusScreenAfterCarbs = $0 }
 
             subscribeSetting(\.units, on: $unitsIndex.map { $0 == 0 ? GlucoseUnits.mgdL : .mmolL }) {
                 unitsIndex = $0 == .mgdL ? 0 : 1

+ 0 - 2
FreeAPS/Sources/Modules/PreferencesEditor/View/PreferencesEditorRootView.swift

@@ -36,8 +36,6 @@ extension PreferencesEditor {
                             DecimalTextField("", value: $state.insulinReqPercentage, formatter: formatter)
                         }
                     }
-
-                    Toggle("Skip Bolus screen after carbs", isOn: $state.skipBolusScreenAfterCarbs)
                 }
 
                 ForEach(state.sections.indexed(), id: \.1.id) { sectionIndex, section in

+ 1 - 1
FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift

@@ -32,7 +32,7 @@ extension Settings {
                     Text("Notifications").navigationLink(to: .notificationsConfig, from: self)
                     Text("Fat And Protein Conversion").navigationLink(to: .fpuConfig, from: self)
                     Text("App Icons").navigationLink(to: .iconConfig, from: self)
-                    Text("Statistics and Home View").navigationLink(to: .statisticsConfig, from: self)
+                    Text("UI/UX Settings").navigationLink(to: .statisticsConfig, from: self)
                 }
 
                 Section(header: Text("Configuration")) {

+ 4 - 1
FreeAPS/Sources/Modules/StatConfig/StatConfigStateModel.swift

@@ -10,6 +10,8 @@ extension StatConfig {
         @Published var yGridLines: Bool = false
         @Published var oneDimensionalGraph = false
         @Published var rulerMarks: Bool = false
+        @Published var skipBolusScreenAfterCarbs: Bool = false
+        @Published var useFPUconversion: Bool = true
 
         var units: GlucoseUnits = .mmolL
 
@@ -21,7 +23,8 @@ extension StatConfig {
             subscribeSetting(\.xGridLines, on: $xGridLines) { xGridLines = $0 }
             subscribeSetting(\.yGridLines, on: $yGridLines) { yGridLines = $0 }
             subscribeSetting(\.rulerMarks, on: $rulerMarks) { rulerMarks = $0 }
-            subscribeSetting(\.oneDimensionalGraph, on: $oneDimensionalGraph) { oneDimensionalGraph = $0 }
+            subscribeSetting(\.useFPUconversion, on: $useFPUconversion) { useFPUconversion = $0 }
+            subscribeSetting(\.skipBolusScreenAfterCarbs, on: $skipBolusScreenAfterCarbs) { skipBolusScreenAfterCarbs = $0 }
 
             subscribeSetting(\.low, on: $low, initial: {
                 let value = max(min($0, 90), 40)

+ 12 - 6
FreeAPS/Sources/Modules/StatConfig/View/StatConfigRootView.swift

@@ -26,37 +26,43 @@ extension StatConfig {
 
         var body: some View {
             Form {
-                Section(header: Text("Settings")) {
-                    Toggle("Change HbA1c Unit", isOn: $state.overrideHbA1cUnit)
+                Section {
                     Toggle("Display Chart X - Grid lines", isOn: $state.xGridLines)
                     Toggle("Display Chart Y - Grid lines", isOn: $state.yGridLines)
                     Toggle("Display Chart Threshold lines for Low and High", isOn: $state.rulerMarks)
                     Toggle("Standing / Laying TIR Chart", isOn: $state.oneDimensionalGraph)
-
                     HStack {
                         Text("Hours X-Axis (6 default)")
                         Spacer()
                         DecimalTextField("6", value: $state.hours, formatter: carbsFormatter)
                         Text("hours").foregroundColor(.secondary)
                     }
+                } header: { Text("Home Chart settings ") }
 
+                Section {
                     HStack {
                         Text("Low")
                         Spacer()
                         DecimalTextField("0", value: $state.low, formatter: glucoseFormatter)
                         Text(state.units.rawValue).foregroundColor(.secondary)
                     }
-
                     HStack {
                         Text("High")
                         Spacer()
                         DecimalTextField("0", value: $state.high, formatter: glucoseFormatter)
                         Text(state.units.rawValue).foregroundColor(.secondary)
                     }
-                }
+                    Toggle("Change HbA1c Unit", isOn: $state.overrideHbA1cUnit)
+
+                } header: { Text("Statistics settings ") }
+
+                Section {
+                    Toggle("Skip Bolus screen after carbs", isOn: $state.skipBolusScreenAfterCarbs)
+                    Toggle("Display and allow Fat and Protein entries", isOn: $state.useFPUconversion)
+                } header: { Text("Add Meal View settings ") }
             }
             .onAppear(perform: configureView)
-            .navigationBarTitle("Statistics")
+            .navigationBarTitle("UI/UX Settings")
             .navigationBarTitleDisplayMode(.automatic)
         }
     }