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

Add alternative picker in Dexcom G7 style

dnzxy 2 лет назад
Родитель
Сommit
f77577502d
1 измененных файлов с 34 добавлено и 8 удалено
  1. 34 8
      FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

+ 34 - 8
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -428,17 +428,43 @@ extension Home {
         // MARK: PICKER IN SEGEMENTED STYLE TO CHOOSE THE X AXIS SCALE OF THE GRAPH
 
         @ViewBuilder private func pickerPanel(_: GeometryProxy) -> some View {
-            HStack {
-                Picker("Scale", selection: $state.scale) {
-                    ForEach(Home.StateModel.Scale.allCases) { scale in
-                        Text("\(scale.rawValue)h").tag(Optional(scale))
+//            HStack {
+//                Picker("Scale", selection: $state.scale) {
+//                    ForEach(Home.StateModel.Scale.allCases) { scale in
+//                        Text("\(scale.rawValue)h").tag(Optional(scale))
+//                    }
+//                }
+//                .pickerStyle(.segmented)
+//                .background(Color.clear)
+//                .frame(width: UIScreen.main.bounds.width / 1.5, height: 40, alignment: .center)
+//            }
+//            .padding(.vertical, 1)
+            HStack(spacing: 0) {
+                ForEach(Home.StateModel.Scale.allCases, id: \.self) { scale in
+                    Button(action: {
+                        state.scale = scale
+                    }) {
+                        Text(scale == state.scale ? "\(scale.rawValue) hours" : "\(scale.rawValue)")
+                            .font(.footnote)
+                            .foregroundColor(
+                                scale == state.scale ? (colorScheme == .dark ? Color.white : Color.black) : Color.secondary
+                            )
+                            .padding(.vertical, 6).padding(.horizontal, scale == state.scale ? 12 : 6)
+                            .background(
+                                scale == state
+                                    .scale ?
+                                    // RGB(10, 30, 50)
+                                    (colorScheme == .dark ? Color(red: 0.039, green: 0.117, blue: 0.196) : Color.white) :
+                                    Color
+                                    .clear
+                            )
+                            .cornerRadius(20)
                     }
+                    .shadow(radius: 3)
                 }
-                .pickerStyle(.segmented)
-                .background(Color.clear)
-                .frame(width: UIScreen.main.bounds.width / 1.5, height: 40, alignment: .center)
             }
-            .padding(.vertical, 1)
+            .padding()
+            .background(Color.clear)
         }
 
 //        @ViewBuilder private func profiles(_: GeometryProxy) -> some View {