Browse Source

Merge branch 'develop_PDFReaderProNew' of git.kdan.cc:Mac_PDF/PDF_Office into develop_PDFReaderProNew

tangchao 1 year ago
parent
commit
4c459c0a9e

+ 8 - 5
PDF Office/PDF Master/Class/PDFTools/KMBookmark/Controller/KMBookmarkController.swift

@@ -191,7 +191,7 @@ class KMBookmarkController: NSWindowController {
             guard let parent = item.parent, let itemIndex = parent.children.firstIndex(of: item) else { continue }
             guard let parent = item.parent, let itemIndex = parent.children.firstIndex(of: item) else { continue }
             parent.removeObjectFromChildren(index: itemIndex)
             parent.removeObjectFromChildren(index: itemIndex)
         }
         }
-        outlineView.reloadData()
+        bookmarkOutlineView.reloadData()
     }
     }
     
     
     
     
@@ -203,9 +203,12 @@ class KMBookmarkController: NSWindowController {
         getInsertionFolder(&item, childIndex: &idx)
         getInsertionFolder(&item, childIndex: &idx)
         item?.insert(child: folder, atIndex: idx)
         item?.insert(child: folder, atIndex: idx)
         
         
-        let row = outlineView.row(forItem: folder)
-        outlineView.selectRowIndexes(IndexSet(integer: row), byExtendingSelection: false)
-        outlineView.editColumn(0, row: row, with: nil, select: true)
+        bookmarkOutlineView.outlineView.reloadData()
+        let row = bookmarkOutlineView.outlineView.row(forItem: folder)
+        if row > 0 {
+            bookmarkOutlineView.outlineView.selectRowIndexes(IndexSet(integer: row), byExtendingSelection: false)
+            bookmarkOutlineView.outlineView.editColumn(0, row: row, with: nil, select: true)
+        }
     }
     }
 
 
     @IBAction func insertBookmarkSeparator(_ sender: Any) {
     @IBAction func insertBookmarkSeparator(_ sender: Any) {
@@ -252,7 +255,7 @@ class KMBookmarkController: NSWindowController {
     
     
     @IBAction func deleteBookmark(_ sender: Any) {
     @IBAction func deleteBookmark(_ sender: Any) {
         print("deleteBookmark")
         print("deleteBookmark")
-        guard let bookmark = outlineView.selectedItem() as? KMBookmark else { return }
+        guard let bookmark = bookmarkOutlineView.outlineView.selectedItem() as? KMBookmark else { return }
         self.deleteBookmarks(bookmarks: [bookmark])
         self.deleteBookmarks(bookmarks: [bookmark])
     }
     }
 //
 //

+ 30 - 8
PDF Office/PDF Master/Class/PDFTools/KMBookmark/Model/KMBookmark.swift

@@ -26,7 +26,6 @@ class KMBookmark: NSObject {
     var properties: NSDictionary?
     var properties: NSDictionary?
     var bookmarkType: KMBookmarkType = .bookmark
     var bookmarkType: KMBookmarkType = .bookmark
     var label: String = ""
     var label: String = ""
-    var icon: NSImage = NSImage()
     var alternateIcon: NSImage =  NSImage()
     var alternateIcon: NSImage =  NSImage()
     var fileURL: URL?
     var fileURL: URL?
     var pageIndex: UInt = 0
     var pageIndex: UInt = 0
@@ -36,6 +35,19 @@ class KMBookmark: NSObject {
     var parent: KMBookmark?
     var parent: KMBookmark?
     var children: [KMBookmark] = [] //子
     var children: [KMBookmark] = [] //子
     
     
+    var icon: NSImage {
+        get {
+            if let fileURL = self.fileURL {
+                return NSWorkspace.shared.icon(forFile: fileURL.path)
+            } else {
+                return KMFileBookmark.missingFileImage()
+            }
+        }
+        set {
+            
+        }
+    }
+    
     static func bookmark(url: URL, pageIndex: UInt, label: String) -> KMBookmark {
     static func bookmark(url: URL, pageIndex: UInt, label: String) -> KMBookmark {
         let bookmark = KMBookmark()
         let bookmark = KMBookmark()
         bookmark.fileURL = url
         bookmark.fileURL = url
@@ -380,8 +392,13 @@ class KMSessionBookmark: KMBookmark {
         return KMSessionBookmark()
         return KMSessionBookmark()
     }
     }
     
     
-    func icon() -> NSImage {
-        return NSImage(named: NSImage.multipleDocumentsName)!
+    override var icon: NSImage {
+        get {
+            return NSImage(named: NSImage.multipleDocumentsName)!
+        }
+        set {
+            
+        }
     }
     }
 }
 }
 
 
@@ -426,11 +443,16 @@ class KMFileBookmark: KMBookmark {
         return image
         return image
     }
     }
     
     
-    func icon() -> NSImage {
-        if let fileURL = self.fileURL {
-            return NSWorkspace.shared.icon(forFile: fileURL.path)
-        } else {
-            return KMFileBookmark.missingFileImage()
+    override var icon: NSImage {
+        get {
+            if let fileURL = self.fileURL {
+                return NSWorkspace.shared.icon(forFile: fileURL.path)
+            } else {
+                return KMFileBookmark.missingFileImage()
+            }
+        }
+        set {
+            
         }
         }
     }
     }
 
 

+ 16 - 0
PDF Office/PDF Master/Class/PDFTools/KMBookmark/View/OutlineView/KMBookmarkOutlineView.swift

@@ -79,12 +79,28 @@ extension KMBookmarkOutlineView: NSOutlineViewDelegate {
         switch identifier {
         switch identifier {
         case kLabelIdentifier: do {
         case kLabelIdentifier: do {
             cell = KMBookmarkOutlineTitleCellView()
             cell = KMBookmarkOutlineTitleCellView()
+            let cell = cell as! KMBookmarkOutlineTitleCellView
+            cell.titleLabel.stringValue = item.label
+            cell.iconImageView.image = item.icon
         }
         }
         case kPageIdentifier: do {
         case kPageIdentifier: do {
             cell = KMBookmarkOutlinePageCellView()
             cell = KMBookmarkOutlinePageCellView()
+            let cell = cell as! KMBookmarkOutlinePageCellView
+            cell.titleLabel.stringValue = item.pageIndex.description
         }
         }
         case kFileIdentifier: do {
         case kFileIdentifier: do {
             cell = KMBookmarkOutlineFileCellView()
             cell = KMBookmarkOutlineFileCellView()
+            let cell = cell as! KMBookmarkOutlineFileCellView
+            var stringValue = ""
+            if item.bookmarkType == .folder ||
+                item.bookmarkType == .session {
+                let count = item.children.count
+                stringValue = count == 1 ? NSLocalizedString("1 item", comment: "Bookmark folder description") : String.localizedStringWithFormat(NSLocalizedString("%ld items", comment: "Bookmark folder description"), count)
+            } else {
+                stringValue = item.fileURL?.path ?? ""
+            }
+            cell.titleLabel.stringValue = stringValue
+            
         }
         }
             
             
         default:
         default: