TrioRemoteControlView.swift 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //
  2. // TrioRemoteControlView.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2024-08-25.
  6. // Copyright © 2024 Jon Fawcett. All rights reserved.
  7. //
  8. import SwiftUI
  9. struct TrioRemoteControlView: View {
  10. @ObservedObject var viewModel: TrioRemoteControlViewModel
  11. @Environment(\.presentationMode) var presentationMode
  12. var body: some View {
  13. NavigationView {
  14. VStack {
  15. let columns = [
  16. GridItem(.flexible(), spacing: 16),
  17. GridItem(.flexible(), spacing: 16)
  18. ]
  19. LazyVGrid(columns: columns, spacing: 16) {
  20. CommandButtonView(command: "Meal", iconName: "fork.knife", destination: MealView())
  21. CommandButtonView(command: "Bolus", iconName: "syringe", destination: BolusView())
  22. CommandButtonView(command: "Temp Target", iconName: "scope", destination: TempTargetView())
  23. }
  24. .padding(.horizontal)
  25. Spacer()
  26. }
  27. .navigationBarTitle("Trio Remote Control", displayMode: .inline)
  28. .navigationBarItems(trailing: Button("Done") {
  29. presentationMode.wrappedValue.dismiss()
  30. })
  31. }
  32. }
  33. }
  34. struct CommandButtonView<Destination: View>: View {
  35. let command: String
  36. let iconName: String
  37. let destination: Destination
  38. var body: some View {
  39. NavigationLink(destination: destination) {
  40. VStack {
  41. Image(systemName: iconName)
  42. .resizable()
  43. .aspectRatio(contentMode: .fit)
  44. .frame(width: 50, height: 50)
  45. Text(command)
  46. }
  47. .frame(maxWidth: .infinity, minHeight: 100)
  48. .padding()
  49. .background(Color.blue)
  50. .foregroundColor(.white)
  51. .cornerRadius(8)
  52. }
  53. .buttonStyle(PlainButtonStyle())
  54. }
  55. }