/ BalanceKit / AppearanceSettings.swift
AppearanceSettings.swift
 1  //
 2  //  AppearanceSettings.swift
 3  //  BalanceKit
 4  //
 5  //  Created by Alexander Kunau on 31.10.24.
 6  //
 7  
 8  import SwiftUI
 9  
10  // Verschiedene Erscheinungsmodi, die der Benutzer wählen kann
11  enum AppearanceMode: String, CaseIterable, Identifiable, Codable {
12      case system = "System"
13      case light = "Hell"
14      case dark = "Dunkel"
15      
16      var id: String { self.rawValue }
17      
18      var colorScheme: ColorScheme? {
19          switch self {
20          case .system:
21              return nil
22          case .light:
23              return .light
24          case .dark:
25              return .dark
26          }
27      }
28      
29      var icon: String {
30          switch self {
31          case .system:
32              return "iphone"
33          case .light:
34              return "sun.max.fill"
35          case .dark:
36              return "moon.fill"
37          }
38      }
39  }
40  
41  // Diese Klasse verwaltet die Erscheinungseinstellungen der App
42  class AppearanceSettings: ObservableObject {
43      @Published var appearanceMode: AppearanceMode {
44          didSet {
45              save()
46          }
47      }
48      
49      private let saveKey = "AppearanceMode"
50      
51      init() {
52          // Lade den gespeicherten Modus, standardmäßig "System"
53          if let savedModeRawValue = UserDefaults.standard.string(forKey: saveKey),
54             let savedMode = AppearanceMode(rawValue: savedModeRawValue) {
55              appearanceMode = savedMode
56          } else {
57              appearanceMode = .system
58          }
59      }
60      
61      private func save() {
62          UserDefaults.standard.set(appearanceMode.rawValue, forKey: saveKey)
63      }
64  }