Sfoglia il codice sorgente

Hide sticcky stop button; only show for active adjustment

Deniz Cengiz 1 anno fa
parent
commit
5fa6ae9dca

+ 3 - 3
FreeAPS/Sources/Modules/Adjustments/AdjustmentsStateModel+Extensions/AdjustmentsStateModel+Overrides.swift

@@ -12,7 +12,7 @@ extension Adjustments.StateModel {
             overrideToEnact?.enabled = true
             overrideToEnact?.date = Date()
             overrideToEnact?.isUploadedToNS = false
-            isEnabled = true
+            isOverrideEnabled = true
 
             await disableAllActiveOverrides(except: id, createOverrideRunEntry: currentActiveOverride != nil)
             await resetStateVariables()
@@ -201,8 +201,8 @@ extension Adjustments.StateModel {
             let result = try IDs.compactMap { id in
                 try viewContext.existingObject(with: id) as? OverrideStored
             }
-            isEnabled = result.first?.enabled ?? false
-            if !isEnabled {
+            isOverrideEnabled = result.first?.enabled ?? false
+            if !isOverrideEnabled {
                 await resetStateVariables()
             }
         } catch {

+ 1 - 1
FreeAPS/Sources/Modules/Adjustments/AdjustmentsStateModel+Extensions/AdjustmentsStateModel+TempTargets.swift

@@ -25,7 +25,7 @@ extension Adjustments.StateModel {
                 try viewContext.existingObject(with: id) as? TempTargetStored
             }
             isTempTargetEnabled = result.first?.enabled ?? false
-            if !isEnabled {
+            if !isOverrideEnabled {
                 await resetTempTargetState()
             }
         } catch {

+ 1 - 1
FreeAPS/Sources/Modules/Adjustments/AdjustmentsStateModel.swift

@@ -16,7 +16,7 @@ extension Adjustments {
         // MARK: - Override and Temp Target Properties
 
         var overridePercentage: Double = 100
-        var isEnabled = false
+        var isOverrideEnabled = false
         var indefinite = true
         var overrideDuration: Decimal = 0
         var target: Decimal = 0

+ 22 - 56
FreeAPS/Sources/Modules/Adjustments/View/AdjustmentsRootView.swift

@@ -22,6 +22,14 @@ extension Adjustments {
         @State var removeAlert: Alert?
         @State var isEditingTT = false
 
+        private var shouldDisplayStickyOverrideStopButton: Bool {
+            state.isOverrideEnabled && state.activeOverrideName.isNotEmpty
+        }
+
+        private var shouldDisplayStickyTempTargetStopButton: Bool {
+            state.isTempTargetEnabled && state.activeTempTargetName.isNotEmpty
+        }
+
         @Environment(\.colorScheme) var colorScheme
         @Environment(AppState.self) var appState
 
@@ -56,7 +64,18 @@ extension Adjustments {
                     .background(appState.trioBackgroundColor(for: colorScheme))
                 }
                 .listSectionSpacing(10)
-                .safeAreaInset(edge: .bottom, spacing: 30) { stickyStopButton }
+                .safeAreaInset(
+                    edge: .bottom,
+                    spacing: shouldDisplayStickyOverrideStopButton || shouldDisplayStickyTempTargetStopButton ? 30 : 0
+                ) {
+                    if shouldDisplayStickyOverrideStopButton, state.selectedTab == .overrides {
+                        stickyStopOverrideButton
+                    } else if shouldDisplayStickyTempTargetStopButton, state.selectedTab == .tempTargets {
+                        stickyStopTempTargetButton
+                    } else {
+                        EmptyView()
+                    }
+                }
                 .scrollContentBackground(.hidden)
                 .background(appState.trioBackgroundColor(for: colorScheme))
                 .onAppear(perform: configureView)
@@ -201,59 +220,6 @@ extension Adjustments {
             }
         }
 
-        var stickyStopButton: some View {
-            ZStack {
-                Rectangle()
-                    .frame(width: UIScreen.main.bounds.width, height: 65)
-                    .foregroundStyle(colorScheme == .dark ? Color.bgDarkerDarkBlue : Color.white)
-                    .background(.thinMaterial)
-                    .opacity(0.8)
-                    .clipShape(Rectangle())
-
-                Group {
-                    switch state.selectedTab {
-                    case .overrides:
-                        Button(action: {
-                            Task {
-                                // Save cancelled Override in OverrideRunStored Entity
-                                // Cancel ALL active Override
-                                await state.disableAllActiveOverrides(createOverrideRunEntry: true)
-                            }
-                        }, label: {
-                            Text("Stop Override")
-                                .frame(maxWidth: .infinity, maxHeight: .infinity)
-                                .padding(10)
-                        })
-                            .frame(width: UIScreen.main.bounds.width * 0.9, height: 40, alignment: .center)
-                            .disabled(!state.isEnabled)
-                            .background(!state.isEnabled ? Color(.systemGray4) : Color(.systemRed))
-                            .tint(.white)
-                            .clipShape(RoundedRectangle(cornerRadius: 8))
-                    case .tempTargets:
-                        Button(action: {
-                            Task {
-                                // Save cancelled Temp Targets in TempTargetRunStored Entity
-                                // Cancel ALL active Temp Targets
-                                await state.disableAllActiveTempTargets(createTempTargetRunEntry: true)
-                                // Update View
-                                state.updateLatestTempTargetConfiguration()
-                            }
-                        }, label: {
-                            Text("Stop Temp Target")
-                                .frame(maxWidth: .infinity, maxHeight: .infinity)
-                                .padding(10)
-                        })
-                            .frame(width: UIScreen.main.bounds.width * 0.9, height: 40, alignment: .center)
-                            .disabled(!state.isTempTargetEnabled)
-                            .background(!state.isTempTargetEnabled ? Color(.systemGray4) : Color(.systemRed))
-                            .tint(.white)
-                            .clipShape(RoundedRectangle(cornerRadius: 8))
-                    }
-                }
-                .padding(5)
-            }
-        }
-
         var cancelAdjustmentButton: some View {
             switch state.selectedTab {
             case .overrides:
@@ -268,8 +234,8 @@ extension Adjustments {
 
                 })
                     .frame(maxWidth: .infinity, alignment: .center)
-                    .disabled(!state.isEnabled)
-                    .listRowBackground(!state.isEnabled ? Color(.systemGray4) : Color(.systemRed))
+                    .disabled(!state.isOverrideEnabled)
+                    .listRowBackground(!state.isOverrideEnabled ? Color(.systemGray4) : Color(.systemRed))
                     .tint(.white)
             case .tempTargets:
                 Button(action: {

+ 1 - 1
FreeAPS/Sources/Modules/Adjustments/View/Overrides/AddOverrideForm.swift

@@ -398,7 +398,7 @@ struct AddOverrideForm: View {
                     Button(action: {
                         Task {
                             if state.indefinite { state.overrideDuration = 0 }
-                            state.isEnabled.toggle()
+                            state.isOverrideEnabled.toggle()
                             await state.saveCustomOverride()
                             await state.resetStateVariables()
                             dismiss()

+ 31 - 1
FreeAPS/Sources/Modules/Adjustments/View/Overrides/AdjustmentsRootView+Overrides.swift

@@ -3,7 +3,7 @@ import SwiftUI
 
 extension Adjustments.RootView {
     @ViewBuilder func overrides() -> some View {
-        if state.isEnabled, state.activeOverrideName.isNotEmpty {
+        if state.isOverrideEnabled, state.activeOverrideName.isNotEmpty {
             currentActiveAdjustment
         }
         if state.overridePresets.isNotEmpty {
@@ -113,6 +113,36 @@ extension Adjustments.RootView {
             .frame(width: 1, height: 20)
     }
 
+    var stickyStopOverrideButton: some View {
+        ZStack {
+            Rectangle()
+                .frame(width: UIScreen.main.bounds.width, height: 65)
+                .foregroundStyle(colorScheme == .dark ? Color.bgDarkerDarkBlue : Color.white)
+                .background(.thinMaterial)
+                .opacity(0.8)
+                .clipShape(Rectangle())
+
+            Button(action: {
+                Task {
+                    // Save cancelled Override in OverrideRunStored Entity
+                    // Cancel ALL active Override
+                    await state.disableAllActiveOverrides(createOverrideRunEntry: true)
+                }
+            }, label: {
+                Text("Stop Override")
+                    .frame(maxWidth: .infinity, maxHeight: .infinity)
+                    .padding(10)
+            })
+                .frame(width: UIScreen.main.bounds.width * 0.9, height: 40, alignment: .center)
+                .disabled(!state.isOverrideEnabled)
+                .background(!state.isOverrideEnabled ? Color(.systemGray4) : Color(.systemRed))
+                .tint(.white)
+                .clipShape(RoundedRectangle(cornerRadius: 8))
+
+                .padding(5)
+        }
+    }
+
     @ViewBuilder func overridesView(
         for preset: OverrideStored,
         showCheckMark _: Bool = false,

+ 31 - 0
FreeAPS/Sources/Modules/Adjustments/View/TempTargets/AdjustmentsRootView+TempTargets.swift

@@ -130,6 +130,37 @@ extension Adjustments.RootView {
         return nil
     }
 
+    var stickyStopTempTargetButton: some View {
+        ZStack {
+            Rectangle()
+                .frame(width: UIScreen.main.bounds.width, height: 65)
+                .foregroundStyle(colorScheme == .dark ? Color.bgDarkerDarkBlue : Color.white)
+                .background(.thinMaterial)
+                .opacity(0.8)
+                .clipShape(Rectangle())
+
+            Button(action: {
+                Task {
+                    // Save cancelled Temp Targets in TempTargetRunStored Entity
+                    // Cancel ALL active Temp Targets
+                    await state.disableAllActiveTempTargets(createTempTargetRunEntry: true)
+                    // Update View
+                    state.updateLatestTempTargetConfiguration()
+                }
+            }, label: {
+                Text("Stop Temp Target")
+                    .frame(maxWidth: .infinity, maxHeight: .infinity)
+                    .padding(10)
+            })
+                .frame(width: UIScreen.main.bounds.width * 0.9, height: 40, alignment: .center)
+                .disabled(!state.isTempTargetEnabled)
+                .background(!state.isTempTargetEnabled ? Color(.systemGray4) : Color(.systemRed))
+                .tint(.white)
+                .clipShape(RoundedRectangle(cornerRadius: 8))
+                .padding(5)
+        }
+    }
+
     private func tempTargetView(
         for tempTarget: TempTargetStored,
         showCheckmark: Bool = false,

File diff suppressed because it is too large
+ 4965 - 0
Trio.xcodeproj/project.pbxproj