From ee850e58d11346e205c2dce3a91f2c11d79ce95d Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Sun, 27 Feb 2022 15:08:25 -0800 Subject: [PATCH] WIP --- .../Secretive/Views/CreateSecretView.swift | 130 +++++++++++++++--- 1 file changed, 114 insertions(+), 16 deletions(-) diff --git a/Sources/Secretive/Views/CreateSecretView.swift b/Sources/Secretive/Views/CreateSecretView.swift index 5998786..39ae40d 100644 --- a/Sources/Secretive/Views/CreateSecretView.swift +++ b/Sources/Secretive/Views/CreateSecretView.swift @@ -8,33 +8,36 @@ struct CreateSecretView: View { @State private var name = "" @State private var requiresAuthentication = true + @State private var test: ThumbnailPickerView.Item = ThumbnailPickerView.Item(name: "Test", thumbnail: Text("Hello")) var body: some View { VStack { HStack { - Image(nsImage: NSApplication.shared.applicationIconImage) - .resizable() - .frame(width: 64, height: 64) - .padding() VStack { HStack { - Text("Create a New Secret").bold() + Text("Create a New Secret") + .font(.largeTitle) Spacer() } HStack { Text("Name:") - TextField("Shhhhh", text: $name).focusable() - } - HStack { - VStack(spacing: 20) { - Picker("", selection: $requiresAuthentication) { - Text("Requires Authentication (Biometrics or Password) before each use").tag(true) - Text("Authentication not required when Mac is unlocked").tag(false) - } - .pickerStyle(RadioGroupPickerStyle()) - } - Spacer() + TextField("Shhhhh", text: $name) + .focusable() } + ThumbnailPickerView(items: [ + ThumbnailPickerView.Item(name: "Requires Authentication Before Use", thumbnail: Text("")), + ThumbnailPickerView.Item(name: "Notify on Use", thumbnail: Text("")) + ], selection: $test) +// HStack { +// VStack(spacing: 20) { +// Picker("", selection: $requiresAuthentication) { +// Text("Requires Authentication (Biometrics or Password) before each use").tag(true) +// Text("Authentication not required when Mac is unlocked").tag(false) +// } +// .pickerStyle(SegmentedPickerStyle()) +// } +// Spacer() +// } } } HStack { @@ -56,6 +59,95 @@ struct CreateSecretView: View { } } +struct ThumbnailPickerView: View { + + let items: [Item] + let selection: Binding + + var body: some View { + HStack { + ForEach(items) { item in + Text(item.name) + } + } + } + +} + +extension ThumbnailPickerView { + + struct Item: Identifiable { + let id = UUID() + let name: String + let thumbnail: AnyView + + init(name: String, thumbnail: ViewType) { + self.name = name + self.thumbnail = AnyView(thumbnail) + } + } + +} + +@available(macOS 12.0, *) +struct AuthenticationView: View { + + var body: some View { + ZStack { + if let mainScreen = NSScreen.main, let imageURL = NSWorkspace.shared.desktopImageURL(for: mainScreen) { + AsyncImage(url: imageURL) { phase in + switch phase { + case .empty, .failure: + Rectangle() + .foregroundColor(Color(.systemPurple)) + case .success(let image): +// ScrollView { + image + .resizable() +// .scaleEffect(1) +// } + @unknown default: + Rectangle() + .foregroundColor(Color(.systemPurple)) + } + } + } + RoundedRectangle(cornerRadius: 15) + .aspectRatio(0.8, contentMode: .fit) + .foregroundColor(Color(.windowBackgroundColor)) + .padding() + VStack { + Spacer() + Image(systemName: "touchid") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 100) + .foregroundColor(Color(.systemRed)) + Spacer() + Text("Touch ID Prompt") + .font(.largeTitle) + .redacted(reason: .placeholder) + Spacer() + VStack { + Text("Touch ID Detail prompt.Detail two.") + .font(.title3) + Text("Touch ID Detail prompt.Detail two.") + .font(.title3) + } + .redacted(reason: .placeholder) + Spacer() + RoundedRectangle(cornerRadius: 10) + .frame(width: 275, height: 40, alignment: .center) + .foregroundColor(Color(.controlAccentColor)) + RoundedRectangle(cornerRadius: 10) + .frame(width: 275, height: 40, alignment: .center) + .foregroundColor(Color(.unemphasizedSelectedContentBackgroundColor)) + }.padding().padding() + } + } + +} + #if DEBUG struct CreateSecretView_Previews: PreviewProvider { @@ -63,6 +155,12 @@ struct CreateSecretView_Previews: PreviewProvider { static var previews: some View { Group { CreateSecretView(store: Preview.StoreModifiable(), showing: .constant(true)) + if #available(macOS 12.0, *) { + AuthenticationView().environment(\.colorScheme, .dark) + AuthenticationView().environment(\.colorScheme, .light) + } else { + // Fallback on earlier versions + } } } }