mirror of
https://github.com/nicklockwood/SwiftFormat.git
synced 2026-06-16 10:34:34 +00:00
67 lines
1.8 KiB
Swift
67 lines
1.8 KiB
Swift
//
|
|
// ContentView.swift
|
|
// Bookworm
|
|
//
|
|
// Created by Nick Lockwood on 29/06/2020.
|
|
// Copyright © 2020 Nick Lockwood. All rights reserved.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct ContentView: View {
|
|
@Environment(\.managedObjectContext) var moc
|
|
@FetchRequest(entity: Book.entity(), sortDescriptors: [
|
|
NSSortDescriptor(keyPath: \Book.title, ascending: true),
|
|
NSSortDescriptor(keyPath: \Book.author, ascending: true),
|
|
]) var books: FetchedResults<Book>
|
|
|
|
@State private var showingAddScreen = false
|
|
|
|
var body: some View {
|
|
NavigationView {
|
|
List {
|
|
ForEach(books, id: \.self) { book in
|
|
NavigationLink(destination:
|
|
DetailView(book: book).environment(\.managedObjectContext, self.moc))
|
|
{
|
|
EmojiRatingView(rating: book.rating)
|
|
.font(.largeTitle)
|
|
|
|
VStack(alignment: .leading) {
|
|
Text(book.title ?? "Unknown title")
|
|
.font(.headline)
|
|
.foregroundColor(book.rating < 2 ? .red : .primary)
|
|
Text(book.author ?? "Unknown author")
|
|
.foregroundColor(.secondary)
|
|
}
|
|
}
|
|
}
|
|
.onDelete(perform: deleteBooks(at:))
|
|
}
|
|
.navigationBarTitle("Bookworm")
|
|
.navigationBarItems(leading: EditButton(), trailing: Button(action: {
|
|
self.showingAddScreen.toggle()
|
|
}) {
|
|
Image(systemName: "plus")
|
|
})
|
|
.sheet(isPresented: $showingAddScreen) {
|
|
AddBookView().environment(\.managedObjectContext, self.moc)
|
|
}
|
|
}
|
|
}
|
|
|
|
func deleteBooks(at offsets: IndexSet) {
|
|
for offset in offsets {
|
|
let book = books[offset]
|
|
moc.delete(book)
|
|
try? moc.save()
|
|
}
|
|
}
|
|
}
|
|
|
|
struct ContentView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
ContentView()
|
|
}
|
|
}
|