AutoCat2/Shared/Views/macOS/MainViewBig.swift
2022-03-05 17:20:15 +03:00

85 lines
2.6 KiB
Swift

import SwiftUI
struct MainViewBig: View {
var body: some View {
NavigationView {
SidebarView()
Text("Master")
Text("Detail")
}
}
}
struct SidebarView: View {
@State var selection: String?
@State private var showAddPlateNumberView = false
@FetchRequest(entity: CDVehicle.entity(), sortDescriptors: []) var vehicles: FetchedResults<CDVehicle>
var body: some View {
List(selection: $selection) {
Section("History") {
NavigationLink(destination: VehiclesListView(vehicles: vehicles)) {
Label("All", systemImage: "car.2")
.badge(vehicles.count)
}
NavigationLink(destination: VehiclesListView(vehicles: vehicles.filter(\.unrecognized))) {
Label("Unreconized", systemImage: "eye.slash")
.badge(vehicles.filter(\.unrecognized).count)
}
NavigationLink(destination: VehiclesListView(vehicles: vehicles.filter(\.outdated))) {
Label("Outdated", systemImage: "wind")
.badge(vehicles.filter(\.outdated).count)
}
}
.collapsible(false)
Section("Other") {
Label("Recordings", systemImage: "waveform.path")
Label("Search", systemImage: "magnifyingglass")
}
.collapsible(false)
}
.frame(minWidth: 180)
.sheet(isPresented: $showAddPlateNumberView, onDismiss: {
print("Dismiss")
}, content: {
CheckNumberPopup()
})
.toolbar {
ToolbarItem {
Spacer()
}
ToolbarItem {
Button {
self.showAddPlateNumberView = true
} label: {
Image(systemName: "plus")
}
}
}
}
}
struct VehiclesListView<VehicleCollection>: View where VehicleCollection: RandomAccessCollection, VehicleCollection.Element == CDVehicle {
var vehicles: VehicleCollection
@State var selection: CDVehicle?
var body: some View {
List(selection: $selection) {
ForEach(vehicles, id: \.self) { vehicle in
let number = PlateNumber(vehicle.number ?? "")
PlateNumberView(number: number, unrecognized: vehicle.unrecognized, outdated: vehicle.outdated)
}
}
}
}
struct MainViewBig_Previews: PreviewProvider {
static var previews: some View {
MainViewBig()
}
}