mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
After this change, a developer can now clone the project and run without the build failing due to lint errors! 😃
* I ran `swiftlint --fix` to resolve many auto-correctable issues (mostly whitespace)
* Excluded the `Meshtastic/Protobufs` directory from lint, since that code is automatically generated.
* Converted some single letter method parameters to lowercase.
* Converted several instances `force_cast` to instead use `guard` or `if let` to unwrap optional values. During this change, some of the SwiftUI views became "too complex to be solved in a reasonable time", so I broke up the views into distinct sub-expressions.
I was able to build and run the app on an iOS simulator.
79 lines
2.1 KiB
Swift
79 lines
2.1 KiB
Swift
//
|
|
// BatteryIcon.swift
|
|
// Meshtastic
|
|
//
|
|
// Copyright Garth Vander Houwen 3/24/23.
|
|
//
|
|
import SwiftUI
|
|
|
|
struct BatteryLevelCompact: View {
|
|
|
|
@ObservedObject var node: NodeInfoEntity
|
|
|
|
var font: Font
|
|
var iconFont: Font
|
|
var color: Color
|
|
|
|
var body: some View {
|
|
let deviceMetrics = node.telemetries?.filtered(using: NSPredicate(format: "metricsType == 0"))
|
|
let mostRecent = deviceMetrics?.lastObject as? TelemetryEntity
|
|
let batteryLevel = mostRecent?.batteryLevel ?? 0
|
|
if deviceMetrics?.count ?? 0 > 0 {
|
|
HStack(alignment: .center, spacing: 0) {
|
|
if batteryLevel == 100 {
|
|
Image(systemName: "battery.100.bolt")
|
|
.font(iconFont)
|
|
.foregroundColor(color)
|
|
.symbolRenderingMode(.hierarchical)
|
|
} else if batteryLevel < 100 && batteryLevel > 74 {
|
|
|
|
Image(systemName: "battery.75")
|
|
.font(iconFont)
|
|
.foregroundColor(color)
|
|
.symbolRenderingMode(.hierarchical)
|
|
} else if batteryLevel < 75 && batteryLevel > 49 {
|
|
|
|
Image(systemName: "battery.50")
|
|
.font(iconFont)
|
|
.foregroundColor(color)
|
|
.symbolRenderingMode(.hierarchical)
|
|
} else if batteryLevel < 50 && batteryLevel > 14 {
|
|
|
|
Image(systemName: "battery.25")
|
|
.font(iconFont)
|
|
.foregroundColor(color)
|
|
.symbolRenderingMode(.hierarchical)
|
|
} else if batteryLevel < 15 && batteryLevel > 0 {
|
|
|
|
Image(systemName: "battery.0")
|
|
.font(iconFont)
|
|
.foregroundColor(color)
|
|
.symbolRenderingMode(.hierarchical)
|
|
} else if batteryLevel == 0 {
|
|
Image(systemName: "battery.0")
|
|
.font(iconFont)
|
|
.foregroundColor(.red)
|
|
.symbolRenderingMode(.hierarchical)
|
|
} else if batteryLevel > 100 {
|
|
Image(systemName: "powerplug")
|
|
.font(iconFont)
|
|
.foregroundColor(color)
|
|
.symbolRenderingMode(.hierarchical)
|
|
}
|
|
if batteryLevel > 100 {
|
|
Text("PWD")
|
|
.foregroundStyle(.gray)
|
|
.font(font)
|
|
} else if batteryLevel == 100 {
|
|
Text("CHG")
|
|
.foregroundStyle(.gray)
|
|
.font(font)
|
|
} else {
|
|
Text("\(batteryLevel)%")
|
|
.foregroundStyle(.gray)
|
|
.font(font)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|