aboutsummaryrefslogtreecommitdiff
path: root/Map
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-07-11 14:55:46 +0200
committerRuben Beltran del Rio <git@r.bdr.sh>2025-07-11 14:55:46 +0200
commit49766f0c78015831f8be57349317f0d1c8228327 (patch)
tree47ceb138008134dc83ad8432c744e3174854cb2c /Map
parentf8c877e01e6517b13ec085d9d79bf316c7637344 (diff)
Add QuickLook settings
Diffstat (limited to 'Map')
-rw-r--r--Map/Data/UserPreferences.swift43
-rw-r--r--Map/Localizable.xcstrings55
-rw-r--r--Map/Map.entitlements4
-rw-r--r--Map/Presentation/Preferences/GeneralPreferencesView.swift30
4 files changed, 131 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
}
}
diff --git a/Map/Localizable.xcstrings b/Map/Localizable.xcstrings
index 13932a4..dda0deb 100644
--- a/Map/Localizable.xcstrings
+++ b/Map/Localizable.xcstrings
@@ -735,6 +735,61 @@
}
}
},
+ "preferences.quick_look.preview_style.highlighted_text" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Highlighted Text"
+ }
+ }
+ }
+ },
+ "preferences.quick_look.preview_style.map" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Map"
+ }
+ }
+ }
+ },
+ "preferences.quick_look.preview_style.plain_text" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Plain Text"
+ }
+ }
+ }
+ },
+ "preferences.quick_look.preview_style.title" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Preview maps in QuickLook as:"
+ }
+ }
+ }
+ },
+ "preferences.quick_look.title" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "QuickLook:"
+ }
+ }
+ }
+ },
"preferences.stages.column.name" : {
"extractionState" : "manual",
"localizations" : {
diff --git a/Map/Map.entitlements b/Map/Map.entitlements
index d363e1c..91680ad 100644
--- a/Map/Map.entitlements
+++ b/Map/Map.entitlements
@@ -4,6 +4,10 @@
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
+ <key>com.apple.security.application-groups</key>
+ <array>
+ <string>group.systems.tranquil.Map</string>
+ </array>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
diff --git a/Map/Presentation/Preferences/GeneralPreferencesView.swift b/Map/Presentation/Preferences/GeneralPreferencesView.swift
index a70d608..b5b781d 100644
--- a/Map/Presentation/Preferences/GeneralPreferencesView.swift
+++ b/Map/Presentation/Preferences/GeneralPreferencesView.swift
@@ -25,8 +25,38 @@ struct GeneralPreferencesView: View {
@State private var showingExportFailedAlert = false
@State private var exportShouldReset = false
+ @AppStorage("quickLookPreviewStyle", store: UserDefaults(suiteName: "group.systems.tranquil.Map"))
+ private var quickLookPreviewStyle: String = UserPreferences.Defaults.quickLookPreviewStyle
+
var body: some View {
VStack(alignment: .center, spacing: Dimensions.Spacing.loose) {
+ // QuickLook section
+ HStack(alignment: .firstTextBaseline, spacing: Dimensions.Spacing.regular) {
+ Text("preferences.quick_look.title")
+ .font(.Theme.Body.emphasized)
+ .frame(maxWidth: 250, alignment: .trailing)
+
+ VStack(alignment: .leading, spacing: Dimensions.Spacing.regular) {
+
+ Text("preferences.quick_look.preview_style.title")
+ .font(.Theme.Body.regular)
+
+ Picker("", selection: $quickLookPreviewStyle) {
+ ForEach(QuickLookPreviewStyle.allCases, id: \.rawValue) { style in
+ Text(style.localizedName)
+ .tag(style.rawValue)
+ }
+ }
+ .pickerStyle(.menu)
+ .frame(maxWidth: 250)
+ .padding(.leading, -Dimensions.Spacing.regular)
+
+ }
+ .frame(maxWidth: .infinity, alignment: .leading)
+ }
+
+ Divider()
+
HStack(alignment: .firstTextBaseline, spacing: Dimensions.Spacing.regular) {
Text("preferences.general.preferences.title")
.font(.Theme.Body.emphasized)