changeset 203:ca0c3d07c6d5

Add ThemePicker
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Fri, 26 Feb 2021 20:01:28 +0000
parents addb06622ec8
children 5ba104f4d4bf
files LazyBear/UI/ThemePicker.swift
diffstat 1 files changed, 54 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LazyBear/UI/ThemePicker.swift	Fri Feb 26 20:01:28 2021 +0000
@@ -0,0 +1,54 @@
+//
+//  ThemePicker.swift
+//  LazyBear
+//
+//  Created by Dennis Concepción Martín on 26/2/21.
+//
+
+import SwiftUI
+
+struct ThemePicker: View {
+    @Environment(\.managedObjectContext) private var moc
+    @State var theme: String
+    
+    var body: some View {
+        Picker("Themes", selection: $theme) {
+            ForEach(themes, id: \.name) { theme in
+                HStack {
+                    RoundedRectangle(cornerRadius: 4)
+                        .frame(width: 20, height: 20)
+                        .foregroundColor(Color("\(theme.name.lowercased())Accent"))
+                    
+                    Text(theme.name)
+                        .tag(theme.name)
+                }
+            }
+        }
+        .onChange(of: theme, perform: { theme in
+            save(change: theme)
+        })
+    }
+    
+    private func save(change: Any) {
+        let userSettings = UserSettings(context: moc)
+        userSettings.changedAt = Date()
+        userSettings.theme = change as? String
+        do {
+            try moc.save()
+            print("Settings saved")
+        } catch {
+            print(error.localizedDescription)
+        }
+    }
+}
+
+struct ThemePicker_Previews: PreviewProvider {
+    static var previews: some View {
+        NavigationView {
+            Form {
+                ThemePicker(theme: "Default")
+            }
+            .navigationBarHidden(true)
+        }
+    }
+}