AutoCat2/AutoCat2Mac/Controller/SidebarController.swift

95 lines
2.3 KiB
Swift

//
// MainController.swift
// AutoCat2Mac
//
// Created by Selim Mustafaev on 15.06.2022.
//
import AppKit
enum SidebarSection: Int, CaseIterable {
case source
var name: String {
switch self {
case .source:
return "Vehicles DB"
}
}
}
enum VehicleSource: Int, CaseIterable {
case local
case remote
var name: String {
switch self {
case .local:
return "Local history"
case .remote:
return "Remote DB"
}
}
var iconName: String {
switch self {
case .local:
return "internaldrive"
case .remote:
return "externaldrive.connected.to.line.below"
}
}
}
class SidebarController: NSViewController, NSOutlineViewDataSource, NSOutlineViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - NSOutlineViewDataSource
func outlineView(_ outlineView: NSOutlineView, numberOfChildrenOfItem item: Any?) -> Int {
guard item != nil else {
return SidebarSection.allCases.count
}
if let section = item as? SidebarSection {
return VehicleSource.allCases.count
} else {
return 0
}
}
func outlineView(_ outlineView: NSOutlineView, child index: Int, ofItem item: Any?) -> Any {
guard item != nil else {
return SidebarSection.source
}
if let section = item as? SidebarSection {
return VehicleSource.allCases[index]
} else {
return SidebarSection.source
}
}
func outlineView(_ outlineView: NSOutlineView, isItemExpandable item: Any) -> Bool {
return item is SidebarSection
}
// MARK: - NSOutlineViewDelegate
func outlineView(_ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? {
if let category = item as? SidebarSection {
let cell = outlineView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "SidebarHeaderCell"), owner: nil) as? NSTableCellView
cell?.textField?.stringValue = category.name
return cell
}
return nil
}
}