summaryrefslogtreecommitdiff
path: root/Jel/Controllers/SettingsController.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Jel/Controllers/SettingsController.swift')
-rw-r--r--Jel/Controllers/SettingsController.swift44
1 files changed, 44 insertions, 0 deletions
diff --git a/Jel/Controllers/SettingsController.swift b/Jel/Controllers/SettingsController.swift
new file mode 100644
index 0000000..2b912c4
--- /dev/null
+++ b/Jel/Controllers/SettingsController.swift
@@ -0,0 +1,44 @@
+//
+// SettingsController.swift
+// Jel
+//
+// Created by zerocool on 12/13/23.
+//
+
+import Foundation
+
+enum AppearanceState: Int, CaseIterable, Identifiable, CustomStringConvertible {
+ case automatic
+ case light
+ case dark
+
+ var id: Self { self }
+
+ var description: String {
+ switch self {
+ case .light:
+ return "Light"
+ case .dark:
+ return "Dark"
+ case .automatic:
+ return "Automatic"
+ }
+ }
+}
+
+class SettingsController: ObservableObject {
+ static let shared: SettingsController = SettingsController()
+
+ @Published var appearance: AppearanceState = .automatic
+
+ private let defaults = UserDefaults.standard
+
+ func save() {
+ defaults.set(self.appearance.rawValue, forKey: "Settings_appearance")
+ }
+
+ func load() {
+ let oldAppearance = defaults.integer(forKey: "Settings_appearance")
+ self.appearance = AppearanceState(rawValue: oldAppearance) ?? .automatic
+ }
+}