Browse Source

综合-PDF缩略图整理代码(已完成)

tangchao 1 year ago
parent
commit
c20e71ee3d

+ 16 - 0
PDF Office/PDF Master.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -772,5 +772,21 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "4D954E4F-BA5A-4FA0-8CAE-A120CA85CBEE"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/PDFWindowController/Side/LeftSide/Thumbnail/KMPDFThumbnailItem.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "131"
+            endingLineNumber = "131"
+            landmarkName = "isSelected"
+            landmarkType = "24">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 29 - 2
PDF Office/PDF Master/Class/Common/Control/KMThumbnailView.swift

@@ -79,6 +79,27 @@ import Cocoa
         }
     }
     
+    var selectionIndexPaths: Set<IndexPath> {
+        get {
+            return self.collectionView.selectionIndexPaths
+        }
+        set {
+            var indexpaths: Set<IndexPath> = []
+            for indexpath in newValue {
+                if (indexpath.section >= self.collectionView.numberOfSections) {
+                    continue
+                }
+                if (indexpath.item >= self.collectionView.numberOfItems(inSection: indexpath.section)) {
+                    continue
+                }
+                
+                indexpaths.insert(indexpath)
+            }
+            
+            self.collectionView.selectionIndexPaths = indexpaths
+        }
+    }
+    
     // MARK: - Publick Methods
     
     public func initDefaultValue() {
@@ -109,9 +130,15 @@ import Cocoa
     
     // MARK: - 刷新UI
     
-    public func reloadData(indexs: Set<IndexPath> = NSSet() as! Set<IndexPath>) {
+    public func reloadData(indexs: Set<IndexPath> = []) {
         if (indexs.count == 0) {
-            self.collectionView.reloadData()
+            if (Thread.isMainThread) {
+                self.collectionView.reloadData()
+            } else {
+                DispatchQueue.main.async {
+                    self.collectionView.reloadData()
+                }
+            }
         } else {
             var indexpaths: Set<IndexPath> = []
             for index in indexs {

+ 2 - 2
PDF Office/PDF Master/Class/PDFTools/PageEdit/Controller/KMPDFEditViewController.swift

@@ -378,7 +378,7 @@ class KMPDFEditViewController: NSViewController {
             for index in indexs {
                 indexpaths.insert(IndexPath(item: index, section: 0))
             }
-            self.thumbnailView.refreshUI(indexs: indexpaths)
+            self.thumbnailView.reloadData(indexs: indexpaths)
         } else {
             DispatchQueue.main.async {
                 self.listView?.layoutDocumentView()
@@ -387,7 +387,7 @@ class KMPDFEditViewController: NSViewController {
                 for index in indexs {
                     indexpaths.insert(IndexPath(item: index, section: 0))
                 }
-                self.thumbnailView.refreshUI(indexs: indexpaths)
+                self.thumbnailView.reloadData(indexs: indexpaths)
             }
         }
     }

+ 22 - 49
PDF Office/PDF Master/Class/PDFTools/PageEdit/View/KMPageEditThumbnailView.swift

@@ -9,31 +9,18 @@ import Cocoa
 
 typealias KMPageEditThumbnailViewSelectionDidChange = (_ selectedIndexs: Set<IndexPath>) -> ()
 class KMPageEditThumbnailView: KMPDFThumbnailView {
-    
-    var selectionDidChange: KMPageEditThumbnailViewSelectionDidChange!
+    var selectionDidChange: KMPageEditThumbnailViewSelectionDidChange?
     
     private let defaultItemSize = NSMakeSize(208, 294)
-    private var defaultThumbnailSzie: NSSize!
+    private var defaultThumbnailSzie: NSSize?
     
-    var selectionIndexPaths: Set<IndexPath> {
+    override var selectionIndexPaths: Set<IndexPath> {
         get {
-            return self.collectionView.selectionIndexPaths
+            return super.selectionIndexPaths
         }
         set {
-            var indexpaths: Set<IndexPath> = []
-            for indexpath in newValue {
-                if (indexpath.section >= self.collectionView.numberOfSections) {
-                    continue
-                }
-                if (indexpath.item >= self.collectionView.numberOfItems(inSection: indexpath.section)) {
-                    continue
-                }
-                
-                indexpaths.insert(indexpath)
-            }
-            
-            self.collectionView.selectionIndexPaths = indexpaths
-            
+            super.selectionIndexPaths = newValue
+
             // 通知外面
             guard let callback = self.selectionDidChange else {
                 return
@@ -45,70 +32,56 @@ class KMPageEditThumbnailView: KMPDFThumbnailView {
     override func initDefaultValue() {
         super.initDefaultValue()
         
-        self.collectionView.allowsMultipleSelection = true
-        self.register(KMPageEditThumbnailItem.self)
-        self.collectionView.registerForDraggedTypes([NSPasteboard.PasteboardType(rawValue: "localForDraggedTypes"), .fileURL,.string,.pdf])
-        self.collectionView.setDraggingSourceOperationMask([.copy, .delete], forLocal: false)
-        
         self.itemSize = NSMakeSize(208, 294)
-        
         self.defaultThumbnailSzie = self.thumbnailSzie
         self.isShowPageSize = true
+        
+        self.register(KMPageEditThumbnailItem.self)
+        self.collectionView.allowsMultipleSelection = true
     }
     
     func selectPages(at indexpaths: Set<IndexPath>) {
         self.selectionIndexPaths = indexpaths
     }
     
-    public func refreshUI(indexs: Set<IndexPath> = []) {
-        if (Thread.isMainThread) {
-            if (indexs.isEmpty) {
-                self.reloadData()
-            } else {
-                self.reloadData(indexs: indexs)
-            }
-        } else {
-            DispatchQueue.main.async {
-                if (indexs.isEmpty) {
-                    self.reloadData()
-                } else {
-                    self.reloadData(indexs: indexs)
-                }
-            }
-        }
+    public func canZoomOut() -> Bool {
+        return self.itemSize.width <= self.defaultItemSize.width
     }
     
     public func zoomOut() {
-        if (self.itemSize.width > self.defaultItemSize.width) {
+        if (self.canZoomOut() == false) {
             return
         }
         if (self.itemSize.width < self.defaultItemSize.width) {
             self.itemSize = self.defaultItemSize
-            self.thumbnailSzie = self.defaultThumbnailSzie
+            self.thumbnailSzie = self.defaultThumbnailSzie!
         } else if (self.itemSize.width == self.defaultItemSize.width) {
             self.itemSize = NSSize(width: self.defaultItemSize.width*1.5, height: self.defaultItemSize.height*1.5)
-            self.thumbnailSzie = NSSize(width: self.defaultThumbnailSzie.width*1.5, height: self.defaultThumbnailSzie.height*1.5)
+            self.thumbnailSzie = NSSize(width: self.defaultThumbnailSzie!.width*1.5, height: self.defaultThumbnailSzie!.height*1.5)
         }
         
         let indexpaths = self.collectionView.selectionIndexPaths
-        self.refreshUI()
+        self.reloadData()
         self.collectionView.selectionIndexPaths = indexpaths
     }
     
+    public func canZoomIn() -> Bool {
+        return self.itemSize.width >= self.defaultItemSize.width
+    }
     public func zoomIn() {
-        if (self.itemSize.width < self.defaultItemSize.width) {
+        if (self.canZoomIn() == false) {
             return
         }
         if (self.itemSize.width > self.defaultItemSize.width) {
             self.itemSize = self.defaultItemSize
-            self.thumbnailSzie = self.defaultThumbnailSzie
+            self.thumbnailSzie = self.defaultThumbnailSzie!
         } else if (self.itemSize.width == self.defaultItemSize.width) {
             self.itemSize = NSSize(width: self.defaultItemSize.width*0.5, height: self.defaultItemSize.height*0.5)
-            self.thumbnailSzie = NSSize(width: self.defaultThumbnailSzie.width*0.5, height: self.defaultThumbnailSzie.height*0.5)
+            self.thumbnailSzie = NSSize(width: self.defaultThumbnailSzie!.width*0.5, height: self.defaultThumbnailSzie!.height*0.5)
         }
         
         let indexpaths = self.collectionView.selectionIndexPaths
-        self.refreshUI()
+        self.reloadData()
         self.collectionView.selectionIndexPaths = indexpaths
     }
 }

+ 1 - 2
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Thumbnail/KMPDFThumbnailView.swift

@@ -31,13 +31,12 @@ class KMPDFThumbnailView: KMThumbnailView {
         
         self.thumbnailSzie = CGSize(width: 120, height: 155)
         self.minimumLineSpacing = 8
+        self.register(KMPDFThumbnailItem.self)
     }
     
     override func initSubViews() {
         super.initSubViews()
         
-        self.register(KMPDFThumbnailItem.self)
-        
         self.markerLineView.wantsLayer = true
         self.markerLineView.layer?.backgroundColor = NSColor(hex: "#1770F4").cgColor
         self.markerLineView.frame = CGRectMake(0, 0, 100, 2)