diff options
Diffstat (limited to 'Map/MapApp.swift')
| -rw-r--r-- | Map/MapApp.swift | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Map/MapApp.swift b/Map/MapApp.swift index 78b0423..b66d715 100644 --- a/Map/MapApp.swift +++ b/Map/MapApp.swift @@ -22,6 +22,14 @@ struct MapApp: App { private let updaterController: SPUStandardUpdaterController = SPUStandardUpdaterController( startingUpdater: true, updaterDelegate: nil, userDriverDelegate: nil) + @AppStorage("appearanceStyle") private var appearanceStyle: String = UserPreferences.Defaults + .appearanceStyle + + init() { + // Apply appearance setting at app launch + applyAppearanceStyle() + } + var body: some Scene { DocumentGroup(newDocument: MapDocument(text: nil)) { file in MapEditor(document: file.$document, url: file.fileURL) @@ -37,6 +45,24 @@ struct MapApp: App { Settings { PreferencesWindow() } + .onChange(of: appearanceStyle) { _, newValue in + applyAppearanceStyle() + } + } + + private func applyAppearanceStyle() { + guard let style = AppearanceStyle(rawValue: appearanceStyle) else { return } + + DispatchQueue.main.async { + switch style { + case .system: + NSApp.appearance = nil + case .light: + NSApp.appearance = NSAppearance(named: .aqua) + case .dark: + NSApp.appearance = NSAppearance(named: .darkAqua) + } + } } } |