// // KMLeftSideViewController+Search.swift // PDF Reader Pro // // Created by tangchao on 2023/12/24. // import Foundation private let _kRelevanceColumnId = NSUserInterfaceItemIdentifier(rawValue: "relevance") // MARK: - Methods extension KMLeftSideViewController { func applySearchTableHeader(_ message: String) { self.findTableView.tableColumn(withIdentifier: kResultsColumnId)?.headerCell.stringValue = message self.findTableView.headerView?.needsDisplay = true self.groupedFindTableView.tableColumn(withIdentifier: _kRelevanceColumnId)?.headerCell.stringValue = message self.groupedFindTableView.headerView?.needsDisplay = true } func documentDidBeginFind() { // [leftSideController applySearchTableHeader:[NSLocalizedString(@"Searching", @"Message in search table header") stringByAppendingEllipsis]]; self.applySearchTableHeader(KMLocalizedString("Searching", "Message in search table header")) self.searchResults = [] self.groupSearchResults = [] } func documentDidEndFind() { self.applySearchTableHeader(KMLocalizedString("\(self.searchResults.count) Results", "Message in search table header")) } } // MARK: - Actions extension KMLeftSideViewController { // 显示搜索模块 func showSearchMode(_ searchString: String = "") { if self.leftView.segmentedControl.selectedSegment == 4 { } else { self.leftView.segmentedControl.selectedSegment = 4 } self.searchViewController.searchField.stringValue = searchString } func search_initSubViews() { self.findTableView.delegate = self self.findTableView.dataSource = self self.findTableView.botaDelegate = self self.findTableView.menu?.delegate = self self.findTableView.target = self self.findTableView.doubleAction = #selector(goToSelectedFindResults) self.groupedFindTableView.delegate = self self.groupedFindTableView.dataSource = self self.groupedFindTableView.botaDelegate = self self.groupedFindTableView.menu?.delegate = self self.groupedFindTableView.target = self self.groupedFindTableView.doubleAction = #selector(goToSelectedFindResults) } func search_initDefalutValue() { self.mwcFlags.wholeWordSearch = KMDataManager.ud_integer(forKey: SKWholeWordSearchKey) self.mwcFlags.caseInsensitiveSearch = KMDataManager.ud_integer(forKey: SKCaseInsensitiveSearchKey) self.findTableView.backgroundColor = KMAppearance.Layout.l0Color() self.groupedFindTableView.backgroundColor = KMAppearance.Layout.l0Color() self.findTableView.tableColumn(withIdentifier: kPageColumnId)?.headerCell.title = KMLocalizedString("Page", "Table header title") self.groupedFindTableView.tableColumn(withIdentifier: kPageColumnId)?.headerCell.title = KMLocalizedString("Page", "Table header title") (self.groupedFindTableView.tableColumn(withIdentifier: _kRelevanceColumnId)?.dataCell as? NSCell)?.isEnabled = false } } // MARK: - Menu extension KMLeftSideViewController { @objc func addAnnotationsForSelections(_ sender: NSMenuItem) { guard let selections = sender.representedObject as? [CPDFSelection], selections.count > 0 else { return } for selection in selections { self.listView.addAnnotation(with: CAnnotationType(rawValue: sender.tag) ?? .circle, selection: selection, page: selection.page, bounds: selection.bounds) } } @objc func selectSelections(_ sender: NSMenuItem) { guard let selections = sender.representedObject as? [CPDFSelection], selections.count > 0 else { return } self.listView.currentSelection = CPDFSelection.selectionByAddingSelections(selections as NSArray) } @objc func toggleWholeWordSearch(_ sender: AnyObject?) { if self.mwcFlags.wholeWordSearch == 1 { self.mwcFlags.wholeWordSearch = 0 } else { self.mwcFlags.wholeWordSearch = 1 } if self.searchField.stringValue.isEmpty == false { self.search(self.searchField) } KMDataManager.ud_set(self.mwcFlags.wholeWordSearch, forKey: SKWholeWordSearchKey) } @objc func toggleCaseInsensitiveSearch(_ sender: AnyObject?) { if self.mwcFlags.caseInsensitiveSearch == 0 { self.mwcFlags.caseInsensitiveSearch = 1 } else { self.mwcFlags.caseInsensitiveSearch = 0 } if self.searchField.stringValue.isEmpty == false { self.search(self.searchField) } KMDataManager.ud_set(self.mwcFlags.caseInsensitiveSearch, forKey: SKCaseInsensitiveSearchKey) } }