123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- //
- // KMBatchOperateRemoveWatermarkViewController.swift
- // PDF Reader Pro
- //
- // Created by liujiajie on 2023/11/6.
- //
- import Cocoa
- import StoreKit
- class KMBatchOperateRemoveWatermarkViewController: KMBatchOperateBaseViewController{
-
- var isBackground: Bool = false
-
- var haveFiles: Bool = false
-
- @IBOutlet var titleLabel: NSTextField!
-
- @IBOutlet var detailLabel: NSTextField!
-
- @IBOutlet var actionButton: NSButton!
-
- @IBOutlet var bottomBaseView: NSView!
-
- override var interfaceStatus: KMBatchOperateInterfaceStatus?{
- set{
- super.interfaceStatus = newValue
- if newValue == .PrepareProcess {
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
- let files = NSMutableArray()
- for url in self.successFilePathURLArray! {
- if FileManager.default.fileExists(atPath: url.path) {
- files.add(url)
- }
- }
- if files.count > 0 {
- let workspace = NSWorkspace.shared
- workspace.activateFileViewerSelecting(files as! [URL])
- }
- }
- self.actionButton.tag = 1
- self.actionButton.title = self.isBackground ? KMLocalizedString("Remove Background", nil) : KMLocalizedString("Remove Watermark", nil)
- self.actionButton.setTitleColor(KMAppearance.Layout.w0Color())
- } else {
- self.actionButton.tag = 0
- self.actionButton.title = KMLocalizedString("Cancel", nil)
- self.actionButton.setTitleColor(KMAppearance.Layout.w0Color())
- }
- }
- get{
- return super.interfaceStatus
- }
- }
-
- deinit {
- NotificationCenter.default.removeObserver(self)
- DistributedNotificationCenter.default().removeObserver(self)
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
- localizedLanguage()
- configuUI()
- NotificationCenter.default.addObserver(self, selector: #selector(batchFilesCountNotification(notification:)), name: Notification.Name(rawValue: "KMBatchFilesCountNotification"), object: nil)
- // NotificationCenter.default.addObserver(self, selector: #selector(themeChanged(notification:)), name: Notification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
- DistributedNotificationCenter.default().addObserver(self, selector: #selector(themeChanged(notification:)), name: NSNotification.Name("AppleInterfaceThemeChangedNotification"), object: nil)
- }
-
- @IBAction func buttonClicked_RemoveWatermark(_ sender: NSButton) {
- if !self.haveFiles { return }
- if sender.tag == 1 {
- var hasTask = false
- for i in 0..<(self.files?.count ?? 0) {
- let file = self.files?[i]
- if file?.status == .Waiting && file?.fileType == .PDF {
- hasTask = true
- break
- }
- }
- if !hasTask {
- NSSound.beep()
- return
- }
- let openPanel = NSOpenPanel()
- openPanel.canChooseFiles = false
- openPanel.canChooseDirectories = true
- openPanel.canCreateDirectories = true
- openPanel.beginSheetModal(for: self.view.window!) { (result) in
- if result.rawValue == NSApplication.ModalResponse.OK.rawValue {
- for fileURL in openPanel.urls {
- self.choosePath = fileURL.path
- if self.isBackground {
- self.beginRemoveBackground()
- } else {
- self.beginRemoveWatermark()
- }
- }
- }
- }
- } else if sender.tag == 0 {
- if self.queue?.operations.count ?? 0 > 0 {
- self.queue?.cancelAllOperations()
- }
- self.interfaceStatus = .PrepareProcess
- }
- }
- @objc func batchFilesCountNotification(notification: Notification) {
- let arr: Array? = notification.object as? [KMBatchOperateFile]
- self.files? = arr ?? []
- if self.files?.count ?? 0 > 0{
- self.haveFiles = true
- } else {
- self.haveFiles = false
- }
- updateBtnStatus()
- }
- @objc func themeChanged(notification: Notification) {
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
- self.updateViewColor()
- }
- }
-
- func updateViewColor() {
- self.view.wantsLayer = true
- if KMAppearance.isDarkMode() {
- self.bottomBaseView.layer?.backgroundColor = NSColor(red: 0.149, green: 0.157, blue: 0.169, alpha: 1).cgColor
- self.view.layer?.backgroundColor = NSColor(red: 0.149, green: 0.157, blue: 0.169, alpha: 1).cgColor
- } else {
- self.bottomBaseView.layer?.backgroundColor = NSColor(red: 0.988, green: 0.992, blue: 1.000, alpha: 1).cgColor
- self.view.layer?.backgroundColor = NSColor(red: 0.988, green: 0.992, blue: 1.000, alpha: 1).cgColor
- }
- self.updateBtnStatus()
- }
-
- func localizedLanguage() {
- self.titleLabel.stringValue = self.isBackground ? KMLocalizedString("Remove Background", nil) : KMLocalizedString("Remove Watermark", nil)
- self.detailLabel.stringValue = self.isBackground ? KMLocalizedString("The PDF background remover helps you to remove images and color backgrounds from PDF files for an easy reading experience.", nil) : KMLocalizedString("PDF Reader Pro is a PDF watermark remover helping you to remove textual and image watermarks from PDF files. The quality of the final output is same as the original files.", nil)
- self.actionButton.title = self.titleLabel.stringValue
- }
-
- func configuUI() {
- self.view.wantsLayer = true
- self.view.layer?.backgroundColor = KMAppearance.Layout.l0Color().cgColor
- self.titleLabel.font = NSFont.boldSystemFont(ofSize: 14)
- self.detailLabel.font = NSFont.systemFont(ofSize: 12)
- self.titleLabel.textColor = KMAppearance.Layout.h0Color()
- self.detailLabel.textColor = KMAppearance.Layout.h1Color()
- self.actionButton.font = NSFont.systemFont(ofSize: 13)
- self.actionButton.wantsLayer = true
- self.updateBtnStatus()
- self.actionButton.layer?.cornerRadius = 1.0
-
- self.bottomBaseView.wantsLayer = true
- self.bottomBaseView.layer?.backgroundColor = KMAppearance.Layout.l0Color().cgColor
-
- self.updateViewColor()
- }
-
- func updateBtnStatus() {
- if KMAppearance.isDarkMode() {
- if self.files?.count ?? 0 > 0 {
- self.actionButton.layer!.backgroundColor = NSColor(red: 0.306, green: 0.498, blue: 0.859, alpha: 1).cgColor
- self.actionButton.setTitleColor(KMAppearance.Layout.w0Color())
- self.haveFiles = true
- } else {
- self.actionButton.setTitleColor(KMAppearance.Layout.w0Color().withAlphaComponent(0.6))
- self.actionButton.layer!.backgroundColor = NSColor(red: 0.306, green: 0.498, blue: 0.859, alpha: 0.6).cgColor
- self.haveFiles = false
- }
- } else {
- if self.files?.count ?? 0 > 0 {
- self.actionButton.layer?.backgroundColor = NSColor(red: 0.153, green: 0.235, blue: 0.384, alpha: 1).cgColor
- self.actionButton.setTitleColor(KMAppearance.Layout.w0Color())
- self.haveFiles = true
- } else {
- self.actionButton.setTitleColor(KMAppearance.Layout.w0Color().withAlphaComponent(0.6))
- self.actionButton.layer?.backgroundColor = NSColor(red: 0.153, green: 0.235, blue: 0.384, alpha: 0.6).cgColor
- self.haveFiles = false
- }
- }
- }
- func beginRemoveBackground() {
- self.hiddenWindowCloseButtonIfNeeded()
- self.successFilePathURLArray?.removeAll()
- for i in 0..<(self.files?.count ?? 0) {
- let file = self.files?[i]
- if file?.fileType == .PDF {
- file?.removeBackgroundInfo.savePath = self.choosePath
- if file?.status == .Waiting {
- let operation = KMBatchRemoveBackgroundOperation(file: file!)
- operation.delegate = self
- self.queue?.addOperation(operation)
- }
- }
- }
- if self.queue?.operations.count ?? 0 > 0 {
- self.interfaceStatus = .Processing
- }
- }
- func beginRemoveWatermark() {
- self.hiddenWindowCloseButtonIfNeeded()
- self.successFilePathURLArray?.removeAll()
- for i in 0..<(self.files?.count ?? 0) {
- let file = self.files?[i]
- if file?.fileType == .PDF {
- file?.removeWatermarkInfo.savePath = self.choosePath
- if file?.status == .Waiting {
- let operation = KMBatchRemoveWatermarkOperation(file: file!)
- operation.delegate = self
- self.queue?.addOperation(operation)
- }
- }
- }
- if self.queue?.operations.count ?? 0 > 0 {
- self.interfaceStatus = .Processing
- }
- }
- }
|