import SwiftUI /// App-weite Einstellungen. Bewusst knapp gehalten – was ein einzelnes Gerät /// betrifft, steht bei diesem Gerät. struct SettingsView: View { @AppStorage(AppSettings.showDiagnosticsKey) private var showDiagnostics = false #if DEBUG @AppStorage(DemoData.enabledKey) private var demoModeEnabled = false #endif @Environment(PhoneWatchLink.self) private var watch @Environment(\.dismiss) private var dismiss var body: some View { NavigationStack { List { #if DEBUG Section { Toggle("Demo-Modus", isOn: $demoModeEnabled) } header: { Text("Entwicklung") } footer: { Text("Füllt die App mit erfundenen Fahrzeugen und Messwerten, um " + "Ansichten ohne echte Sensoren zu prüfen. Wirkt erst nach " + "einem Neustart der App – einmal beenden (im App-Umschalter " + "nach oben wischen) und wieder öffnen.") } #endif Section { Toggle("Diagnose anzeigen", isOn: $showDiagnostics) } header: { Text("Fehlersuche") } footer: { Text("Zeigt bei jedem Gerät die technischen Angaben: erkanntes " + "Protokoll, Bluetooth-Merkmale, gesendete Befehle und die " + "Rohdaten der letzten Antwort. Für den Alltag nicht nötig – " + "hilfreich, wenn ein Gerät sich nicht wie erwartet verhält.\n\n" + "Meldet ein Gerät einen Fehler, werden die Angaben ohnehin " + "eingeblendet, auch wenn das hier ausgeschaltet ist.") } Section { LabeledContent("Apple Watch", value: watch.statusText) } footer: { Text("Die Uhr zeigt die Werte dieses iPhones und steuert die " + "Kühlbox darüber – sie funkt nicht selbst zu den Geräten. " + "Dafür muss diese App laufen; im Hintergrund liefern " + "Neigungsmesser, BMS und Kühlbox weiter, die " + "Victron-Werbedaten erst wieder im Vordergrund.") } } .navigationTitle("Einstellungen") .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .confirmationAction) { Button("Fertig") { dismiss() } } } } } } enum AppSettings { static let showDiagnosticsKey = "showDiagnostics" }