|
@@ -802,6 +802,7 @@ class KMLeftSideViewController: KMSideViewController {
|
|
|
|
|
|
self.thumbnailTableView.delegate = self
|
|
self.thumbnailTableView.delegate = self
|
|
self.thumbnailTableView.dataSource = self
|
|
self.thumbnailTableView.dataSource = self
|
|
|
|
+ self.thumbnailTableView.thumbDelegate = self
|
|
self.thumbnailTableView.allowsMultipleSelection = true
|
|
self.thumbnailTableView.allowsMultipleSelection = true
|
|
self.findTableView.delegate = self
|
|
self.findTableView.delegate = self
|
|
self.findTableView.dataSource = 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 {
|
|
- (NSArray *)tableView:(NSTableView *)tv typeSelectHelperSelectionStrings:(SKTypeSelectHelper *)typeSelectHelper {
|
|
if ([tv isEqual:leftSideController.thumbnailTableView]) {
|
|
if ([tv isEqual:leftSideController.thumbnailTableView]) {
|
|
return pageLabels;
|
|
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
|
|
//MARK: NSTableViewDelegate,NSTableViewDataSource
|
|
|
|
|
|
//extension KMLeftSideViewController: NSTableViewDelegate,NSTableViewDataSource {
|
|
//extension KMLeftSideViewController: NSTableViewDelegate,NSTableViewDataSource {
|
|
@@ -2555,65 +2618,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
|
|
|
|
|
|
|
#pragma mark NSTableView delegate protocol
|
|
#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 {
|
|
- (void)tableViewColumnDidResize:(NSNotification *)aNotification {
|
|
if ([[[[aNotification userInfo] objectForKey:@"NSTableColumn"] identifier] isEqualToString:IMAGE_COLUMNID]) {
|
|
if ([[[[aNotification userInfo] objectForKey:@"NSTableColumn"] identifier] isEqualToString:IMAGE_COLUMNID]) {
|
|
if ([[aNotification object] isEqual:leftSideController.thumbnailTableView]) {
|
|
if ([[aNotification object] isEqual:leftSideController.thumbnailTableView]) {
|