|
@@ -289,10 +289,123 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
|
|
|
// super.keyDown(with: event)
|
|
|
let cmd = event.modifierFlags.contains(.command)
|
|
|
let shift = event.modifierFlags.contains(.shift)
|
|
|
+
|
|
|
let code = event.keyCode
|
|
|
- if cmd && code == 0 { // cmd + a
|
|
|
- self.km_comboBoxSelectionDidChange(.all)
|
|
|
- return
|
|
|
+ let isLeft = code == 123
|
|
|
+ let isUp = code == 126
|
|
|
+ let isRight = code == 124
|
|
|
+ let isDown = code == 125
|
|
|
+ if cmd {
|
|
|
+ if code == 0 { // cmd + a
|
|
|
+ self.km_comboBoxSelectionDidChange(.all)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+// let ips = self.thumbnailView.selectionIndexPaths
|
|
|
+// let indexs = self.indexpathsToIndexs(indexpaths: ips)
|
|
|
+//// let idx = indexs.last ?? 0
|
|
|
+// var selectedIndexs = indexs
|
|
|
+// let numberItems = self.thumbnailView.collectionView.numberOfItems(inSection: 0)
|
|
|
+// let firstIdx = 0
|
|
|
+// let lastIdx = max(numberItems-1, 0)
|
|
|
+// if isLeft { // +
|
|
|
+// if self.isEmptySelection() {
|
|
|
+// selectedIndexs.insert(lastIdx)
|
|
|
+// } else {
|
|
|
+// if let idx = selectedIndexs.first, idx > 0 {
|
|
|
+// selectedIndexs.insert(idx-1)
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } else if isRight { // -
|
|
|
+// if self.isEmptySelection() {
|
|
|
+// selectedIndexs.insert(firstIdx)
|
|
|
+// } else {
|
|
|
+// if let idx = selectedIndexs.last, idx < lastIdx {
|
|
|
+// selectedIndexs.insert(idx+1)
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// var numberPerLine = 0
|
|
|
+// let itemW = self.thumbnailView.itemSize.width
|
|
|
+// if itemW > 0 {
|
|
|
+// numberPerLine = Int(NSWidth(self.thumbnailView.collectionView.frame) / itemW)
|
|
|
+// }
|
|
|
+// if isUp {
|
|
|
+// if self.isEmptySelection() {
|
|
|
+// selectedIndexs.insert(lastIdx)
|
|
|
+// } else {
|
|
|
+// if let idx = selectedIndexs.first, idx > 0 {
|
|
|
+// selectedIndexs.insert(max(idx-numberPerLine, 0))
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } else if isDown {
|
|
|
+// if self.isEmptySelection() {
|
|
|
+// selectedIndexs.insert(firstIdx)
|
|
|
+// } else {
|
|
|
+// if let idx = selectedIndexs.last, idx < lastIdx {
|
|
|
+// selectedIndexs.insert(min(idx+numberPerLine, lastIdx))
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// if selectedIndexs.isEmpty == false {
|
|
|
+// let ips = self.indexsToIndexpaths(indexs: selectedIndexs)
|
|
|
+// self.thumbnailView.selectionIndexPaths = ips
|
|
|
+// self.thumbnailView.collectionView.scrollToItems(at: ips, scrollPosition: .centeredVertically)
|
|
|
+// }
|
|
|
+ } else if shift {
|
|
|
+
|
|
|
+ } else {
|
|
|
+ let ips = self.thumbnailView.selectionIndexPaths
|
|
|
+ let indexs = self.indexpathsToIndexs(indexpaths: ips)
|
|
|
+ let idx = indexs.last ?? 0
|
|
|
+ var selectedIndexs = IndexSet()
|
|
|
+ let numberItems = self.thumbnailView.collectionView.numberOfItems(inSection: 0)
|
|
|
+ let firstIdx = 0
|
|
|
+ let lastIdx = max(numberItems-1, 0)
|
|
|
+ if isLeft {
|
|
|
+ if self.isEmptySelection() {
|
|
|
+ selectedIndexs.insert(lastIdx)
|
|
|
+ } else {
|
|
|
+ if idx > 0 {
|
|
|
+ selectedIndexs.insert(idx-1)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if isRight {
|
|
|
+ if self.isEmptySelection() {
|
|
|
+ selectedIndexs.insert(firstIdx)
|
|
|
+ } else {
|
|
|
+ if idx < lastIdx {
|
|
|
+ selectedIndexs.insert(idx+1)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ var numberPerLine = 0
|
|
|
+ let itemW = self.thumbnailView.itemSize.width
|
|
|
+ if itemW > 0 {
|
|
|
+ numberPerLine = Int(NSWidth(self.thumbnailView.collectionView.frame) / itemW)
|
|
|
+ }
|
|
|
+ if isUp {
|
|
|
+ if self.isEmptySelection() {
|
|
|
+ selectedIndexs.insert(lastIdx)
|
|
|
+ } else {
|
|
|
+ selectedIndexs.insert(max(idx-numberPerLine, 0))
|
|
|
+ }
|
|
|
+ } else if isDown {
|
|
|
+ if self.isEmptySelection() {
|
|
|
+ selectedIndexs.insert(firstIdx)
|
|
|
+ } else {
|
|
|
+ selectedIndexs.insert(min(idx+numberPerLine, lastIdx))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if selectedIndexs.isEmpty == false {
|
|
|
+ let ips = self.indexsToIndexpaths(indexs: selectedIndexs)
|
|
|
+ self.thumbnailView.selectionIndexPaths = ips
|
|
|
+ self.thumbnailView.collectionView.scrollToItems(at: ips, scrollPosition: .centeredVertically)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|