Selaa lähdekoodia

Merge branch 'develop' of git.kdan.cc:Mac_PDF/PDF_Office into develop

tangchao 1 vuosi sitten
vanhempi
commit
e36754ffd4

+ 4 - 0
PDF Office/PDF Master/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/KMBatchProcessingView.swift

@@ -126,9 +126,13 @@ extension KMBatchProcessingView: KMBatchProcessingViewAction {
     @IBAction func cleanAll(_ sender: Any) {
         if self.tableView.selectModels.count != 0 {
             self.tableView.presenter.deleteData(model: (self.tableView.selectModels.first)!)
+            self.tableView.selectModels.removeObject(self.tableView.selectModels.first!)
+            
         } else {
             self.tableView.presenter.cleanAll()
+            self.tableView.selectModels.removeAll()
         }
+        
         self.reloadData()
     }
     

+ 77 - 20
PDF Office/PDF Master/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.swift

@@ -199,6 +199,10 @@ extension KMBatchProcessingTableView: NSTableViewDelegate {
                         model.hover = false
                         let columnIndex = self.tableView.column(withIdentifier: NSUserInterfaceItemIdentifier(KMBatchProcessingTableViewOptions.delete.rawValue.description))
                         self.tableView.reloadData(forRowIndexes: IndexSet(integer: i), columnIndexes: IndexSet(integer: columnIndex))
+                        if self.tableView.rowView(atRow: i, makeIfNecessary: false) is KMBatchProcessingTableRowView {
+                            let rowView: KMBatchProcessingTableRowView = self.tableView.rowView(atRow: i, makeIfNecessary: false) as! KMBatchProcessingTableRowView
+                            rowView.reloadData()
+                        }
                     }
                     
                     if i == row {
@@ -209,6 +213,10 @@ extension KMBatchProcessingTableView: NSTableViewDelegate {
                         }
                         let columnIndex = self.tableView.column(withIdentifier: NSUserInterfaceItemIdentifier(KMBatchProcessingTableViewOptions.delete.rawValue.description))
                         self.tableView.reloadData(forRowIndexes: IndexSet(integer: i), columnIndexes: IndexSet(integer: columnIndex))
+                        if self.tableView.rowView(atRow: i, makeIfNecessary: false) is KMBatchProcessingTableRowView {
+                            let rowView: KMBatchProcessingTableRowView = self.tableView.rowView(atRow: i, makeIfNecessary: false) as! KMBatchProcessingTableRowView
+                            rowView.reloadData()
+                        }
                     }
                 }
                 
@@ -216,27 +224,45 @@ extension KMBatchProcessingTableView: NSTableViewDelegate {
         }
 
         tableRowView.rightMouseCallback = { [unowned self] (view, event) in
-            let point = view.convert(event.locationInWindow, from: nil)
-            var popViewDataArr: [String] = ["Show in Finder","Remove"]
-            let vc: KMHomePopViewController = KMHomePopViewController().initWithPopViewDataArr(popViewDataArr)
-            let createFilePopover: NSPopover = NSPopover.init()
-            createFilePopover.contentViewController = vc
-            createFilePopover.animates = true
-            createFilePopover.behavior = .semitransient
-            createFilePopover.setValue(true, forKey: "shouldHideAnchor")
-            createFilePopover.show(relativeTo: CGRect(x: point.x, y: point.y, width: 10, height: 5), of: view, preferredEdge: .maxX)
-            vc.customBoxWidthLayoutConstraint.constant = 100
-            vc.downCallback = { [unowned self](downEntered: Bool, count: String) -> Void in
-                if downEntered {
-                    if count == popViewDataArr[0] {
-                        if FileManager.default.fileExists(atPath: view.model.filePath) {
-                            NSWorkspace.shared.activateFileViewerSelecting([URL(fileURLWithPath: view.model.filePath)])
+            self.didSelectItem(shouldSelectRow: row)
+            DispatchQueue.main.async {
+                if self.tableView.rowView(atRow: row, makeIfNecessary: false) != nil {
+                    let rowView = self.tableView.rowView(atRow: row, makeIfNecessary: false)
+                    self.addRightMenu(view: rowView!, event: event)
+                }
+            }
+        }
+        
+        tableRowView.mouseDownCallback = { [unowned self] (mouseEntered, mouseBox) in
+            if data != nil {
+                for i in 0...self.data!.count - 1 {
+                    let model = self.data![i]
+                    if model.select == true {
+                        model.select = false
+                        let columnIndex = self.tableView.column(withIdentifier: NSUserInterfaceItemIdentifier(KMBatchProcessingTableViewOptions.delete.rawValue.description))
+                        self.tableView.reloadData(forRowIndexes: IndexSet(integer: i), columnIndexes: IndexSet(integer: columnIndex))
+                        if self.tableView.rowView(atRow: i, makeIfNecessary: false) is KMBatchProcessingTableRowView {
+                            let rowView: KMBatchProcessingTableRowView = self.tableView.rowView(atRow: i, makeIfNecessary: false) as! KMBatchProcessingTableRowView
+                            rowView.reloadData()
+                        }
+                    }
+                    
+                    if i == row {
+                        if mouseEntered {
+                            model.select = true
+                        } else {
+                            model.select = false
+                        }
+                        let columnIndex = self.tableView.column(withIdentifier: NSUserInterfaceItemIdentifier(KMBatchProcessingTableViewOptions.delete.rawValue.description))
+                        self.tableView.reloadData(forRowIndexes: IndexSet(integer: i), columnIndexes: IndexSet(integer: columnIndex))
+                        if self.tableView.rowView(atRow: i, makeIfNecessary: false) is KMBatchProcessingTableRowView {
+                            let rowView: KMBatchProcessingTableRowView = self.tableView.rowView(atRow: i, makeIfNecessary: false) as! KMBatchProcessingTableRowView
+                            rowView.reloadData()
                         }
-                    } else if count == popViewDataArr[1] {
-                        self.presenter.deleteData(model: view.model)
+                        self.didSelectItem(shouldSelectRow: i)
                     }
-                    createFilePopover.close()
                 }
+                
             }
         }
         return tableRowView
@@ -266,6 +292,12 @@ extension KMBatchProcessingTableView: NSTableViewDelegate {
     }
     
     func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
+        
+        print("选中3")
+        return true
+    }
+    
+    func didSelectItem(shouldSelectRow row: Int) {
         if self.data != nil {
             for item in self.data! {
                 item.select = false
@@ -279,8 +311,6 @@ extension KMBatchProcessingTableView: NSTableViewDelegate {
                 self.tableView.reloadData()
             }
         }
-        print("选中3")
-        return true
     }
 }
 
@@ -421,3 +451,30 @@ extension Array {
 protocol KMBatchProcessingTableViewDelegate: NSObject {
     func reloadData(data: [KMBatchProcessingTableViewModel])
 }
+
+extension KMBatchProcessingTableView {
+    func addRightMenu(view: NSView, event: NSEvent) {
+        let menus = NSMenu()
+        menus.addItem(withTitle: NSLocalizedString("Show in Finder", comment: ""), action: #selector(showInFinder), target: self)
+        menus.addItem(withTitle: NSLocalizedString("Remove", comment: ""), action: #selector(removeItem), target: self)
+        
+        let point = view.convert(event.locationInWindow, from: nil)
+        menus.popUp(positioning: nil, at: point, in: view)
+    }
+    
+    @objc func showInFinder(sender: KMBatchProcessingTableRowView) {
+        if self.selectModels.count != 0 {
+            let model = self.selectModels.first
+            if FileManager.default.fileExists(atPath: model!.filePath) {
+                NSWorkspace.shared.activateFileViewerSelecting([URL(fileURLWithPath: model!.filePath)])
+            }
+        }
+    }
+    
+    @objc func removeItem(sender: KMBatchProcessingTableRowView) {
+        if self.selectModels.count != 0 {
+            let model = self.selectModels.first!
+            self.presenter.deleteData(model: model)
+        }
+    }
+}

+ 3 - 3
PDF Office/PDF Master/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingNameTableCell.swift

@@ -61,15 +61,15 @@ class KMBatchProcessingNameTableCell: KMBatchProcessingTableCell {
         super.reloadData()
         self.nameLabel.stringValue = self.model.name
         
-        if self.model.name.contains("pdf") {
+        if self.model.name.contains("pdf") || self.model.name.contains("PDF") {
             self.iconImageView.image = NSImage(named: "icon_popups_file_pdf")
         }
         
-        if self.model.name.contains("png") {
+        if self.model.name.contains("png") || self.model.name.contains("PNG") {
             self.iconImageView.image = NSImage(named: "icon_popups_file_png")
         }
         
-        if self.model.name.contains("jpg") {
+        if self.model.name.contains("jpg") || self.model.name.contains("JPG") {
             self.iconImageView.image = NSImage(named: "icon_popups_file_jpg")
         }
     }

+ 38 - 14
PDF Office/PDF Master/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingTableRowView.swift

@@ -8,21 +8,21 @@
 import Cocoa
 
 typealias KMBatchProcessingTableRowViewHoverCallback = (_ mouseEntered: Bool, _ mouseBox: KMBox) -> Void
+typealias KMBatchProcessingTableRowViewMouseDownCallback = (_ mouseEntered: Bool, _ mouseBox: KMBox) -> Void
 typealias KMBatchProcessingTableRowViewRightMouseCallback = (_ view: KMBatchProcessingTableRowView, _ event: NSEvent) -> Void
 class KMBatchProcessingTableRowView: NSTableRowView {
     var model: KMBatchProcessingTableViewModel!
     var box: KMBox?
+    var mouseDownCallback: KMBatchProcessingTableRowViewMouseDownCallback?
     var hoverCallback: KMBatchProcessingTableRowViewHoverCallback?
     var rightMouseCallback: KMBatchProcessingTableRowViewRightMouseCallback?
-    var hover: Bool = false
-    var itemSelect: Bool = false
+//    var hover: Bool = false
+//    var itemSelect: Bool = false
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
         // Drawing code here.
         self.wantsLayer = true
-        self.drawLine(dirtyRect)
-        self.addBox()
-        self.drawView()
+        self.reloadData()
     }
     
     func addBox() {
@@ -42,16 +42,22 @@ class KMBatchProcessingTableRowView: NSTableRowView {
             self.box?.boxType = .custom
             self.addSubview(self.box!, positioned: NSWindow.OrderingMode.below, relativeTo: self)
             self.box?.moveCallback = { [unowned self] (mouseEntered, mouseBox) in
-                if mouseEntered {
-                    self.hover = true
-                } else {
-                    self.hover = false
-                }
-                self.needsDisplay = true
+//                if mouseEntered {
+//                    self.hover = true
+//                } else {
+//                    self.hover = false
+//                }
+//                self.needsDisplay = true
                 if self.hoverCallback != nil {
                     self.hoverCallback!(mouseEntered, self.box!)
                 }
             }
+            
+//            self.box?.downCallback = { [unowned self] (downEntered, mouseBox, event) in
+//                if self.mouseDownCallback != nil {
+//                    self.mouseDownCallback!(downEntered, self.box!)
+//                }
+//            }
         }
     }
     
@@ -69,8 +75,8 @@ class KMBatchProcessingTableRowView: NSTableRowView {
     }
     
     override func drawSelection(in dirtyRect: NSRect) {
-        self.itemSelect = true
-        self.drawView()
+//        self.itemSelect = true
+//        self.drawView()
     }
     
     func drawView(_ color: NSColor = NSColor(hex: "#CED0D4", alpha: 0.6)) {
@@ -87,10 +93,14 @@ class KMBatchProcessingTableRowView: NSTableRowView {
 //            path.fill()
 //        }
         
-        if hover || itemSelect {
+        if model.select {
             self.box?.backgroundColor(NSColor(hex: "#CED0D4", alpha: 0.6))
             self.box?.borderWidth = 1
             self.box?.layer?.cornerRadius = 4
+        } else if model.hover {
+            self.box?.backgroundColor(NSColor(hex: "#EDEEF0"))
+            self.box?.borderWidth = 1
+            self.box?.layer?.cornerRadius = 4
         } else {
             self.box?.backgroundColor(NSColor.clear)
             self.box?.borderWidth = 0
@@ -102,4 +112,18 @@ class KMBatchProcessingTableRowView: NSTableRowView {
             self.rightMouseCallback!(self, event)
         }
     }
+    
+    override func mouseDown(with event: NSEvent) {
+        super.mouseDown(with: event)
+        if self.mouseDownCallback != nil {
+            self.mouseDownCallback!(true, self.box!)
+        }
+    }
+}
+
+extension KMBatchProcessingTableRowView {
+    func reloadData() {
+        self.addBox()
+        self.drawView()
+    }
 }

+ 0 - 2
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Annotation/KMAnnotationView/KMAnnotationOutlineView.swift

@@ -254,8 +254,6 @@ extension KMAnnotationOutlineView {
     }
     
     func didSelectItem(view: KMAnnotationOutlineRowView?, event: NSEvent, isNeedDelegate: Bool = true) {
-        NSApp.mainWindow?.makeFirstResponder(self)
-        
         //当选中一个时
         if view != nil && (self.outlineView.selectedRowIndexes.count == 1 ||
                            (!event.modifierFlags.contains(NSEvent.ModifierFlags.command) &&