aboutsummaryrefslogtreecommitdiff
path: root/Map/MapApp.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Map/MapApp.swift')
-rw-r--r--Map/MapApp.swift26
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)
+ }
+ }
}
}