forked from fritob/Camper-Monitor
Beim ursprünglichen Merge übersehene Dateien nachziehen
Drei Dateien aus solar-integration wurden beim Zusammenführen mit dev_watch übersehen, weil sie fälschlich als "identisch zwischen den Branches" eingestuft wurden: * DemoData.isEnabled kannte nur noch den Umgebungsvariablen-Weg (CAMPER_DEMO=1). Der Schalter in den Einstellungen – der einzige Weg, Demo-Daten auf einem lokal installierten Build ohne Xcode-Verbindung einzuschalten – fehlte ganz, SettingsView.swift war nie zusammengeführt worden. * LevelSetupView.swift fehlte der komplette Abschnitt "Fahrzeuggrafik" – die Kachel-Auswahl zwischen den VehicleGraphicStyle-Varianten (Vanster/California). Das Feld existierte im Modell und wurde beim Rendern gelesen, war aber nirgends einstellbar. * DeviceCard.swift zeigte die Nivellierungs-Kachel wie jedes andere Gerät (Hauptwert + Nebenwerte) statt der grossen Front/Heck- und Links/Rechts-Anzeige mit Richtungsbuchstaben. Anlass: Im Testbuild fehlte deshalb sowohl der Demo-Modus als auch die Fahrzeuggrafik-Auswahl. Als Konsequenz systematisch alle beim Merge als "bereits identisch" eingestuften Dateien erneut gegengeprüft – keine weiteren Lücken gefunden. Build (App + Watch) und Protokoll-Tests grün. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
ed026ce580
commit
b956324234
@@ -25,6 +25,8 @@ struct LevelSetupView: View {
|
||||
store.devices.first { $0.id == device.id } ?? device
|
||||
}
|
||||
|
||||
private let graphicColumns = [GridItem(.adaptive(minimum: 76), spacing: 12)]
|
||||
|
||||
var body: some View {
|
||||
List {
|
||||
Section {
|
||||
@@ -80,6 +82,44 @@ struct LevelSetupView: View {
|
||||
} footer: {
|
||||
Text(calibrationHint)
|
||||
}
|
||||
|
||||
Section {
|
||||
LazyVGrid(columns: graphicColumns, spacing: 12) {
|
||||
ForEach(VehicleGraphicStyle.allCases) { style in
|
||||
Button {
|
||||
var updated = currentDevice
|
||||
updated.vehicleGraphicStyle = style
|
||||
store.update(updated)
|
||||
} label: {
|
||||
VStack(spacing: 4) {
|
||||
Image(style.sideImageName)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.padding(10)
|
||||
.frame(width: 60, height: 60)
|
||||
.background(currentDevice.vehicleGraphicStyle == style
|
||||
? Color.accentColor.opacity(0.18)
|
||||
: Color.secondary.opacity(0.08),
|
||||
in: .rect(cornerRadius: 12))
|
||||
.foregroundStyle(currentDevice.vehicleGraphicStyle == style
|
||||
? Color.accentColor : Color.primary)
|
||||
Text(style.title)
|
||||
.font(.caption2)
|
||||
.foregroundStyle(currentDevice.vehicleGraphicStyle == style
|
||||
? Color.accentColor : Color.secondary)
|
||||
}
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
.accessibilityLabel(style.title)
|
||||
}
|
||||
}
|
||||
.padding(.vertical, 4)
|
||||
} header: {
|
||||
Text("Fahrzeuggrafik")
|
||||
} footer: {
|
||||
Text("Wird in der Fahrzeug-Darstellung des Neigungsmessers verwendet. "
|
||||
+ "Weitere Grafiken folgen.")
|
||||
}
|
||||
}
|
||||
.navigationTitle("Neigungsmesser einrichten")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
|
||||
Reference in New Issue
Block a user