/ 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 }