Mercurial > public > lazybear
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) + } + } +}