import SwiftUI struct WifiStepView: View { @ObservedObject var viewModel: SetupViewModel @AppStorage("appLanguage") private var appLanguage: String = "de" var body: some View { Form { if viewModel.wifiNetworks.isEmpty && viewModel.unsupportedWifiInterfaces.isEmpty { Section { Text(L10n.t("An diesem Gerät wurde kein WLAN erkannt. Dieser Schritt wird übersprungen.", appLanguage)) .foregroundStyle(.secondary) } } if !viewModel.unsupportedWifiInterfaces.isEmpty { Section { Text( L10n.t("Dein Gerät nutzt den neueren RouterOS-WiFi-Treiber (", appLanguage) + "\(viewModel.unsupportedWifiInterfaces.map(\.name).joined(separator: ", "))" + L10n.t("), den diese App noch nicht unterstützt. WLAN muss dafür vorerst manuell über Winbox eingerichtet werden.", appLanguage) ) .appFont(.caption) .foregroundStyle(.secondary) } } ForEach($viewModel.wifiNetworks) { $network in Section(L10n.t("WLAN auf", appLanguage) + " \(network.interfaceName)") { Toggle(L10n.t("Aktivieren", appLanguage), isOn: $network.enabled) .help(L10n.t("Schaltet WLAN auf diesem Funkmodul ein und vergibt Netzwerkname und Passwort.", appLanguage)) if network.enabled { TextField(L10n.t("Netzwerkname (SSID)", appLanguage), text: $network.ssid) .help(L10n.t("Der Name, den Geräte in ihrer WLAN-Liste sehen und mit dem sie sich verbinden.", appLanguage)) SecureField(L10n.t("Passwort (mind. 8 Zeichen)", appLanguage), text: $network.password) .help(L10n.t("Das WLAN-Passwort (WPA2). Muss mindestens 8 Zeichen lang sein.", appLanguage)) } } } Section { HStack { Button(L10n.t("Zurück", appLanguage)) { viewModel.goBack() } Spacer() Button(L10n.t("Weiter", appLanguage)) { viewModel.goNext() } .disabled(!isStepValid) } } } .formStyle(.grouped) .navigationTitle(LocalizedStringKey(L10n.t("WLAN (falls vorhanden)", appLanguage))) .toolbar { ToolbarItem { ManualHelpButton(anchor: ManualAnchor.stepWifi) } } } private var isStepValid: Bool { viewModel.wifiNetworks.allSatisfy { network in !network.enabled || (!network.ssid.isEmpty && network.password.count >= 8) } } }