Files
RouterOS/RouterOSAssistant/Features/Wizard/Steps/Setup/ModeStepView.swift
T
KayandClaude Sonnet 5 221b914b05 M29: App-Einstellungen (Settings-Fenster ⌘,)
Neues natives macOS-Settings-Fenster mit Sprache, Auto-Update-Check,
Farbschema (Standard/Kontrastreich), echter Textgrößen-Skalierung,
Bedienelement-Größe und LAN-Scanner-Refreshraten/Sparkline-Einstellungen.

- AppPreferences.swift: zentrale AppStorage-Keys, ColorTheme/AppTextSize/
  UIDensity
- SettingsView.swift: 3-Tab-Settings-Scene
- .environment(\.dynamicTypeSize) erwies sich auf macOS als wirkungslos
  (per ImageRenderer-Snapshot bewiesen) — durch eigenen appFontScale-
  Mechanismus ersetzt, ~110 .font(...)-Aufrufe app-weit umgestellt
- Farbschema auf Wunsch auch auf Experte-Tab-Sidebar ausgeweitet
- Docs aktualisiert: README/HANDOFF/CHATLOG/Manual.md+PDF, found.md

Live bestätigt nach mehreren Nachbesserungsrunden ("passt, lassen wir so").

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 13:38:22 +02:00

45 lines
1.8 KiB
Swift

import SwiftUI
struct ModeStepView: View {
@ObservedObject var viewModel: SetupViewModel
@AppStorage("appLanguage") private var appLanguage: String = "de"
var body: some View {
Form {
Section {
Picker(L10n.t("Modus", appLanguage), selection: $viewModel.mode) {
Text(L10n.t("Einfach", appLanguage)).tag(SetupMode.simple)
Text(L10n.t("Experte", appLanguage)).tag(SetupMode.expert)
}
.pickerStyle(.segmented)
}
Section {
switch viewModel.mode {
case .simple:
Text(L10n.t("Grundeinrichtung: Internetverbindung (WAN), ein Heimnetzwerk (LAN) mit DHCP, WLAN und ein fest aktivierter Firewall-Grundschutz.", appLanguage))
Text(L10n.t("Kein VLAN, keine mehreren getrennten Netzwerke, keine Netzwerk-Isolation — für später jederzeit über den Expertenmodus nachrüstbar.", appLanguage))
.appFont(.caption)
.foregroundStyle(.secondary)
case .expert:
Text(L10n.t("Voller Zugriff: mehrere LAN-Interfaces mit je eigenem DHCP-Server, VLANs, Netzwerk-Isolation zwischen Netzwerken, und alle Firewall-Optionen.", appLanguage))
.foregroundStyle(.secondary)
}
}
Section {
HStack {
Spacer()
Button(L10n.t("Weiter", appLanguage)) { viewModel.goNext() }
}
}
}
.formStyle(.grouped)
.navigationTitle(LocalizedStringKey(L10n.t("Modus wählen", appLanguage)))
}
}
#Preview {
ModeStepView(viewModel: SetupViewModel(connectionService: ConnectionService()))
}