diff options
Diffstat (limited to 'Map/Data')
| -rw-r--r-- | Map/Data/UserPreferences.swift | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/Map/Data/UserPreferences.swift b/Map/Data/UserPreferences.swift index 56582e3..01c4f37 100644 --- a/Map/Data/UserPreferences.swift +++ b/Map/Data/UserPreferences.swift @@ -15,6 +15,24 @@ import Foundation +// MARK: - Enums +enum QuickLookPreviewStyle: String, CaseIterable, Codable { + case map = "map" + case highlightedText = "highlighted_text" + case plainText = "plain_text" + + var localizedName: String { + switch self { + case .map: + return String(localized: "preferences.quick_look.preview_style.map") + case .highlightedText: + return String(localized: "preferences.quick_look.preview_style.highlighted_text") + case .plainText: + return String(localized: "preferences.quick_look.preview_style.plain_text") + } + } +} + // MARK: - JSON Export/Import Structures struct UserPreferencesJSON: Codable { // MARK: - Map Preferences @@ -41,6 +59,9 @@ struct UserPreferencesJSON: Codable { // MARK: - UI Preferences var viewStyle: String? var zoom: Double? + + // MARK: - QuickLook Preferences + var quickLookPreviewStyle: String? } struct UserPreferences: Codable { @@ -70,6 +91,9 @@ struct UserPreferences: Codable { var viewStyle: String var zoom: Double + // MARK: - QuickLook Preferences + var quickLookPreviewStyle: String + // MARK: - Default Values struct Defaults { static let showMapBackground = true @@ -88,6 +112,8 @@ struct UserPreferences: Codable { static let viewStyle = "horizontal" static let zoom = 1.0 + static let quickLookPreviewStyle = QuickLookPreviewStyle.map.rawValue + // Computed properties for complex defaults static var mapTemplates: Data { let defaultTemplate = Template( @@ -133,6 +159,8 @@ struct UserPreferences: Codable { self.viewStyle = Defaults.viewStyle self.zoom = Defaults.zoom + + self.quickLookPreviewStyle = Defaults.quickLookPreviewStyle } // MARK: - JSON Methods @@ -157,7 +185,8 @@ struct UserPreferences: Codable { mapTemplates: templatesFromData(mapTemplates), customStages: stagesFromData(customStages), viewStyle: viewStyle, - zoom: zoom + zoom: zoom, + quickLookPreviewStyle: quickLookPreviewStyle ) let data = try encoder.encode(jsonPrefs) @@ -220,6 +249,9 @@ struct UserPreferences: Codable { if let value = jsonPrefs.zoom { self.zoom = value } + if let value = jsonPrefs.quickLookPreviewStyle { + self.quickLookPreviewStyle = value + } apply() return true @@ -267,6 +299,7 @@ struct UserPreferences: Codable { // MARK: - Apply to UserDefaults private func apply() { let defaults = UserDefaults.standard + let sharedDefaults = UserDefaults(suiteName: "group.systems.tranquil.Map") // Map Preferences defaults.set(showMapBackground, forKey: "showMapBackground") @@ -292,6 +325,10 @@ struct UserPreferences: Codable { // UI Preferences defaults.set(viewStyle, forKey: "viewStyle") defaults.set(zoom, forKey: "zoom") + + // QuickLook Preferences - write to both standard and shared UserDefaults + defaults.set(quickLookPreviewStyle, forKey: "quickLookPreviewStyle") + sharedDefaults?.set(quickLookPreviewStyle, forKey: "quickLookPreviewStyle") } // MARK: - Load from UserDefaults @@ -340,6 +377,10 @@ struct UserPreferences: Codable { preferences.viewStyle = defaults.object(forKey: "viewStyle") as? String ?? Defaults.viewStyle preferences.zoom = defaults.object(forKey: "zoom") as? Double ?? Defaults.zoom + // QuickLook Preferences + preferences.quickLookPreviewStyle = + defaults.object(forKey: "quickLookPreviewStyle") as? String ?? Defaults.quickLookPreviewStyle + return preferences } } |