123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- //
- // KMSecurityView.swift
- // PDF Reader Pro
- //
- // Created by lizhe on 2023/11/13.
- //
- import Cocoa
- import KMComponentLibrary
- typealias KMSecurityViewBatchAction = (_ view: KMSecurityView, _ files: [KMFileAttribute]) -> Void
- typealias KMSecurityViewCancelAction = (_ view: KMSecurityView) -> Void
- typealias KMSecurityViewDoneAction = (_ view: KMSecurityView, _ model: KMSecureEncryptModel, _ files: [KMFileAttribute]) -> Void
- class KMSecurityView: BaseXibView {
-
- @IBOutlet weak var box1: NSBox!
-
- @IBOutlet var batchButton: ComponentButton!
- @IBOutlet var cancelButton: ComponentButton!
- @IBOutlet var doneButton: ComponentButton!
-
- @IBOutlet var batchWidthConst: NSLayoutConstraint!
- @IBOutlet var cancelWidthConst: NSLayoutConstraint!
- @IBOutlet var doneWidthConst: NSLayoutConstraint!
-
- @IBOutlet weak var securityContentView: KMSecurityContentView!
-
- var batchAction: KMSecurityViewBatchAction?
- var cancelAction: KMSecurityViewCancelAction?
- var doneAction: KMSecurityViewDoneAction?
-
- var openPasswordString: String?
- var ownerPasswordString: String?
-
- var files: [KMFileAttribute] = []
-
- private var model: KMSecureEncryptModel = KMSecureEncryptModel()
- var canEncrypt: Bool = false
-
- override func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
-
- // Drawing code here.
- }
-
- override func setup() {
- self.securityContentView.model = self.model
-
- updateLanguage()
- }
-
- func updateLanguage() {
- box1.fillColor = NSColor.clear
-
- batchButton.properties = ComponentButtonProperty(type: .default_tertiary,
- size: .s,
- state: .normal,
- onlyIcon: false,
- buttonText: KMLocalizedString("Batch"))
- batchButton.setTarget(self, action: #selector(batchButtonAction(_:)))
- batchWidthConst.constant = batchButton.properties.propertyInfo.viewWidth
-
- cancelButton.properties = ComponentButtonProperty(type: .default_tertiary,
- size: .s,
- state: .normal,
- onlyIcon: false,
- buttonText: KMLocalizedString("Cancel"))
- cancelButton.setTarget(self, action: #selector(cancelButtonAction(_:)))
- cancelWidthConst.constant = cancelButton.properties.propertyInfo.viewWidth
-
- doneButton.properties = ComponentButtonProperty(type: .primary,
- size: .s,
- state: .normal,
- onlyIcon: false,
- buttonText: KMLocalizedString("Encrypt"),
- keepPressState: false)
- doneButton.setTarget(self, action: #selector(doneButtonAction(_:)))
- doneWidthConst.constant = doneButton.properties.propertyInfo.viewWidth
-
- }
-
- func reloadData() {
-
- self.updateEncryptButtonEnabledState()
- }
-
- override func mouseDown(with event: NSEvent) {
- super.mouseDown(with: event)
-
- self.window?.makeFirstResponder(nil)
- }
- }
- extension KMSecurityView {
- func updateEncryptButtonEnabledState() {
- var enabled = false
- if model.openPasswordOn {
- if !model.openPassword.isEmpty {
- enabled = true
- }
- }
-
- if enabled {
- if model.ownerPasswordOn {
- if model.ownerPassword.count == 0 || (model.printAllowed && model.editAllowed) {
- enabled = false
- }
- }
- } else {
- if model.ownerPasswordOn {
- if !model.ownerPassword.isEmpty && (!model.printAllowed || !model.editAllowed) {
- enabled = true
- }
- }
- }
-
- self.canEncrypt = enabled
- if enabled {
- doneButton.properties.isDisabled = false
- } else {
- doneButton.properties.isDisabled = true
- }
- doneButton.reloadData()
- }
- }
- extension KMSecurityView {
- @objc func batchButtonAction(_ sender: Any) {
- if !IAPProductsManager.default().isAvailableAllFunction(){
- KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
- return
- }
- guard let callBack = batchAction else { return }
-
- callBack(self, files)
- }
-
- @objc func cancelButtonAction(_ sender: Any) {
- guard let callBack = cancelAction else { return }
-
- callBack(self)
- }
-
- @objc func doneButtonAction(_ sender: Any) {
- self.securityContentView.updatePasswordState()
-
- if model.ownerPassword == model.openPassword {
- let alert = NSAlert()
- alert.alertStyle = .critical
- alert.messageText = NSLocalizedString("The Open and Owner passwords cannot be the same. Please change either the Open or the Owner Password.", comment: "")
- alert.runModal()
- return
- }
-
- guard let callBack = doneAction else { return }
-
- callBack(self, model, files)
- }
- }
|