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

sticky Stop Button

* moved the stop button to the top level list and sticky to bottom
* makes it difficult to include the adjustment to be cancelled into this sticky area as well
* I suggest to drop this commit again
Robert 1 год назад
Родитель
Сommit
6ec5ba3230
1 измененных файлов с 54 добавлено и 6 удалено
  1. 54 6
      FreeAPS/Sources/Modules/OverrideConfig/View/OverrideRootView.swift

+ 54 - 6
FreeAPS/Sources/Modules/OverrideConfig/View/OverrideRootView.swift

@@ -124,6 +124,7 @@ extension OverrideConfig {
                     case .tempTargets: tempTargets() }
                 }
                 .listSectionSpacing(10)
+                .safeAreaInset(edge: .bottom, spacing: 30) { stickyStopButton }
                 .scrollContentBackground(.hidden).background(color)
                 .onAppear(perform: configureView)
                 .navigationBarTitle("Adjustments")
@@ -196,15 +197,12 @@ extension OverrideConfig {
         @ViewBuilder func overrides() -> some View {
             if state.isEnabled, state.activeOverrideName.isNotEmpty {
                 currentActiveAdjustment
-                cancelAdjustmentButton
             }
-
             if state.overridePresets.isNotEmpty {
                 overridePresets
             } else {
                 defaultText
             }
-
 //            if state.overridePresets.isNotEmpty || state.currentActiveOverride != nil {
 //                cancelAdjustmentButton
 //            }
@@ -213,15 +211,12 @@ extension OverrideConfig {
         @ViewBuilder func tempTargets() -> some View {
             if state.isTempTargetEnabled, state.activeTempTargetName.isNotEmpty {
                 currentActiveAdjustment
-                cancelAdjustmentButton
             }
-
             if state.tempTargetPresets.isNotEmpty {
                 tempTargetPresets
             } else {
                 defaultText
             }
-
 //            if state.tempTargetPresets.isNotEmpty || state.currentActiveTempTarget != nil {
 //                cancelAdjustmentButton
 //            }
@@ -446,6 +441,59 @@ extension OverrideConfig {
             }
         }
 
+        var stickyStopButton: some View {
+            ZStack {
+                Rectangle()
+                    .frame(width: UIScreen.main.bounds.width, height: 65)
+                    .shadow(
+                        color: colorScheme == .dark ? Color(red: 0.02745098039, green: 0.1098039216, blue: 0.1411764706) :
+                            Color.black.opacity(0.33),
+                        radius: 3
+                    )
+                    .foregroundStyle(Color.chart)
+                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")
+                                .padding(10)
+                        })
+                            .frame(width: UIScreen.main.bounds.width * 0.9, alignment: .center)
+                            .disabled(!state.isEnabled)
+                            .background(!state.isEnabled ? Color(.systemGray4) : Color(.systemRed))
+                            .tint(.white)
+                            .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")
+                                .padding(10)
+                        })
+                            .frame(width: UIScreen.main.bounds.width * 0.9, alignment: .center)
+                            .disabled(!state.isTempTargetEnabled)
+                            .background(!state.isTempTargetEnabled ? Color(.systemGray4) : Color(.systemRed))
+                            .tint(.white)
+                            .clipShape(RoundedRectangle(cornerRadius: 8))
+                    }
+                }.padding(5)
+            }
+        }
+
         private var cancelAdjustmentButton: some View {
             switch state.selectedTab {
             case .overrides: