123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- //
- // KMHomeRightView.swift
- // PDF Reader Pro
- //
- // Created by Niehaoyu on 2024/10/10.
- //
- import Cocoa
- class KMHomeRightView: BaseXibView {
-
- @IBOutlet var rightScrollView: NSScrollView!
- @IBOutlet var rightCollectionView: NSCollectionView!
-
- var filesHeaderView: KMHomeFilesHeaderView = KMHomeFilesHeaderView()
-
- //MARK: - func
- override func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
-
- // Drawing code here.
- }
-
- public required init?(coder decoder: NSCoder) {
- super.init(coder: decoder)
-
- }
-
- override init(frame frameRect: NSRect) {
- super.init(frame: frameRect)
- }
-
- public override func awakeFromNib() {
- super.awakeFromNib()
-
- self.configUI()
- }
-
- override func layout() {
- super.layout()
-
- rightCollectionView.reloadData()
- }
-
- func configUI() {
-
-
- rightScrollView.scrollerStyle = .overlay
-
- rightCollectionView.backgroundColors = [NSColor.clear]
- rightCollectionView.wantsLayer = true
- rightCollectionView.layer?.backgroundColor = NSColor.clear.cgColor
- rightCollectionView.delegate = self
- rightCollectionView.dataSource = self
- rightCollectionView.allowsEmptySelection = true
-
- rightCollectionView.register(KMHistoryFileThumbItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMHistoryFileThumbItem"))
- rightCollectionView.register(KMHistoryFileListItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMHistoryFileListItem"))
-
- rightCollectionView.register(KMHomeQuickToolsView.self, forSupplementaryViewOfKind: NSCollectionView.elementKindSectionHeader, withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "kmHomeQuickToolsView"))
- rightCollectionView.register(KMHomeFilesHeaderView.self, forSupplementaryViewOfKind: NSCollectionView.elementKindSectionHeader, withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "kmHomeFilesHeaderView"))
-
- rightCollectionView.register(KMHomeFilesEmptyHeaderView.self, forSupplementaryViewOfKind: NSCollectionView.elementKindSectionHeader, withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMHomeFilesEmptyHeaderView"))
- rightCollectionView.register(KMHomeFilesEmptyHeaderView.self, forSupplementaryViewOfKind: NSCollectionView.elementKindSectionFooter, withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMHomeFilesEmptyHeaderView"))
- }
-
- func reloadData() {
- self.rightCollectionView.reloadData()
-
- }
-
- private func collectionViewSelectedChanged() {
- let indexs = rightCollectionView.selectionIndexPaths
- HistoryFilesManager.manager.selectFiles.removeAll()
- if indexs.count >= 0 {
- for index in indexs {
- let url = HistoryFilesManager.manager.files[index.item]
- HistoryFilesManager.manager.selectFiles.append(url)
- }
- }
- filesHeaderView.updateDeleteButtonState()
- }
-
-
- }
- //MARK: - NSCollectionViewDelegate, NSCollectionViewDataSource
- extension KMHomeRightView: NSCollectionViewDelegate, NSCollectionViewDataSource, NSCollectionViewDelegateFlowLayout {
-
- func numberOfSections(in collectionView: NSCollectionView) -> Int {
- return 2
- }
-
- func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
- if section == 0 {
- return 0
- }
- return HistoryFilesManager.manager.files.count
- }
-
- func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
- if indexPath.item >= HistoryFilesManager.manager.files.count {
- return NSCollectionViewItem()
- }
-
- if HistoryFilesManager.manager.showMode == .Thumbnail {
- let item: KMHistoryFileThumbItem = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMHistoryFileThumbItem"), for: indexPath) as! KMHistoryFileThumbItem
-
- return item
- } else if HistoryFilesManager.manager.showMode == .List {
- let item: KMHistoryFileListItem = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMHistoryFileListItem"), for: indexPath) as! KMHistoryFileListItem
- item.fileURL = HistoryFilesManager.manager.files[indexPath.item]
- item.reloadData()
- return item
- }
- return NSCollectionViewItem()
- }
-
- func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
- if HistoryFilesManager.manager.showMode == .Thumbnail {
- return CGSize(width: 226, height: 248)
- } else if HistoryFilesManager.manager.showMode == .List {
- let width = collectionView.frame.size.width - 80
- return CGSize(width: width, height: 80)
- }
-
- return CGSize(width: 0.01, height: 0.01)
- }
-
- func collectionView(_ collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: NSCollectionView.SupplementaryElementKind, at indexPath: IndexPath) -> NSView {
-
- if kind == NSCollectionView.elementKindSectionHeader {
- if indexPath.section == 0 {
- //quick tools
- let view = collectionView.makeSupplementaryView(ofKind: kind, withIdentifier: NSUserInterfaceItemIdentifier("kmHomeQuickToolsView"), for: indexPath) as! KMHomeQuickToolsView
-
- return view
-
- } else if indexPath.section == 1 {
- //Recently
- filesHeaderView = collectionView.makeSupplementaryView(ofKind: kind, withIdentifier: NSUserInterfaceItemIdentifier("kmHomeFilesHeaderView"), for: indexPath) as! KMHomeFilesHeaderView
- filesHeaderView.delegate = self
-
- return filesHeaderView
- }
- } else if kind == NSCollectionView.elementKindSectionFooter {
- let view = collectionView.makeSupplementaryView(ofKind: kind, withIdentifier: NSUserInterfaceItemIdentifier("KMHomeFilesEmptyHeaderView"), for: indexPath) as! KMHomeFilesEmptyHeaderView
-
- return view
- }
- return NSView()
-
- }
-
- func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
- return 8
- }
-
- func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
- return 0.01
- }
-
-
- public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> NSSize {
- if section == 0 {
- return NSSize(width: collectionView.frame.size.width, height: 232)
- } else if section == 1 {
- return NSSize(width: collectionView.frame.size.width, height: 28)
- }
-
- return NSSize(width: 0, height: 0.01)
- }
-
- public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, referenceSizeForFooterInSection section: Int) -> NSSize {
- if section == 0 {
- return NSSize(width: 0, height: 40)
- }
- return NSSize(width: 0, height: 0.01)
-
- }
-
- public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, insetForSectionAt section: Int) -> NSEdgeInsets {
- return NSEdgeInsetsMake(12, 40, 0, 40)
- }
-
- func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {
- self.collectionViewSelectedChanged()
-
- }
-
- func collectionView(_ collectionView: NSCollectionView, didDeselectItemsAt indexPaths: Set<IndexPath>) {
- self.collectionViewSelectedChanged()
-
- }
-
- }
- extension KMHomeRightView: KMHomeFilesHeaderViewDelegate {
-
- func homeFilesShowModeDidUpdate(_ view: KMHomeFilesHeaderView) {
- self.reloadData()
- }
-
- func homeFilesHeaderViewDeleteButtonClicked(_ view: KMHomeFilesHeaderView) {
-
- }
- }
|