CSearchTitleView.swift 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. //
  2. // CSearchTitleView.swift
  3. // ComPDFKit_Tools
  4. //
  5. // Copyright © 2014-2024 PDF Technologies, Inc. All Rights Reserved.
  6. //
  7. // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  8. // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  9. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  10. // This notice may not be removed from this file.
  11. //
  12. import UIKit
  13. @objc public protocol CSearchTitleViewDelegate: AnyObject {
  14. @objc optional func searchTitleViewChangeType(_ searchTitleView: CSearchTitleView, onChange searchType: Int)
  15. }
  16. public enum CSearchTitleType: Int {
  17. case search = 0
  18. case replace
  19. }
  20. public class CSearchTitleView: UIView {
  21. public weak var pdfView: CPDFListView?
  22. private var searchItem = UIButton()
  23. private var searchLineView = UIView()
  24. private var replaceItem = UIButton()
  25. private var replaceLineView = UIView()
  26. weak var delegate: CSearchTitleViewDelegate?
  27. private var searchTitleType:CSearchTitleType = .search
  28. init(pdfView: CPDFListView) {
  29. self.pdfView = pdfView
  30. super.init(frame: .zero)
  31. self.commonInit()
  32. if searchTitleType == .replace {
  33. self.searchLineView.backgroundColor = UIColor.clear
  34. self.replaceLineView.backgroundColor = UIColor.systemBlue;
  35. } else {
  36. self.searchLineView.backgroundColor = UIColor.systemBlue
  37. self.replaceLineView.backgroundColor = UIColor.clear;
  38. }
  39. }
  40. required init?(coder: NSCoder) {
  41. fatalError("init(coder:) has not been implemented")
  42. }
  43. public override func layoutSubviews() {
  44. super.layoutSubviews()
  45. if(self.pdfView?.isEditing() == true) {
  46. let offset = 15.0
  47. searchItem.frame = CGRect(x: 0 , y: 0, width: searchItem.width, height: 38)
  48. searchLineView.frame = CGRect(x: 0 , y: 38, width: searchItem.width, height: 2)
  49. searchLineView.centerX = searchItem.centerX
  50. replaceItem.frame = CGRect(x: searchItem.width + offset , y: 0, width: replaceItem.width, height: 38)
  51. replaceLineView.frame = CGRect(x: 0 , y: 38, width: replaceItem.width, height: 2)
  52. replaceLineView.centerX = replaceItem.centerX
  53. } else {
  54. searchItem.frame = CGRect(x: 0, y: 0, width: searchItem.width, height: 40)
  55. }
  56. }
  57. func commonInit() {
  58. searchItem.setTitle(NSLocalizedString("Search", comment: ""), for: .normal)
  59. searchItem.setTitleColor(CPDFColorUtils.CFormFontColor(), for: .normal)
  60. searchItem.sizeToFit()
  61. searchLineView.backgroundColor = UIColor.clear
  62. replaceItem.setTitle(NSLocalizedString("Replace", comment: ""), for: .normal)
  63. replaceItem.setTitleColor(CPDFColorUtils.CFormFontColor(), for: .normal)
  64. replaceItem.sizeToFit()
  65. replaceLineView.backgroundColor = UIColor.clear
  66. searchItem.frame = CGRect(x: 0 , y: 0, width: searchItem.width + 20, height: 38)
  67. self.frame = CGRect(x: 0, y: 0, width: searchItem.width + 20, height: 40)
  68. addSubview(searchItem)
  69. if(self.pdfView?.isEditing() == true) {
  70. replaceItem.frame = CGRect(x: searchItem.width + 15 , y: 0, width: replaceItem.width + 20, height: 38)
  71. searchItem.addTarget(self, action: #selector(buttonItemClicked_Search(_:)), for: .touchUpInside)
  72. replaceItem.addTarget(self, action: #selector(buttonItemClicked_Replace(_:)), for: .touchUpInside)
  73. addSubview(searchLineView)
  74. addSubview(replaceItem)
  75. addSubview(replaceLineView)
  76. self.frame = CGRect(x: 0, y: 0, width: (searchItem.width) + 15.0 + (replaceItem.width), height: 35)
  77. }
  78. }
  79. // MARK: - Action
  80. @objc func buttonItemClicked_Search(_ sender: Any) {
  81. if(self.searchTitleType != .search) {
  82. self.searchTitleType = .search
  83. self.delegate?.searchTitleViewChangeType?(self, onChange: Int(CSearchTitleType.search.rawValue))
  84. self.searchLineView.backgroundColor = UIColor.systemBlue
  85. self.replaceLineView.backgroundColor = UIColor.clear;
  86. }
  87. }
  88. @objc func buttonItemClicked_Replace(_ sender: Any) {
  89. if(self.searchTitleType != .replace) {
  90. self.searchTitleType = .replace
  91. self.delegate?.searchTitleViewChangeType?(self, onChange: Int(CSearchTitleType.replace.rawValue))
  92. self.searchLineView.backgroundColor = UIColor.clear
  93. self.replaceLineView.backgroundColor = UIColor.systemBlue;
  94. }
  95. }
  96. }