123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- //
- // 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)
- }
- }
|