Bladeren bron

【BOTA】缩略图列表数据模型整理

tangchao 11 maanden geleden
bovenliggende
commit
f929c9ad3e

+ 10 - 2
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Thumbnail.swift

@@ -37,7 +37,6 @@ extension KMLeftSideViewController {
     
     public func reloadThumbnailSize() {
         let defaultSize = roundf(KMPreference.shared.thumbPageSize)
-//            var thumbnailSize = (defaultSize < TINY_SIZE + FUDGE_SIZE) ? TINY_SIZE : (defaultSize < SMALL_SIZE + FUDGE_SIZE) ? SMALL_SIZE : (defaultSize < LARGE_SIZE + FUDGE_SIZE) ? LARGE_SIZE : HUGE_SIZE
         var thumbnailSize = TINY_SIZE
         if defaultSize < TINY_SIZE + FUDGE_SIZE {
             
@@ -100,7 +99,8 @@ extension KMLeftSideViewController {
     }
     
     func thumb_selectRowIndexsIfNeed(_ indexs: IndexSet) {
-        if self.type.methodType != .Thumbnail && self.mainViewController.isReadMode == false {
+        let isReadMode = self.mainViewController?.isReadMode ?? false
+        if self.type.methodType != .Thumbnail && isReadMode == false {
             return
         }
         
@@ -154,6 +154,14 @@ extension KMLeftSideViewController {
     func thumb_fetchSelectedRows() -> [Int]? {
         return self.thumbnailTableView.selectedRowIndexes.sorted()
     }
+    
+    func updateThumbnailSelection() {
+        let pageIndex = self.listView.currentPageIndex
+        self.updatingThumbnailSelection = true
+        self.thumbnailTableView.km_safe_selectRowIndexes(IndexSet(integer: pageIndex), byExtendingSelection: false)
+        self.thumbnailTableView.scrollRowToVisible(pageIndex)
+        self.updatingThumbnailSelection = false
+    }
 }
 
 // MARK: - Others

+ 13 - 58
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift

@@ -271,6 +271,7 @@ class KMLeftSideViewController: KMSideViewController {
     }()
     var dragIn = false
     var dragedIndexPaths: [Int] = []
+    var updatingThumbnailSelection = false
     
     override func loadView() {
         super.loadView()
@@ -366,11 +367,6 @@ class KMLeftSideViewController: KMSideViewController {
             }
         }
         
-//        self.button.setHelp(KMLocalizedString("View Thumbnails", "Tool tip message"), for: KMLeftSidePaneState.thumbnail.rawValue)
-//        self.button.setHelp(KMLocalizedString("View Outline", "Tool tip message"), for: KMLeftSidePaneState.outline.rawValue)
-//        self.alternateButton.setHelp(KMLocalizedString("Separate search results", "Tool tip message"), for: KMFindPaneState.singular.rawValue)
-//        self.alternateButton.setHelp(KMLocalizedString("Group search results by page", "Tool tip message"), for: KMFindPaneState.grouped.rawValue)
-        
         let menu = NSMenu()
         _ = menu.addItem(title: KMLocalizedString("Whole Words Only", "Menu item title"), action: #selector(toggleWholeWordSearch), target: self)
         _ = menu.addItem(title: KMLocalizedString("Ignore Case", "Menu item title"), action: #selector(toggleCaseInsensitiveSearch), target: self)
@@ -454,7 +450,7 @@ class KMLeftSideViewController: KMSideViewController {
         frame.size.height = self.snapshotTableView.enclosingScrollView?.superview?.frame.size.height ?? 0
         self.snapshotTableView.enclosingScrollView?.frame = frame
         
-//        [self updateThumbnailSelection];
+        self.updateThumbnailSelection()
     }
     
     func displayFindViewAnimating(_ animate: Bool) {
@@ -693,47 +689,15 @@ class KMLeftSideViewController: KMSideViewController {
     }
     
     func resetThumbnails() {
-//        [self willChangeValueForKey:THUMBNAILS_KEY];
-//        self.thumbnailCacheSize = 160
         self.thumbnails.removeAll()
-        let pageLabels = self.listView.document.pageLabels()
+        let pageLabels = self.listView?.document?.pageLabels() ?? []
         if (pageLabels.isEmpty == false) {
-            let isLocked = self.listView.document.isLocked
-            let firstPage = self.listView.document.page(at: 0)
-            let emptyPage = CPDFPage()
-            let firstFrame = firstPage?.bounds(for: .cropBox) ?? .zero
-            let firstFrame2 = firstPage?.bounds(for: .mediaBox) ?? .zero
-            emptyPage.setBounds(firstFrame, for: .cropBox)
-            emptyPage.setBounds(firstFrame2, for: .mediaBox)
-            emptyPage.rotation = firstPage?.rotation ?? 0
-            
-            let pageImage = firstPage?.thumbnail(of: NSMakeSize(self.thumbnailCacheSize, self.thumbnailCacheSize))
-//            NSImage * = [emptyPage thumbnailWithSize:thumbnailCacheSize forBox:[pdfView displayBox]];
-            var rect: NSRect = .zero
-            rect.size = pageImage?.size ?? .zero
-            let width = 1.2 * fmin(NSWidth(rect), NSHeight(rect))
-            rect = NSInsetRect(rect, 0.5 * (NSWidth(rect) - width), 0.5 * (NSHeight(rect) - width));
-            
-            pageImage?.lockFocus()
-//            NSImage(named: NSImage.applicationIconName)?.draw(in: rect, from: .zero, operation: .sourceOver, fraction: 0.5)
-            if (isLocked) {
-                NSWorkspace.shared.icon(forFileType: NSFileTypeForHFSTypeCode(OSType(kLockedBadgeIcon))).draw(in: rect, from: .zero, operation: .sourceOver, fraction: 0.5)
-                //                [[[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kLockedBadgeIcon)] drawInRect:rect fromRect:NSZeroRect operation:NSCompositingOperationSourceOver fraction:0.5];
-            }
-            pageImage?.unlockFocus()
-            
             for (i, label) in pageLabels.enumerated() {
-                let firstPage = self.listView.document.page(at: UInt(i))
-                let size = NSMakeSize(self.thumbnailCacheSize, self.thumbnailCacheSize)
-//                let pageImage = firstPage!.thumbnail(of: size)
                 let thumbnail = KMThumbnail(image: nil, label: label, pageIndex: i)
-                //                thumbnail.delegate = self
                 thumbnail.dirty = true
                 self.thumbnails.append(thumbnail)
             }
         }
-//        [self didChangeValueForKey:THUMBNAILS_KEY];
-//        [self allThumbnailsNeedUpdate];
         
         DispatchQueue.main.async {
             let ris = self.thumbnailTableView.selectedRowIndexes
@@ -874,11 +838,8 @@ extension KMLeftSideViewController: KMBotaTableViewDelegate {
                     return
                 }
                 for page in self._copysPages.reversed() {
-//                    if let newPage = page.copy() as? CPDFPage {
-                        self.listView.document.insertPageObject(page, at: index)
-//                    }
+                    self.listView.document.insertPageObject(page, at: index)
                     self.listView.layoutDocumentView()
-//                    [pageLabels setArray:[[pdfView document] pageLabels]];
                     self.resetThumbnails()
                     let pageIndex = min(index, self.listView.document.pageCount-1)
                     self.listView.go(toPageIndex: Int(pageIndex), animated: true)
@@ -1178,7 +1139,7 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
                 cell.sizeLabel.isHidden = true
             }
             cell.sizeTopConstant.constant = cell.sizeLabel.isHidden ? -cell.sizeLabel.frame.size.height : 0
-            if(self.thumbnailTableView.selectedRowIndexes.contains(row)) {
+            if (self.thumbnailTableView.selectedRowIndexes.contains(row)) {
                 cell.isSelectCell = true
             } else {
                 cell.isSelectCell = false
@@ -1225,7 +1186,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
     func tableView(_ tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
         if tableView.isEqual(to: self.thumbnailTableView) {
             let scaling = KMDataManager.ud_float(forKey: Self.Key.thumbSizeScaling)
-//            let thumbnailSize = self.thumbnails[row].size
             let thumbnailSize = NSMakeSize(self.thumbnailCacheSize, self.thumbnailCacheSize)
             
             let newScaling: CGFloat = scaling.cgFloat + 0.1
@@ -1319,7 +1279,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
         } else if self.groupedFindTableView.isEqual(to: notification.object) {
             //            [self updateFindResultHighlightsForDirection:NSDirectSelection];
         } else if self.thumbnailTableView.isEqual(to: notification.object) {
-//            if (mwcFlags.updatingThumbnailSelection == 0) {
             let row = self.thumbnailTableView.selectedRow
             let curPage = self.listView.document.index(for: self.listView.currentPage())
             
@@ -1396,8 +1355,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
             let url = NSKeyedUnarchiver.unarchiveObject(with: urlData) as? String
             if url != nil && url != self.listView.document.documentURL.absoluteString {
                 if (pasteboard.availableType(from: [.fileURL]) != nil) {
-                    //                if ([pasteboard availableTypeFromArray:[NSArray arrayWithObject:NSFilenamesPboardType]]){
-                    //                    NSArray *fileNames = [pasteboard propertyListForType:NSFilenamesPboardType];
                     var fileNames = pasteboard.propertyList(forType: .fileURL) as? [String] ?? []
                     if (fileNames.count == 1) {
                         let path = fileNames.first ?? ""
@@ -1421,7 +1378,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
                                 }
                             } else {
                                 for i in 0 ..< (pdf?.pageCount ?? 0) {
-                                    //                                    PDFPage *page = [[pdf pageAtIndex:i] copy];
                                     var page = pdf?.page(at: i)
                                     self.listView.document.insertPageObject(page, at: UInt(index))
                                     insertIndexSet.insert(index)
@@ -1452,7 +1408,7 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
                 toPageIndex = Int(self.listView.document.pageCount)
             }
             for i in 0 ..< pages.count {
-                var page = pages[i]
+                let page = pages[i]
                 self.listView.document.insertPageObject(page, at: UInt(toPageIndex+i))
                 pageIndex += 1
                 self.listView.go(toPageIndex: toPageIndex+i, animated: false)
@@ -1476,8 +1432,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
                     }
                 }
             }
-            //            [[[[self document] undoManager] prepareWithInvocationTarget:self] undoClick];
-            //            [self.pageLabels setArray:[[self.pdfView document] pageLabels]];
             self.listView.layoutDocumentView()
             self.resetThumbnails()
         } else if pasteboard.availableType(from: [.fileURL]) != nil && tableView.isEqual(to: self.thumbnailTableView) {
@@ -1736,12 +1690,13 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
                     self.listView.document.removePage(at: IndexSet(integer: idx))
                 }
             }
-            self.listView.layoutDocumentView()
-//            [pageLabels setArray:[[pdfView document] pageLabels]];
-            self.resetThumbnails()
-            let idx = rowIndexes.first ?? -1
-            let index = min(idx, Int(self.listView.document.pageCount)-1)
-            self.listView.go(toPageIndex: index, animated: false)
+            if rowIndexes.isEmpty == false {
+                self.listView.layoutDocumentView()
+                self.resetThumbnails()
+                let idx = rowIndexes.first ?? -1
+                let index = min(idx, Int(self.listView.document.pageCount)-1)
+                self.listView.go(toPageIndex: index, animated: false)
+            }
         }
     }
     

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

@@ -10,9 +10,8 @@ import Cocoa
 class KMSideViewController: NSViewController {
     var isAnimating = false
     var listView : CPDFListView!
-    var mainViewController : KMMainViewController!
+    weak var mainViewController : KMMainViewController?
     
-//    @IBOutlet weak var mainController: KMMainWindowController!
 //    @IBOutlet weak var gradientView: SKGradientView!
     @IBOutlet weak var button: NSSegmentedControl!
     @IBOutlet weak var alternateButton: NSSegmentedControl!

+ 0 - 33
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -3816,16 +3816,6 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
             }
         }
         
-        if(type != .ScanOCR) {
-//            if ((self.documentAIViewController?.view.superview) != nil) {
-//                self.listView.isHidden = false
-//                self.documentAIViewController?.creatRecognitionDocument()
-//                self.documentAIViewController?.view .removeFromSuperview()
-//                self.documentAIViewController = nil;
-//                self.listView.layoutDocumentView()
-//            }
-        }
-        
         if(type != .Form) {
             formAlertView?.removeFromSuperview()
             formAlertView = nil
@@ -3837,29 +3827,6 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
             } else {
                 self.enterPageEdit(pages)
             }
-        } else if(type == .ScanOCR) {
-//            if((self.documentAIViewController?.view.superview) != nil) {
-//                let alert = NSAlert()
-//                alert.messageText = NSLocalizedString("If you need to edit again after exit, you need to re-execute OCR recognition, sure you want to exit?", comment: "")
-//                alert.addButton(withTitle: "YES")
-//                alert.addButton(withTitle: "NO")
-//                let result = alert.runModal()
-//                if (result == .alertFirstButtonReturn) { /// 取消
-//                    self.listView.isHidden = false
-//                    self.documentAIViewController?.creatRecognitionDocument()
-//                    self.documentAIViewController?.view .removeFromSuperview()
-//                    self.documentAIViewController = nil;
-//                    self.listView.layoutDocumentView()
-//                } else {
-//                    self.toolbarController.toolbarType = .ScanOCR
-//                }
-//            } else {
-//                self.documentAIViewController = KMDocumentAIViewController(pdfView: self.listView)
-//                self.PDFContendView.addSubview(self.documentAIViewController?.view ??  KMDocumentAIViewController().view);
-//                self.documentAIViewController?.view.frame = self.PDFContendView.bounds
-//                self.documentAIViewController?.view.autoresizingMask = NSView.AutoresizingMask([.width,.height])
-//                self.listView.isHidden = true //不影藏的话会出现鼠标事件的崩溃
-//            }
         } else if type == .editPDF {
             self.listView.annotationType = .editTextImage
         } else if type == .Annatiton {