60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
| //
 | |
| //  WordView.swift
 | |
| //  WordAX
 | |
| //
 | |
| //  Created by Oliver Hnát on 24.02.2024.
 | |
| //
 | |
| 
 | |
| import SwiftUI
 | |
| import UIKit
 | |
| import CoreData
 | |
| 
 | |
| struct FlashCardView: View {
 | |
|     var flashcard: Flashcard
 | |
|     @Binding var showDescription: Bool
 | |
|     @Environment(\.colorScheme) var colorScheme
 | |
|     
 | |
|     
 | |
|     var body: some View {
 | |
|         let flashcardText = Text(flashcard.name ?? "Unknown")
 | |
|             .font(.title)
 | |
|             .bold()
 | |
|         VStack {
 | |
|             // TODO: Figure out if this and create/edit menu could be more similar?
 | |
|             if flashcard.lastSeenOn != nil {
 | |
|                 Text("Last seen: " + Miscellaneous.dateFormatter.string(from: flashcard.lastSeenOn!))
 | |
|                     .font(.subheadline)
 | |
|             }
 | |
|             if showDescription {
 | |
|                 // TODO: Add more information here
 | |
|                 if flashcard.shownCount != 0 {
 | |
|                     Text("Already seen: \(flashcard.shownCount) \(flashcard.shownCount == 1 ? "time" : "times")")
 | |
|                         .padding(.bottom)
 | |
|                 }
 | |
|                 flashcardText
 | |
|                     .textSelection(.enabled)
 | |
|                 Divider()
 | |
|                     .background(colorScheme == .light ? Color.black : Color.white)
 | |
|                     .padding(.horizontal)
 | |
|                 Text(flashcard.desc ?? "No description added")
 | |
|                     .multilineTextAlignment(.center)
 | |
|             } else {
 | |
|                 flashcardText
 | |
|             }
 | |
|         }
 | |
|         .padding([.horizontal, .top])
 | |
|         .frame(maxWidth: .infinity, maxHeight: .infinity)
 | |
|         .contentShape(Rectangle())
 | |
|         .onTapGesture {
 | |
|             self.showDescription = true
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| #Preview {
 | |
|     @State var showDescription = true
 | |
|     let flashcard = try? DataController.preview.viewContext.fetch(Flashcard.fetchRequest()).first
 | |
|     return FlashCardView(flashcard: flashcard!, showDescription: $showDescription)
 | |
|         .environment(\.managedObjectContext, DataController.preview.container.viewContext)
 | |
| }
 |