diff --git a/OnCue/View/MainView.swift b/OnCue/View/MainView.swift index d715d84..3313f11 100644 --- a/OnCue/View/MainView.swift +++ b/OnCue/View/MainView.swift @@ -18,6 +18,8 @@ struct MainView: View { @State private var searchText = "" + @AppStorage(Preferences.themeColour) var themeColor = Color.blue.toHex()! + var body: some View { NavigationSplitView { List { @@ -52,7 +54,13 @@ struct MainView: View { private func addItem(name: String, color: String) { withAnimation { - let newProject = OCProject(name: name, color: color) + var newProject: OCProject + + if color == Color.clear.toHex()! { + newProject = OCProject(name: name, color: themeColor) + } else { + newProject = OCProject(name: name, color: color) + } modelContext.insert(newProject) } } diff --git a/OnCue/View/NewProjectForm.swift b/OnCue/View/NewProjectForm.swift index 574110e..7e650f9 100644 --- a/OnCue/View/NewProjectForm.swift +++ b/OnCue/View/NewProjectForm.swift @@ -10,28 +10,41 @@ import SwiftUI struct NewProjectForm: View { @State private var newProjectName = "" - @State private var chosenColor: Color = .blue + @State private var chosenColor = Color.clear @Environment(\.dismiss) var dismiss let completionHandler: (String, String) -> Void + let availColours: [String] = { + var c = Constants.colors.map { $0.toHex()! } + c.insert("Theme", at: 0) + return c + }() + var body: some View { NavigationView { Form { TextField("Project Name", text: $newProjectName) - Section(header: Text("Project Colour")) { + Section { HStack { - ForEach(Constants.colors, id: \.self) { clr in - ColorChooserCircle(color: clr) - .padding(.vertical) - .onTapGesture { - self.chosenColor = clr + ForEach(Constants.colors, id: \.self) { color in + if chosenColor == color { + ZStack { + Circle() + .foregroundStyle(color) + Image(systemName: "checkmark") } + .onTapGesture { chooseColour(color) } + } else { + Circle() + .foregroundStyle(color) + .onTapGesture { chooseColour(color) } + } } } - } + } header: { Text("Project Colour") } footer: { Text("Leave unselected to use theme colour in settings" )} } - .navigationTitle("Add New Project").foregroundStyle(chosenColor) + .navigationTitle("Add New Project") .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .topBarLeading) { @@ -47,16 +60,13 @@ struct NewProjectForm: View { } } } -} - -struct ColorChooserCircle: View { - var color: Color - var body: some View { - Circle() - .strokeBorder(Color.gray,lineWidth: 2) - .background(Circle().foregroundColor(color)) - .frame(minHeight: 25) + private func chooseColour(_ color: Color) { + if color == chosenColor { + chosenColor = .clear + } else { + chosenColor = color + } } } diff --git a/Shared/Constants.swift b/Shared/Constants.swift index cfdb924..131af55 100644 --- a/Shared/Constants.swift +++ b/Shared/Constants.swift @@ -9,5 +9,4 @@ import SwiftUI public struct Constants { static let colors: [Color] = [.red, .orange, .yellow, .green, .blue, .indigo] - static let colorText = ["None", "Red", "Orange", "Yellow", "Green", "Blue", "Indigo"] }