.help(...)-Tooltips auf jedem Eingabefeld/Picker/Toggle in Connect- sowie allen Einrichten-Schritten (WAN/LAN/VLAN/WLAN/Firewall) -- kurze Erklärung was der Wert bedeutet und welche Auswirkung er hat, passend zum Laien-Anspruch der App. Sicherungen-Tab: Speicherort jetzt änderbar (Ordner wählen über nativen macOS-Dialog, Zurücksetzen auf Standard). BackupService hält den gewählten Pfad in UserDefaults (BackupService.customDirectoryURL), fällt ohne Auswahl weiter auf ~/Library/Application Support/... zurück. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HReLXMbmPvtQ23p1iWiJNW
58 lines
2.7 KiB
Swift
58 lines
2.7 KiB
Swift
import SwiftUI
|
|
|
|
struct LanStepView: View {
|
|
@ObservedObject var viewModel: SetupViewModel
|
|
let availableInterfaces: [NetworkInterface]
|
|
|
|
var body: some View {
|
|
Form {
|
|
Section("Heimnetzwerk (LAN)") {
|
|
Picker("Anschluss/Bridge", selection: $viewModel.lanConfig.interfaceName) {
|
|
ForEach(availableInterfaces) { interface in
|
|
Text(interface.name).tag(interface.name)
|
|
}
|
|
}
|
|
.help("Der interne Netzwerk-Anschluss, an dem deine Geräte zu Hause hängen (dein lokales Netzwerk, LAN).")
|
|
TextField("Router-Adresse (z.B. 192.168.88.1/24)", text: $viewModel.lanConfig.routerAddress)
|
|
.help("Die Adresse, unter der der Router selbst in deinem Heimnetz erreichbar ist.")
|
|
TextField("Netzwerk (z.B. 192.168.88.0/24)", text: $viewModel.lanConfig.networkAddress)
|
|
.help("Der komplette Adressbereich deines Heimnetzes (z.B. /24 erlaubt bis zu 254 Geräte).")
|
|
}
|
|
|
|
Section("Automatische Adressvergabe (DHCP)") {
|
|
TextField("Von", text: $viewModel.lanConfig.poolRangeStart)
|
|
.help("Ab welcher Adresse der Router automatisch Adressen an deine Geräte vergibt.")
|
|
TextField("Bis", text: $viewModel.lanConfig.poolRangeEnd)
|
|
.help("Bis zu welcher Adresse der Router automatisch Adressen an deine Geräte vergibt.")
|
|
Stepper(
|
|
"Adresse behalten für \(viewModel.lanConfig.leaseTimeHours) Stunden",
|
|
value: $viewModel.lanConfig.leaseTimeHours,
|
|
in: 1...168
|
|
)
|
|
.help("Wie lange ein Gerät seine zugewiesene Adresse behält, bevor sie erneuert werden muss.")
|
|
TextField("DNS-Server", text: $viewModel.lanConfig.dnsServers)
|
|
.help("Welcher Server deinen Geräten Internetadressen in Namen übersetzt (z.B. www.google.de). Meist der Router selbst.")
|
|
}
|
|
|
|
Section {
|
|
HStack {
|
|
Button("Zurück") { viewModel.goBack() }
|
|
Spacer()
|
|
Button("Weiter") { viewModel.goNext() }
|
|
.disabled(!isStepValid)
|
|
}
|
|
}
|
|
}
|
|
.formStyle(.grouped)
|
|
.navigationTitle("Heimnetzwerk einrichten")
|
|
}
|
|
|
|
private var isStepValid: Bool {
|
|
!viewModel.lanConfig.interfaceName.isEmpty
|
|
&& !viewModel.lanConfig.routerAddress.isEmpty
|
|
&& !viewModel.lanConfig.networkAddress.isEmpty
|
|
&& !viewModel.lanConfig.poolRangeStart.isEmpty
|
|
&& !viewModel.lanConfig.poolRangeEnd.isEmpty
|
|
}
|
|
}
|