ソースを参照

【左边栏】KMThumbnail OC转Swift

tangchao 1 年間 前
コミット
46715ce85c

+ 16 - 0
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -3343,6 +3343,9 @@
 		BBC8A7682B05EB8000FA9377 /* KMThumbnailTableviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC8A7672B05EB8000FA9377 /* KMThumbnailTableviewCell.swift */; };
 		BBC8A7692B05EB8000FA9377 /* KMThumbnailTableviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC8A7672B05EB8000FA9377 /* KMThumbnailTableviewCell.swift */; };
 		BBC8A76A2B05EB8000FA9377 /* KMThumbnailTableviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC8A7672B05EB8000FA9377 /* KMThumbnailTableviewCell.swift */; };
+		BBC8A76D2B05EDDF00FA9377 /* KMThumbnail.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC8A76C2B05EDDE00FA9377 /* KMThumbnail.swift */; };
+		BBC8A76E2B05EDDF00FA9377 /* KMThumbnail.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC8A76C2B05EDDE00FA9377 /* KMThumbnail.swift */; };
+		BBC8A76F2B05EDDF00FA9377 /* KMThumbnail.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC8A76C2B05EDDE00FA9377 /* KMThumbnail.swift */; };
 		BBCE57102A72712200508EFC /* NSWindowController+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBCE570F2A72712200508EFC /* NSWindowController+KMExtension.swift */; };
 		BBCE57112A72712200508EFC /* NSWindowController+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBCE570F2A72712200508EFC /* NSWindowController+KMExtension.swift */; };
 		BBCE57122A72712200508EFC /* NSWindowController+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBCE570F2A72712200508EFC /* NSWindowController+KMExtension.swift */; };
@@ -5074,6 +5077,7 @@
 		BBC8A75F2B05C87600FA9377 /* KMBotaTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBotaTableView.swift; sourceTree = "<group>"; };
 		BBC8A7632B05C93900FA9377 /* KMThumbnailTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMThumbnailTableView.swift; sourceTree = "<group>"; };
 		BBC8A7672B05EB8000FA9377 /* KMThumbnailTableviewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMThumbnailTableviewCell.swift; sourceTree = "<group>"; };
+		BBC8A76C2B05EDDE00FA9377 /* KMThumbnail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMThumbnail.swift; sourceTree = "<group>"; };
 		BBCE570F2A72712200508EFC /* NSWindowController+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSWindowController+KMExtension.swift"; sourceTree = "<group>"; };
 		BBCE57132A72713A00508EFC /* NSViewController+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSViewController+KMExtension.swift"; sourceTree = "<group>"; };
 		BBCE57172A72723600508EFC /* NSResponder+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSResponder+KMExtension.swift"; sourceTree = "<group>"; };
@@ -5523,6 +5527,7 @@
 		899700EE28F40308009AF911 /* LeftSide */ = {
 			isa = PBXGroup;
 			children = (
+				BBC8A76B2B05EDC800FA9377 /* Model */,
 				ADCFFC0529C04617007D3657 /* BOTA.xcassets */,
 				8942F7BE2923670F00389627 /* KMBOTAManagerClass.swift */,
 				8997011D28F41AB8009AF911 /* KMLeftSideViewController.swift */,
@@ -9232,6 +9237,14 @@
 			path = Tools;
 			sourceTree = "<group>";
 		};
+		BBC8A76B2B05EDC800FA9377 /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				BBC8A76C2B05EDDE00FA9377 /* KMThumbnail.swift */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
 		BBD1F796296FF76200343885 /* Model */ = {
 			isa = PBXGroup;
 			children = (
@@ -11638,6 +11651,7 @@
 				BBC8A7642B05C93900FA9377 /* KMThumbnailTableView.swift in Sources */,
 				ADBC2D1F299CDA29006280C8 /* NSView+Layer.swift in Sources */,
 				ADAFDA3E2AE8F32400F084BC /* KMAdvertisementManager.swift in Sources */,
+				BBC8A76D2B05EDDF00FA9377 /* KMThumbnail.swift in Sources */,
 				BBF62C702B0347AF007B7E86 /* SplitWindowController.swift in Sources */,
 				AD1CA3F72A05FCB60070541F /* KMAnnotationScreenViewController.swift in Sources */,
 				ADB2D6E6294740F30029D2B3 /* KMPrintPaperSetWindowController.swift in Sources */,
@@ -12695,6 +12709,7 @@
 				ADE8BC3029F8CD7200570F89 /* KMPDFThumbnailModel.swift in Sources */,
 				BB90E4EF2AF3546500B04B9F /* NSUserDefaultsController+KMExtension.swift in Sources */,
 				ADDEEA7F2AD3FB1D00EF675D /* KMImageAccessoryController.swift in Sources */,
+				BBC8A76E2B05EDDF00FA9377 /* KMThumbnail.swift in Sources */,
 				BB4EEF4129764FCC003A3537 /* KMWatermarkColorView.swift in Sources */,
 				AD1D48102AFB1907007AC1F0 /* KMCompressView.swift in Sources */,
 				BB146FCA299DC0D100784A6A /* GTMSessionFetcher.m in Sources */,
@@ -12969,6 +12984,7 @@
 				BB65A0562AF8B90F003A27A0 /* KMDisplayPreferences.swift in Sources */,
 				BB146FEC299DC0D100784A6A /* GTLRDuration.m in Sources */,
 				BBC8A76A2B05EB8000FA9377 /* KMThumbnailTableviewCell.swift in Sources */,
+				BBC8A76F2B05EDDF00FA9377 /* KMThumbnail.swift in Sources */,
 				9FCFEC762AC56ECE00EAD2CB /* CPDFListStampAnnotation.swift in Sources */,
 				BBA388152AEF9A42004FE93F /* NSWindow+KMExtension.swift in Sources */,
 				9FD0D2A92AD4EFB000DA3FF8 /* KMSavePanelAccessoryController.swift in Sources */,

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

@@ -1313,7 +1313,7 @@ extension KMLeftSideViewController: KMThumbnailTableViewDelegate, NSTableViewDat
     func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
         if tableView.isEqual(to: self.thumbnailTableView) {
 //        if ([tableView isEqual:leftSideController.thumbnailTableView]) {
-//            KMThumbnailTableviewCell *cell = [tableView makeViewWithIdentifier:@"KMThumbnailTableviewCell" owner:self];
+//            let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMThumbnailTableviewCell"), owner: self)
 //            SKThumbnail *thumbnail = thumbnails[row];
 //            cell.pageNumLabel.stringValue = thumbnail.label;
 //            cell.thumImage.image = thumbnail.image;

+ 56 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Model/KMThumbnail.swift

@@ -0,0 +1,56 @@
+//
+//  KMThumbnail.swift
+//  PDF Master
+//
+//  Created by tangchao on 2023/11/16.
+//
+
+import Cocoa
+
+@objc protocol KMThumbnailDelegate: NSObjectProtocol {
+    @objc optional func generateImage(for thumbnail: KMThumbnail) -> Bool
+}
+
+class KMThumbnail: NSObject {
+    weak var delegate: KMThumbnailDelegate?
+    var dirty = false
+    private var _image: NSImage?
+    var image: NSImage? {
+        get {
+            if let data = self.delegate?.generateImage?(for: self), data && self.dirty {
+                self.dirty = false
+            }
+            return self._image
+        }
+        set {
+            self._image = newValue
+        }
+    }
+    private var _label: String = ""
+    var label: String {
+        get {
+            return self._label
+        }
+    }
+    private var _pageIndex: Int = 0
+    var pageIndex: Int {
+        get {
+            return self._pageIndex
+        }
+    }
+    var size: NSSize {
+        get {
+            return self.image?.size ?? .zero
+        }
+    }
+    var thumiii: NSImageView?
+    
+    convenience init(image: NSImage?, label: String, pageIndex: Int) {
+        self.init()
+        
+        self.image = image
+        self._label = label
+        self._pageIndex = pageIndex
+        self.dirty = false
+    }
+}