aboutsummaryrefslogtreecommitdiff
path: root/Map/MapApp.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-07-11 15:13:58 +0200
committerRuben Beltran del Rio <git@r.bdr.sh>2025-07-11 15:13:58 +0200
commitee5f1ff07ebf275becb47d5a9159130b2190c485 (patch)
treedf5996ecc1e446e8aa6185e04b2995238b58a2af /Map/MapApp.swift
parent49766f0c78015831f8be57349317f0d1c8228327 (diff)
More control over theme
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)
+ }
+ }
}
}