Explorar o código

【左边栏】缩略图列表补充command和shift的代理事件

tangchao hai 1 ano
pai
achega
3924f180e4

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

@@ -494,8 +494,8 @@
             filePath = "PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1371"
-            endingLineNumber = "1371"
+            startingLineNumber = "1372"
+            endingLineNumber = "1372"
             landmarkName = "leftSideViewMoreButtonAction(_:)"
             landmarkType = "7">
          </BreakpointContent>

+ 75 - 71
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift

@@ -802,6 +802,7 @@ class KMLeftSideViewController: KMSideViewController {
         
         self.thumbnailTableView.delegate = self
         self.thumbnailTableView.dataSource = self
+        self.thumbnailTableView.thumbDelegate = self
         self.thumbnailTableView.allowsMultipleSelection = true
         self.findTableView.delegate = self
         self.findTableView.dataSource = self
@@ -1805,18 +1806,6 @@ extension KMLeftSideViewController: KMBotaTableViewDelegate {
     }
     
     /*
-
-     - (NSUInteger)tableView:(NSTableView *)tv highlightLevelForRow:(NSInteger)row {
-         if ([tv isEqual:leftSideController.thumbnailTableView]) {
-             NSUInteger i, iMax = [lastViewedPages count];
-             for (i = 0; i < iMax; i++) {
-                 if (row == (NSInteger)[lastViewedPages pointerAtIndex:i])
-                     return i;
-             }
-         }
-         return NSNotFound;
-     }
-
      - (NSArray *)tableView:(NSTableView *)tv typeSelectHelperSelectionStrings:(SKTypeSelectHelper *)typeSelectHelper {
          if ([tv isEqual:leftSideController.thumbnailTableView]) {
              return pageLabels;
@@ -1842,6 +1831,80 @@ extension KMLeftSideViewController: KMBotaTableViewDelegate {
     
 }
 
+// MARK: - KMThumbnailTableViewDelegate
+
+extension KMLeftSideViewController: KMThumbnailTableViewDelegate {
+    func tableView(_ tableView: NSTableView, highlightLevelForRow row: Int) -> UInt {
+        if tableView.isEqual(to: self.thumbnailTableView) {
+//            NSUInteger i, iMax = [lastViewedPages count];
+//            for (i = 0; i < iMax; i++) {
+//                if (row == (NSInteger)[lastViewedPages pointerAtIndex:i])
+//                    return i;
+//            }
+        }
+        return UInt.max
+    }
+    
+    func tableView(_ tableView: NSTableView, commandSelectRow rowIndex: Int) -> Bool {
+        if tableView.isEqual(to: self.thumbnailTableView) {
+    //        NSRect rect = [[[pdfView document] pageAtIndex:row] boundsForBox:kPDFDisplayBoxCropBox];
+    //
+    //        rect.origin.y = NSMidY(rect) - 0.5 * SNAPSHOT_HEIGHT;
+    //        rect.size.height = SNAPSHOT_HEIGHT;
+    //        [self showSnapshotAtPageNumber:row forRect:rect scaleFactor:[pdfView scaleFactor] autoFits:NO];
+            let thumbailTabCell = tableView.view(atColumn: 0, row: rowIndex, makeIfNecessary: true) as? KMThumbnailTableviewCell
+            thumbailTabCell?.isSelectCell = true
+            var rowIndexSet = IndexSet()
+            for i in self.thumbnailTableView.selectedRowIndexes {
+                rowIndexSet.insert(i)
+            }
+            rowIndexSet.insert(rowIndex)
+            self.thumbnailTableView.selectRowIndexes(rowIndexSet, byExtendingSelection: true)
+            return true
+        }
+        return false
+    }
+    
+    func tableView(_ tableView: NSTableView, shiftSelectRow rowIndex: Int) -> Bool {
+        if tableView.isEqual(to: self.thumbnailTableView) {
+            if (self.thumbnailTableView.selectedRowIndexes.count == 0) {
+                let thumbailTabCell = tableView.view(atColumn: 0, row: rowIndex, makeIfNecessary: true) as? KMThumbnailTableviewCell
+                thumbailTabCell?.isSelectCell = true
+                var rowIndexSet = IndexSet()
+                self.thumbnailTableView.selectRowIndexes(rowIndexSet, byExtendingSelection: true)
+                return true
+            } else if (self.thumbnailTableView.selectedRowIndexes.count == 1 && self.thumbnailTableView.selectedRowIndexes.first == rowIndex) {
+                return false
+            } else {
+                var fristIndex = self.thumbnailTableView.selectedRowIndexes.first ?? Int.min
+                var lastIndex = self.thumbnailTableView.selectedRowIndexes.last ?? Int.max
+                for idx in self.thumbnailTableView.selectedRowIndexes {
+//                [leftSideController.thumbnailTableView.selectedRowIndexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) {
+                    if(idx < fristIndex) {
+                        fristIndex = idx
+                    }
+                    if(idx > lastIndex) {
+                        lastIndex = idx
+                    }
+                }
+                
+                if(rowIndex < fristIndex) {
+                    fristIndex = rowIndex
+                } else if (rowIndex > lastIndex) {
+                    lastIndex = rowIndex
+                }
+                var rowIndexSet = IndexSet()
+                for i in fristIndex ... lastIndex {
+                    rowIndexSet.insert(i)
+                }
+                self.thumbnailTableView.selectRowIndexes(rowIndexSet, byExtendingSelection: true)
+                return true
+            }
+        }
+        return false
+    }
+}
+
 //MARK: NSTableViewDelegate,NSTableViewDataSource
 
 //extension KMLeftSideViewController: NSTableViewDelegate,NSTableViewDataSource {
@@ -2555,65 +2618,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
 
 
      #pragma mark NSTableView delegate protocol
-
-     - (BOOL)tableView:(NSTableView *)tv commandSelectRow:(NSInteger)row {
-         if ([tv isEqual:leftSideController.thumbnailTableView]) {
-     //        NSRect rect = [[[pdfView document] pageAtIndex:row] boundsForBox:kPDFDisplayBoxCropBox];
-     //
-     //        rect.origin.y = NSMidY(rect) - 0.5 * SNAPSHOT_HEIGHT;
-     //        rect.size.height = SNAPSHOT_HEIGHT;
-     //        [self showSnapshotAtPageNumber:row forRect:rect scaleFactor:[pdfView scaleFactor] autoFits:NO];
-             KMThumbnailTableviewCell *thumbailTabCell = [tv viewAtColumn:0 row:row makeIfNecessary:YES];
-             thumbailTabCell.isSelectCell = YES;
-             NSMutableIndexSet *rowIndexSet = [[[NSMutableIndexSet alloc] init] autorelease];
-             [leftSideController.thumbnailTableView.selectedRowIndexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) {
-                 [rowIndexSet addIndex:idx];
-             }];
-             [rowIndexSet addIndex:row];
-             [leftSideController.thumbnailTableView selectRowIndexes:rowIndexSet byExtendingSelection:YES];
-             return YES;
-         }
-         return NO;
-     }
-
-     - (BOOL)tableView:(NSTableView *)tv shiftSelectRow:(NSInteger)row {
-         if ([tv isEqual:leftSideController.thumbnailTableView]) {
-             if(leftSideController.thumbnailTableView.selectedRowIndexes.count == 0) {
-                 KMThumbnailTableviewCell *thumbailTabCell = [tv viewAtColumn:0 row:row makeIfNecessary:YES];
-                 thumbailTabCell.isSelectCell = YES;
-                 NSMutableIndexSet *rowIndexSet = [[[NSMutableIndexSet alloc] initWithIndex:row] autorelease];
-                 [leftSideController.thumbnailTableView selectRowIndexes:rowIndexSet byExtendingSelection:YES];
-                 return YES;
-             } else if (leftSideController.thumbnailTableView.selectedRowIndexes.count == 1 && leftSideController.thumbnailTableView.selectedRowIndexes.firstIndex == (NSUInteger)row) {
-                 return NO;
-             } else {
-                 __block NSInteger fristIndex = leftSideController.thumbnailTableView.selectedRowIndexes.firstIndex;
-                 __block NSInteger lastIndex = leftSideController.thumbnailTableView.selectedRowIndexes.lastIndex;
-                 [leftSideController.thumbnailTableView.selectedRowIndexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) {
-                     if(idx < (NSUInteger)fristIndex) {
-                         fristIndex = idx;
-                     }
-                     if(idx > (NSUInteger)lastIndex) {
-                         lastIndex = idx;
-                     }
-                 }];
-                 
-                 if(row < fristIndex) {
-                     fristIndex = row;
-                 } else if (row > lastIndex) {
-                     lastIndex = row;
-                 }
-                 NSMutableIndexSet *rowIndexSet = [[[NSMutableIndexSet alloc] init] autorelease];
-                 for (NSInteger i = fristIndex; i<=lastIndex;i++) {
-                     [rowIndexSet addIndex:i];
-                 }
-                 [leftSideController.thumbnailTableView selectRowIndexes:rowIndexSet byExtendingSelection:YES];
-                 return YES;
-             }
-         }
-         return NO;
-     }
-
      - (void)tableViewColumnDidResize:(NSNotification *)aNotification {
          if ([[[[aNotification userInfo] objectForKey:@"NSTableColumn"] identifier] isEqualToString:IMAGE_COLUMNID]) {
              if ([[aNotification object] isEqual:leftSideController.thumbnailTableView]) {