Просмотр исходного кода

【页面编辑】拖拽文档到页面编辑时,不支持的格式添加时,拖拽文件未显示弹回到原位置的系统动效(再优化)

tangchao 1 год назад
Родитель
Сommit
3e4459b613

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

@@ -196,21 +196,5 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "4547A670-ADDE-413A-9848-D7A78E387B32"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/Common/Control/KMThumbnailView.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "348"
-            endingLineNumber = "348"
-            landmarkName = "collectionView(_:acceptDrop:indexPath:dropOperation:)"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 23 - 0
PDF Office/PDF Master/Class/Common/Control/KMThumbnailView.swift

@@ -301,6 +301,29 @@ extension KMThumbnailView: NSCollectionViewDelegate {
         let pboard = draggingInfo.draggingPasteboard
         if (pboard.availableType(from: [self.localForDraggedTypes]) != nil) {
             return .move
+        } else if ((pboard.availableType(from: [.fileURL])) != nil) {
+            guard let pbItems = pboard.pasteboardItems else {
+                return NSDragOperation(rawValue: 0)
+            }
+            guard let _allowedFileTypes = self.kmAllowedFileTypes else {
+                return .generic
+            }
+            
+            var hasValidFile = false
+            for item in pbItems {
+                guard let data = item.string(forType: .fileURL), let _url = URL(string: data) else {
+                    continue
+                }
+                let type = _url.pathExtension.lowercased()
+                if (_allowedFileTypes.contains(type)) {
+                    hasValidFile = true
+                    break
+                }
+            }
+            
+            if (!hasValidFile) {
+                return NSDragOperation(rawValue: 0)
+            }
         }
         
         return .generic

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

@@ -40,8 +40,6 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     private var pdfDocument: CPDFDocument?
     var listView: CPDFView?
     
-    var windowController: NSWindowController?
-    
     var pageIsUpdate: Bool = true
     var selectedPages: [Int] = []
     
@@ -212,13 +210,6 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         return (self.pdfDocument!.page(at: UInt(getSelecteIndex())))!
     }
     
-    @objc private func insertPagesForDescSort(pages: Array<CPDFPage>, indexs: IndexSet) {
-        self.insertPages(pages: pages, at: indexs)
-        
-        /// 选中插入的页面
-        self.selectPages(indexs: indexs)
-    }
-    
     private func selectPages(indexs: IndexSet) {
         var indexpaths: Set<IndexPath> = []
         for index in indexs {
@@ -314,8 +305,10 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     override func insertPages(pages: Array<CPDFPage>, at indexs: IndexSet) {
         super.insertPages(pages: pages, at: indexs)
         
-        self.selectPages(indexs: indexs)
-        self.dealPdfDocumentDidEditCallback()
+        if (!indexs.isEmpty) {
+            self.selectPages(indexs: indexs)
+            self.dealPdfDocumentDidEditCallback()
+        }
     }
     
     override func pasteAction() {
@@ -387,9 +380,7 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         KMPageEditTools.reverse((self.listView?.document)!, indexs
         ) { result, error in
             if (result) {
-                let indexpaths = self.thumbnailView.selectionIndexPaths
-                self.refreshUI(indexpaths: self.indexsToIndexpaths(indexs: indexs))
-                self.thumbnailView.selectionIndexPaths = indexpaths
+                self.refreshUI(indexpaths: self.indexsToIndexpaths(indexs: indexs), keepSelected: true)
                 
                 self.kmUndoManager?.registerUndo(withTarget: self, selector: #selector(self.reversePages), object: indexs)
             }
@@ -532,8 +523,6 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         self.pageEditThumbnailView.zoomIn()
     }
     
-    
-    
     // MARK: menu 菜单事件
     
     @objc func item_insertCustomPage(sender: NSMenuItem?) {
@@ -608,7 +597,7 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         }
     }
     
-//    // MARK: toolBar 菜单事件
+    // MARK: toolBar 菜单事件
 
     @objc func splitMenuAction(sender: AnyObject?) {
         let model = KMPageEditSplitSettingModel()
@@ -938,7 +927,7 @@ extension KMPDFEditViewController: KMThumbnailViewDelegate {
                     insertIndex += 1
                 }
             }
-            self.insertPagesForDescSort(pages: pages, indexs: indexs)
+            self.insertPages(pages: pages, at: indexs)
         }
     }
     

+ 11 - 8
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Thumbnail/KMPDFThumbnailView.swift

@@ -208,19 +208,22 @@ extension KMPDFThumbnailView {
                 }
             }
         } else if ((pboard.availableType(from: [.fileURL])) != nil) {
+            guard let pbItems = pboard.pasteboardItems else {
+                return false
+            }
+            
             //获取url
             var array: [URL] = []
-            for item: NSPasteboardItem in pboard.pasteboardItems! {
-                let string: String = item.string(forType: NSPasteboard.PasteboardType.fileURL)!
-                guard let _url = URL(string: string) else {
-                    continue
-                }
-                guard let _allowedFileTypes = self.kmAllowedFileTypes else {
-                    array.append(_url)
+            for item in pbItems {
+                guard let data = item.string(forType: .fileURL), let _url = URL(string: data) else {
                     continue
                 }
                 let type = _url.pathExtension.lowercased()
-                if (_allowedFileTypes.contains(type)) {
+                if let _allowedFileTypes = self.kmAllowedFileTypes {
+                    if (_allowedFileTypes.contains(type)) {
+                        array.append(_url)
+                    }
+                } else {
                     array.append(_url)
                 }
             }