aboutsummaryrefslogtreecommitdiff
path: root/Map/Data
diff options
context:
space:
mode:
Diffstat (limited to 'Map/Data')
-rw-r--r--Map/Data/UserPreferences.swift38
1 files changed, 38 insertions, 0 deletions
diff --git a/Map/Data/UserPreferences.swift b/Map/Data/UserPreferences.swift
index 01c4f37..761c5a8 100644
--- a/Map/Data/UserPreferences.swift
+++ b/Map/Data/UserPreferences.swift
@@ -16,6 +16,23 @@
import Foundation
// MARK: - Enums
+enum AppearanceStyle: String, CaseIterable, Codable {
+ case system = "system"
+ case light = "light"
+ case dark = "dark"
+
+ var localizedName: String {
+ switch self {
+ case .system:
+ return String(localized: "preferences.appearance.style.system")
+ case .light:
+ return String(localized: "preferences.appearance.style.light")
+ case .dark:
+ return String(localized: "preferences.appearance.style.dark")
+ }
+ }
+}
+
enum QuickLookPreviewStyle: String, CaseIterable, Codable {
case map = "map"
case highlightedText = "highlighted_text"
@@ -35,6 +52,9 @@ enum QuickLookPreviewStyle: String, CaseIterable, Codable {
// MARK: - JSON Export/Import Structures
struct UserPreferencesJSON: Codable {
+ // MARK: - Appearance Preferences
+ var appearanceStyle: String?
+
// MARK: - Map Preferences
var showMapBackground: Bool?
var useCustomFont: Bool?
@@ -66,6 +86,9 @@ struct UserPreferencesJSON: Codable {
struct UserPreferences: Codable {
+ // MARK: - Appearance Preferences
+ var appearanceStyle: String
+
// MARK: - Map Preferences
var showMapBackground: Bool
var useCustomFont: Bool
@@ -96,6 +119,8 @@ struct UserPreferences: Codable {
// MARK: - Default Values
struct Defaults {
+ static let appearanceStyle = AppearanceStyle.system.rawValue
+
static let showMapBackground = true
static let useCustomFont = false
static let customFontName = "Helvetica"
@@ -141,6 +166,8 @@ struct UserPreferences: Codable {
// MARK: - Initialization
init() {
+ self.appearanceStyle = Defaults.appearanceStyle
+
self.showMapBackground = Defaults.showMapBackground
self.useCustomFont = Defaults.useCustomFont
self.customFontName = Defaults.customFontName
@@ -171,6 +198,7 @@ struct UserPreferences: Codable {
do {
// Convert to JSON-friendly format
let jsonPrefs = UserPreferencesJSON(
+ appearanceStyle: appearanceStyle,
showMapBackground: showMapBackground,
useCustomFont: useCustomFont,
customFontName: customFontName,
@@ -204,6 +232,9 @@ struct UserPreferences: Codable {
// Convert from JSON format back to UserPreferences
// Only update values that are present in the JSON (partial updates)
+ if let value = jsonPrefs.appearanceStyle {
+ self.appearanceStyle = value
+ }
if let value = jsonPrefs.showMapBackground {
self.showMapBackground = value
}
@@ -301,6 +332,9 @@ struct UserPreferences: Codable {
let defaults = UserDefaults.standard
let sharedDefaults = UserDefaults(suiteName: "group.systems.tranquil.Map")
+ // Appearance Preferences
+ defaults.set(appearanceStyle, forKey: "appearanceStyle")
+
// Map Preferences
defaults.set(showMapBackground, forKey: "showMapBackground")
defaults.set(useCustomFont, forKey: "useCustomFont")
@@ -337,6 +371,10 @@ struct UserPreferences: Codable {
var preferences = UserPreferences()
+ // Appearance Preferences
+ preferences.appearanceStyle =
+ defaults.object(forKey: "appearanceStyle") as? String ?? Defaults.appearanceStyle
+
// Map Preferences
preferences.showMapBackground =
defaults.object(forKey: "showMapBackground") as? Bool ?? Defaults.showMapBackground