// // AddView.swift // Lunch Card (iOS) // // Created by Joshua Srery on 12/18/20. // Additional code by OOPer on Apple Developer Forums // import SwiftUI struct AddView: View { @ObservedObject var cardsInfo: CardsInfo @ObservedObject var sheetInfo: SheetInfo @State var selectedCode = 0 @State var selectedColor = 0 var body: some View { NavigationView { ScrollView { VStack { CardViewV(name: cardsInfo.newCard.name, id: cardsInfo.newCard.id, code: cardsInfo.newCard.code, color: cardsInfo.newCard.color) .padding(15) TextField("Name", text: $cardsInfo.newCard.name) .textFieldStyle(RoundedBorderTextFieldStyle()) .shadow(radius: 10) ZStack { RoundedRectangle(cornerRadius: 10) .foregroundColor(.white) .shadow(radius: 10) .frame(height: 75) .overlay( RoundedRectangle(cornerRadius: 10) .stroke(lineWidth: /*@START_MENU_TOKEN@*/1.0/*@END_MENU_TOKEN@*/) .frame(height: 75) .foregroundColor(.lightGray) ) TextEditor(text: $cardsInfo.newCard.id) .frame(height: 65) .autocapitalization(.none) .disableAutocorrection(true) } Picker(selection: $selectedCode, label: Text("")) { Text("QR Code").tag(1) Text("Barcode").tag(2) }.pickerStyle(SegmentedPickerStyle()) .onAppear { switch cardsInfo.newCard.code { case "qrcode": selectedCode = 1 case "barcode": selectedCode = 2 default: break } } .onChange(of: selectedCode) { value in //print(selectedCode) switch selectedCode { case 1: //print("QR Code") cardsInfo.newCard.code = "qrcode" case 2: //print("Barcode") cardsInfo.newCard.code = "barcode" default: break } } Picker(selection: $selectedColor, label: Text("")) { Text("Indigo").tag(1) Text("Blue").tag(2) Text("Green").tag(3) Text("Red").tag(4) Text("Orange").tag(5) }.pickerStyle(SegmentedPickerStyle()) .onAppear { switch cardsInfo.newCard.color { case "IdealIndigo": selectedColor = 1 case "BigBlue": selectedColor = 2 case "GratefulGreen": selectedColor = 3 case "Roaring Red": selectedColor = 4 case "OminousOrange": selectedColor = 5 default: break } } .onChange(of: selectedColor) { value in switch selectedColor { case 1: cardsInfo.newCard.color = "IdealIndigo" case 2: cardsInfo.newCard.color = "BigBlue" case 3: cardsInfo.newCard.color = "GratefulGreen" case 4: cardsInfo.newCard.color = "RoaringRed" case 5: cardsInfo.newCard.color = "OminousOrange" default: break } } TextField("Card Name", text: $cardsInfo.newCard.cname) .textFieldStyle(RoundedBorderTextFieldStyle()) .shadow(radius: 10) Button(action: { cardsInfo.add() cardsInfo.saveCards() sheetInfo.showSheetView = false }) { Text("Create") .bold() } .disabled(self.cardsInfo.newCard.name.isEmpty self.cardsInfo.newCard.id.isEmpty self.cardsInfo.newCard.code.isEmpty self.cardsInfo.newCard.color.isEmpty self.cardsInfo.newCard.cname.isEmpty) .foregroundColor(.white) .padding() .padding(.horizontal, 100) .background(Color.accentColor) .cornerRadius(10) }.padding() .navigationTitle(cardsInfo.newCard.cname) .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .navigationBarLeading) { Button(action: { sheetInfo.showSheetView = false }) { Image(systemName: "xmark.circle") } } } } } } } extension Color { public static var lightGray: Color { return Color("lightGray") } }