Showing 1 changed files with 43 additions and 81 deletions
+43 -81
USB Meter/Views/Meter/MeterView.swift
@@ -74,10 +74,6 @@ struct MeterView: View {
74 74
                     .padding(.leading, 6)
75 75
                     .padding(.vertical)
76 76
             }
77
-            NavigationLink(destination: MeterInfoView().environmentObject(meter)) {
78
-                Image(systemName: "info.circle.fill")
79
-                    .padding(.vertical)
80
-            }
81 77
             NavigationLink(destination: MeterSettingsView().environmentObject(meter)) {
82 78
                 Image(systemName: "gearshape.fill")
83 79
                     .padding(.vertical)
@@ -272,17 +268,55 @@ struct MeterView: View {
272 268
     }
273 269
 
274 270
     private var homeInfoPreview: some View {
275
-        VStack(spacing: 12) {
271
+        VStack(spacing: 14) {
276 272
             MeterInfoCard(title: "Overview", tint: meter.color) {
277 273
                 MeterInfoRow(label: "Name", value: meter.name)
278
-                MeterInfoRow(label: "Model", value: meter.deviceModelName)
279
-                if !meter.firmwareVersion.isEmpty {
280
-                    MeterInfoRow(label: "Firmware", value: meter.firmwareVersion)
281
-                }
274
+                MeterInfoRow(label: "Device Model", value: meter.deviceModelName)
275
+                MeterInfoRow(label: "Advertised Model", value: meter.modelString)
276
+                MeterInfoRow(label: "Working Voltage", value: meter.documentedWorkingVoltage)
277
+                MeterInfoRow(label: "Temperature Unit", value: meter.temperatureUnitDescription)
282 278
             }
283 279
 
284 280
             MeterInfoCard(title: "Identifiers", tint: .blue) {
285 281
                 MeterInfoRow(label: "MAC", value: meter.btSerial.macAddress.description)
282
+                if meter.modelNumber != 0 {
283
+                    MeterInfoRow(label: "Model Identifier", value: "\(meter.modelNumber)")
284
+                }
285
+            }
286
+
287
+            MeterInfoCard(title: "Screen Reporting", tint: .orange) {
288
+                if meter.reportsCurrentScreenIndex {
289
+                    MeterInfoRow(label: "Current Screen", value: meter.currentScreenDescription)
290
+                    Text("The active screen index is reported by the meter and mapped by the app to a known label.")
291
+                        .font(.footnote)
292
+                        .foregroundColor(.secondary)
293
+                } else {
294
+                    MeterInfoRow(label: "Current Screen", value: "Not Reported")
295
+                    Text("The current screen is not reported by the device payload, or we have not yet identified where and how the protocol announces it.")
296
+                        .font(.footnote)
297
+                        .foregroundColor(.secondary)
298
+                }
299
+            }
300
+
301
+            MeterInfoCard(title: "Live Device Details", tint: .indigo) {
302
+                if meter.operationalState == .dataIsAvailable {
303
+                    if !meter.firmwareVersion.isEmpty {
304
+                        MeterInfoRow(label: "Firmware", value: meter.firmwareVersion)
305
+                    }
306
+                    if meter.supportsChargerDetection {
307
+                        MeterInfoRow(label: "Detected Charger", value: meter.chargerTypeDescription)
308
+                    }
309
+                    if meter.serialNumber != 0 {
310
+                        MeterInfoRow(label: "Serial", value: "\(meter.serialNumber)")
311
+                    }
312
+                    if meter.bootCount != 0 {
313
+                        MeterInfoRow(label: "Boot Count", value: "\(meter.bootCount)")
314
+                    }
315
+                } else {
316
+                    Text("Connect to the meter to load firmware, serial, and boot details.")
317
+                        .font(.footnote)
318
+                        .foregroundColor(.secondary)
319
+                }
286 320
             }
287 321
         }
288 322
         .padding(.horizontal, pageHorizontalPadding)
@@ -591,78 +625,6 @@ struct MeterView: View {
591 625
     }
592 626
 }
593 627
 
594
-private struct MeterInfoView: View {
595
-    @EnvironmentObject private var meter: Meter
596
-
597
-    var body: some View {
598
-        ScrollView {
599
-            VStack(spacing: 14) {
600
-                MeterInfoCard(title: "Overview", tint: meter.color) {
601
-                    MeterInfoRow(label: "Name", value: meter.name)
602
-                    MeterInfoRow(label: "Device Model", value: meter.deviceModelName)
603
-                    MeterInfoRow(label: "Advertised Model", value: meter.modelString)
604
-                    MeterInfoRow(label: "Working Voltage", value: meter.documentedWorkingVoltage)
605
-                    MeterInfoRow(label: "Temperature Unit", value: meter.temperatureUnitDescription)
606
-                }
607
-
608
-                MeterInfoCard(title: "Identifiers", tint: .blue) {
609
-                    MeterInfoRow(label: "MAC", value: meter.btSerial.macAddress.description)
610
-                    if meter.modelNumber != 0 {
611
-                        MeterInfoRow(label: "Model Identifier", value: "\(meter.modelNumber)")
612
-                    }
613
-                }
614
-
615
-                MeterInfoCard(title: "Screen Reporting", tint: .orange) {
616
-                    if meter.reportsCurrentScreenIndex {
617
-                        MeterInfoRow(label: "Current Screen", value: meter.currentScreenDescription)
618
-                        Text("The active screen index is reported by the meter and mapped by the app to a known label.")
619
-                            .font(.footnote)
620
-                            .foregroundColor(.secondary)
621
-                    } else {
622
-                        MeterInfoRow(label: "Current Screen", value: "Not Reported")
623
-                        Text("The current screen is not reported by the device payload, or we have not yet identified where and how the protocol announces it.")
624
-                            .font(.footnote)
625
-                            .foregroundColor(.secondary)
626
-                    }
627
-                }
628
-
629
-                if meter.operationalState == .dataIsAvailable {
630
-                    MeterInfoCard(title: "Live Device Details", tint: .indigo) {
631
-                        if !meter.firmwareVersion.isEmpty {
632
-                            MeterInfoRow(label: "Firmware", value: meter.firmwareVersion)
633
-                        }
634
-                        if meter.supportsChargerDetection {
635
-                            MeterInfoRow(label: "Detected Charger", value: meter.chargerTypeDescription)
636
-                        }
637
-                        if meter.serialNumber != 0 {
638
-                            MeterInfoRow(label: "Serial", value: "\(meter.serialNumber)")
639
-                        }
640
-                        if meter.bootCount != 0 {
641
-                            MeterInfoRow(label: "Boot Count", value: "\(meter.bootCount)")
642
-                        }
643
-                    }
644
-                } else {
645
-                    MeterInfoCard(title: "Live Device Details", tint: .secondary) {
646
-                        Text("Connect to the meter to load firmware, serial, and boot details.")
647
-                            .font(.footnote)
648
-                            .foregroundColor(.secondary)
649
-                    }
650
-                }
651
-            }
652
-            .padding()
653
-        }
654
-        .background(
655
-            LinearGradient(
656
-                colors: [meter.color.opacity(0.14), Color.clear],
657
-                startPoint: .topLeading,
658
-                endPoint: .bottomTrailing
659
-            )
660
-            .ignoresSafeArea()
661
-        )
662
-        .navigationBarTitle("Device Info")
663
-        .navigationBarItems(trailing: RSSIView(RSSI: meter.btSerial.RSSI).frame(width: 18, height: 18))
664
-    }
665
-}
666 628
 
667 629
 private struct MeterInfoCard<Content: View>: View {
668 630
     let title: String