Browse Source

【注释回复】注释列表UI调整

tangchao 5 months ago
parent
commit
3ca5fa667f

+ 12 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Annotation/View/KMNoteFooterCellView.swift

@@ -39,8 +39,12 @@ class KMNoteFooterCellView: NSTableCellView, NibLoadable {
         self.replyButton.wantsLayer = true
         self.replyButton.setTitleColor(color: .white, font: .SFProTextRegularFont(14))
         self.replyButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().cgColor
+        self.replyButton.target = self
+        self.replyButton.action = #selector(replyAction)
         self.cancelButton.title = NSLocalizedString("Clear", comment: "")
         self.cancelButton.setTitleColor(color: KMAppearance.Layout.h2Color(), font: .SFProTextRegularFont(14))
+        self.cancelButton.target = self
+        self.cancelButton.action = #selector(cancelAction)
         
         self.commentBox.borderWidth = 0
         self.commentIv.image = NSImage(named: "KMImageNameBotaNoteComment")
@@ -56,6 +60,14 @@ class KMNoteFooterCellView: NSTableCellView, NibLoadable {
         self.operationButton.action = #selector(operationAction)
     }
     
+    @objc func replyAction(_ sender: NSButton) {
+        self.itemClick?(3)
+    }
+    
+    @objc func cancelAction(_ sender: NSButton) {
+        self.itemClick?(4)
+    }
+    
     @objc func commentAction(_ sender: NSButton) {
         self.itemClick?(1)
     }

+ 29 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Annotation/View/KMNoteReplyCellView.swift

@@ -0,0 +1,29 @@
+//
+//  KMNoteReplyCellView.swift
+//  PDF Reader Pro
+//
+//  Created by User-Tangchao on 2024/9/20.
+//
+
+import Cocoa
+
+class KMNoteReplyCellView: NSTableCellView, NibLoadable {
+    @IBOutlet weak var backgroundBox: NSBox!
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var timeLabel: NSTextField!
+    
+    @IBOutlet weak var contentLabel: NSTextField!
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        self.timeLabel.lineBreakMode = .byTruncatingTail
+    }
+    
+}

+ 89 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Annotation/View/KMNoteReplyCellView.xib

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <tableCellView id="cJ2-C3-BYm" customClass="KMNoteReplyCellView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="248" height="78"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="Gun-Jd-J23">
+                    <rect key="frame" x="16" y="0.0" width="216" height="78"/>
+                    <view key="contentView" id="v5i-Rx-mrG">
+                        <rect key="frame" x="1" y="1" width="214" height="76"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="YhK-ga-zgX">
+                                <rect key="frame" x="10" y="48" width="37" height="16"/>
+                                <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="e3s-gk-8Zg">
+                                    <font key="font" usesAppearanceFont="YES"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="t2z-BK-5kW">
+                                <rect key="frame" x="51" y="48" width="105" height="16"/>
+                                <textFieldCell key="cell" truncatesLastVisibleLine="YES" title="ooooooo0000oo" usesSingleLineMode="YES" id="PEk-7V-T1Z">
+                                    <font key="font" metaFont="system"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="jIA-71-L4Q">
+                                <rect key="frame" x="174" y="40" width="36" height="36"/>
+                                <view key="contentView" id="ZKd-Tw-1e4">
+                                    <rect key="frame" x="1" y="1" width="34" height="34"/>
+                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                </view>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="36" id="V2t-4Y-H2A"/>
+                                    <constraint firstAttribute="width" constant="36" id="rJp-GF-LsF"/>
+                                </constraints>
+                            </box>
+                            <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="IC2-1d-jhL">
+                                <rect key="frame" x="10" y="16" width="92" height="16"/>
+                                <textFieldCell key="cell" selectable="YES" title="Multiline Label" id="HAk-oO-E2d">
+                                    <font key="font" metaFont="system"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                        </subviews>
+                        <constraints>
+                            <constraint firstItem="t2z-BK-5kW" firstAttribute="leading" secondItem="YhK-ga-zgX" secondAttribute="trailing" constant="8" id="0G6-KJ-2C6"/>
+                            <constraint firstItem="jIA-71-L4Q" firstAttribute="top" secondItem="v5i-Rx-mrG" secondAttribute="top" id="6IS-E0-ChE"/>
+                            <constraint firstItem="IC2-1d-jhL" firstAttribute="top" secondItem="YhK-ga-zgX" secondAttribute="bottom" constant="16" id="6NK-mB-h4x"/>
+                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="IC2-1d-jhL" secondAttribute="trailing" constant="12" id="Apx-e8-jqR"/>
+                            <constraint firstItem="t2z-BK-5kW" firstAttribute="top" secondItem="v5i-Rx-mrG" secondAttribute="top" constant="12" id="Ldu-rx-ixC"/>
+                            <constraint firstItem="YhK-ga-zgX" firstAttribute="top" secondItem="v5i-Rx-mrG" secondAttribute="top" constant="12" id="RAe-xa-8Pl"/>
+                            <constraint firstItem="YhK-ga-zgX" firstAttribute="leading" secondItem="v5i-Rx-mrG" secondAttribute="leading" constant="12" id="Uz3-mS-fnY"/>
+                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="t2z-BK-5kW" secondAttribute="trailing" constant="44" id="ZnK-SL-nIa"/>
+                            <constraint firstAttribute="trailing" secondItem="jIA-71-L4Q" secondAttribute="trailing" constant="4" id="rPz-Bc-tuR"/>
+                            <constraint firstAttribute="bottom" secondItem="IC2-1d-jhL" secondAttribute="bottom" constant="16" id="rX1-E6-ibA"/>
+                            <constraint firstItem="IC2-1d-jhL" firstAttribute="leading" secondItem="v5i-Rx-mrG" secondAttribute="leading" constant="12" id="tKc-r7-kcT"/>
+                        </constraints>
+                    </view>
+                </box>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="Gun-Jd-J23" secondAttribute="trailing" constant="16" id="2gT-zp-lTN"/>
+                <constraint firstItem="Gun-Jd-J23" firstAttribute="top" secondItem="cJ2-C3-BYm" secondAttribute="top" id="hhq-XB-HPC"/>
+                <constraint firstAttribute="bottom" secondItem="Gun-Jd-J23" secondAttribute="bottom" id="tNb-Ko-CwT"/>
+                <constraint firstItem="Gun-Jd-J23" firstAttribute="leading" secondItem="cJ2-C3-BYm" secondAttribute="leading" constant="16" id="vv8-HJ-b8h"/>
+            </constraints>
+            <connections>
+                <outlet property="backgroundBox" destination="Gun-Jd-J23" id="CCn-fK-BaQ"/>
+                <outlet property="contentLabel" destination="IC2-1d-jhL" id="BgV-ji-YIn"/>
+                <outlet property="timeLabel" destination="t2z-BK-5kW" id="sqp-Ai-tSj"/>
+                <outlet property="titleLabel" destination="YhK-ga-zgX" id="407-zU-iLQ"/>
+            </connections>
+            <point key="canvasLocation" x="-41.5" y="22"/>
+        </tableCellView>
+    </objects>
+</document>

+ 9 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Note.swift

@@ -994,6 +994,15 @@ extension KMLeftSideViewController {
                     
                     prePageIdx = Int(anno.pageIndex())
                 
+                let replyAnnos = self.noteReplyHanddler.fetchReplyAnnotations(anno) ?? []
+                for replyAnno in replyAnnos {
+                    let replyM = KMBotaAnnotationReplyModel()
+                    replyM.anno = anno
+                    replyM.replyAnno = replyAnno
+//                    secM?.items.append(replyM)
+                    item.replyAnnos.append(replyM)
+                }
+                
                 let footerI = KMBotaAnnotationFooterModel()
                 footerI.anno = anno
                 secM?.items.append(footerI)

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

@@ -1893,7 +1893,17 @@ extension KMLeftSideViewController: NSOutlineViewDelegate, NSOutlineViewDataSour
             var cnt = 0
             for sectionM in self.annoListModel?.datas ?? [] {
                 if sectionM.items.count > 0 {
-                    cnt += (sectionM.itemCount + 1)
+                    //                    cnt += (sectionM.itemCount + 1)
+                    //                }
+                    cnt += 1
+                    for item in sectionM.items {
+                        cnt += 1
+                        if let annoItem = item as? KMBotaAnnotationModel {
+                            for replyItem in annoItem.replyAnnos {
+                                cnt += 1
+                            }
+                        }
+                    }
                 }
             }
                 
@@ -1959,7 +1969,9 @@ extension KMLeftSideViewController: NSOutlineViewDelegate, NSOutlineViewDataSour
             var idx = 0
             var flagSectionM: KMBotaAnnotationSectionModel?
             var flagItem: KMBotaAnnotationBaseModel?
+            var replyIten: KMBotaAnnotationReplyModel?
             var isSection = false
+            var isReply = false
             for sectionM in self.annoListModel?.datas ?? [] {
                 idx += 1
                 if index + 1 == idx {
@@ -1974,11 +1986,27 @@ extension KMLeftSideViewController: NSOutlineViewDelegate, NSOutlineViewDataSour
                         flagItem = item
                         break
                     }
+                    guard let annoItem = item as? KMBotaAnnotationModel else {
+                        continue
+                    }
+                    for replyI in annoItem.replyAnnos {
+                        idx += 1
+                        if index + 1 == idx {
+                            flagSectionM = sectionM
+                            flagItem = item
+                            replyIten = replyI
+                            isReply = true
+                            break
+                        }
+                    }
                 }
             }
             if isSection {
                 return flagSectionM
             }
+            if isReply {
+                return replyIten
+            }
             return flagItem
         }
         return item as Any
@@ -2073,11 +2101,29 @@ extension KMLeftSideViewController: NSOutlineViewDelegate, NSOutlineViewDataSour
                         KMPrint("comment")
                     } else if idx == 2 { //
                         self?.noteReplyHanddler.showStatePopView(sender: param.first as! NSView, anno: data.anno)
+                    } else if idx == 3 { // reply
+                        if let _ = self?.noteReplyHanddler.createReplyAnnotation(data.anno, content: "Here is the focus of the work Here is the focus of the work Here is the focus of the work", userName: KMPreference.shared.author) {
+                            self?.reloadAnnotation()
+                        }
+                    } else if idx == 4 { // cancel
+                        
                     }
                 }
                 
                 return cell
             }
+            if let data = item as? KMBotaAnnotationReplyModel {
+                var cell = outlineView.makeView(withIdentifier: KMNoteReplyCellView.km_identifier, owner: self) as? KMNoteReplyCellView
+                if cell == nil {
+                    cell = KMNoteReplyCellView.createFromNib()
+                }
+                cell?.titleLabel.stringValue = data.replyAnno?.userName() ?? ""
+                cell?.timeLabel.stringValue = "2023-0920-15.00"
+                cell?.timeLabel.lineBreakMode = .byTruncatingTail
+                cell?.timeLabel.sizeToFit()
+                cell?.contentLabel.stringValue = data.replyAnno?.contents ?? ""
+                return cell
+            }
             let model = item as? KMBotaAnnotationModel
             let note = (item as? KMBotaAnnotationModel)?.anno
             let cell = outlineView.makeView(withIdentifier: KMNoteTableViewCell.km_identifier, owner: self) as! KMNoteTableViewCell

+ 7 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Model/KMAnnotationModel.swift

@@ -23,6 +23,8 @@ class KMBotaAnnotationModel: KMBotaAnnotationBaseModel {
     var foldType: KMFoldType    = .none
     var foldH: CGFloat = 30
     
+    var replyAnnos: [KMBotaAnnotationReplyModel] = []
+    
     func isFold() -> Bool {
         if self.foldType == .unfold {
             return false
@@ -48,6 +50,11 @@ class KMBotaAnnotationFooterModel: KMBotaAnnotationBaseModel {
     
 }
 
+class KMBotaAnnotationReplyModel: KMBotaAnnotationBaseModel {
+    // weak
+    var replyAnno: CPDFAnnotation?
+}
+
 class KMBotaAnnotationSectionModel: NSObject {
     var items: [KMBotaAnnotationBaseModel] = []
     

+ 10 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Tools/KMNoteReplyHanddler.swift

@@ -225,6 +225,16 @@ class KMNoteReplyHanddler: NSObject {
         theAnno.setAnnotState(state)
     }
     
+    func createReplyAnnotation(_ anno: CPDFAnnotation?, content: String?, userName: String?) -> CPDFAnnotation? {
+        guard let theAnno = anno else {
+            return nil
+        }
+        let a = theAnno.createReply()
+        a?.contents = content ?? ""
+        a?.setUserName(userName ?? "")
+        return a
+    }
+    
     func fetchReviewState(_ anno: CPDFAnnotation?) -> CPDFAnnotationState? {
         guard let theAnno = self.fetchReviewAnnotation(anno) else {
             return nil

+ 16 - 0
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -49,6 +49,12 @@
 		6554450E2C88483C00BD9010 /* KMDiscountToSaveWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6554450A2C88483C00BD9010 /* KMDiscountToSaveWindowController.m */; };
 		6554450F2C88483C00BD9010 /* KMDiscountToSaveWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6554450A2C88483C00BD9010 /* KMDiscountToSaveWindowController.m */; };
 		655445102C88483C00BD9010 /* KMDiscountToSaveWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6554450A2C88483C00BD9010 /* KMDiscountToSaveWindowController.m */; };
+		658FDBA92C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658FDBA82C9D4B3100EFA72E /* KMNoteReplyCellView.swift */; };
+		658FDBAA2C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658FDBA82C9D4B3100EFA72E /* KMNoteReplyCellView.swift */; };
+		658FDBAB2C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658FDBA82C9D4B3100EFA72E /* KMNoteReplyCellView.swift */; };
+		658FDBAD2C9D4B9600EFA72E /* KMNoteReplyCellView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 658FDBAC2C9D4B9600EFA72E /* KMNoteReplyCellView.xib */; };
+		658FDBAE2C9D4B9600EFA72E /* KMNoteReplyCellView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 658FDBAC2C9D4B9600EFA72E /* KMNoteReplyCellView.xib */; };
+		658FDBAF2C9D4B9600EFA72E /* KMNoteReplyCellView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 658FDBAC2C9D4B9600EFA72E /* KMNoteReplyCellView.xib */; };
 		65D684062C6A250C003A532E /* KMWavyLineAnnotationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D684052C6A250C003A532E /* KMWavyLineAnnotationController.swift */; };
 		65D684072C6A250C003A532E /* KMWavyLineAnnotationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D684052C6A250C003A532E /* KMWavyLineAnnotationController.swift */; };
 		65D684082C6A250C003A532E /* KMWavyLineAnnotationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D684052C6A250C003A532E /* KMWavyLineAnnotationController.swift */; };
@@ -5574,6 +5580,8 @@
 		655445082C88483B00BD9010 /* KMDiscountToSaveWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMDiscountToSaveWindowController.xib; sourceTree = "<group>"; };
 		655445092C88483C00BD9010 /* KMDiscountToSaveWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMDiscountToSaveWindowController.h; sourceTree = "<group>"; };
 		6554450A2C88483C00BD9010 /* KMDiscountToSaveWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMDiscountToSaveWindowController.m; sourceTree = "<group>"; };
+		658FDBA82C9D4B3100EFA72E /* KMNoteReplyCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMNoteReplyCellView.swift; sourceTree = "<group>"; };
+		658FDBAC2C9D4B9600EFA72E /* KMNoteReplyCellView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMNoteReplyCellView.xib; sourceTree = "<group>"; };
 		65D684052C6A250C003A532E /* KMWavyLineAnnotationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMWavyLineAnnotationController.swift; sourceTree = "<group>"; };
 		65D6840B2C6A3669003A532E /* KMEraserAnnotationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMEraserAnnotationController.swift; sourceTree = "<group>"; };
 		65D88ED12C85826A00DD06E0 /* KMRSAUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMRSAUtils.swift; sourceTree = "<group>"; };
@@ -8277,6 +8285,8 @@
 				65FABB342C9AFB1F00AA92E5 /* KMSectionCellView.xib */,
 				6536FDE62C9C49A6004A0FB9 /* KMNoteFooterCellView.swift */,
 				6536FDEA2C9C49C0004A0FB9 /* KMNoteFooterCellView.xib */,
+				658FDBA82C9D4B3100EFA72E /* KMNoteReplyCellView.swift */,
+				658FDBAC2C9D4B9600EFA72E /* KMNoteReplyCellView.xib */,
 				BB4F7E882B0C55E70077EC8C /* KMFilterAuthorLabel.swift */,
 				BB4F7E942B0C857D0077EC8C /* KMNoteTypeCollectionViewItem.swift */,
 				BB4F7E982B0C858D0077EC8C /* KMNoteTypeCollectionViewItem.xib */,
@@ -14798,6 +14808,7 @@
 				BB031B7E2C47BB090099F7AD /* KMUserListItemCellView.xib in Resources */,
 				BB897237294B38DC0045787C /* KMWatermarkAdjectivePropertyBaseController.xib in Resources */,
 				BB2EDF4F296E63E5003BCF58 /* KMPageEditInsertCustomPageWindowController.xib in Resources */,
+				658FDBAD2C9D4B9600EFA72E /* KMNoteReplyCellView.xib in Resources */,
 				89E4E7412964160F002DBA6F /* KMAnnotationLinkViewController.xib in Resources */,
 				9FB221022B18866E00A5B208 /* KMAnnotationSelfSignViewController.xib in Resources */,
 				9F1FE3F4293F4F0F00E952CA /* Info.plist in Resources */,
@@ -15360,6 +15371,7 @@
 				ADFA8F0E2B579957002595A4 /* KMSearchFindView.xib in Resources */,
 				9F0201762A1B488C00C9B673 /* KMAITranslationVC.xib in Resources */,
 				AD7D5CE92B96B3B2006562CD /* KMBookmarkOutlineSeparatorCellView.xib in Resources */,
+				658FDBAE2C9D4B9600EFA72E /* KMNoteReplyCellView.xib in Resources */,
 				9F72D20C2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */,
 				9F512CCB2B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.xib in Resources */,
 				65341C782C63CCFE00FE30F9 /* KMSearchReplaceWindowController.xib in Resources */,
@@ -15841,6 +15853,7 @@
 				ADBC372F29CA951E00D93208 /* KMComparativeOutlineView.xib in Resources */,
 				9F00CCBC2A2F1E0F00AC462E /* dsa_pub.pem in Resources */,
 				BBB789C52BE8BF2400F7E09C /* AIRedoConfirmView.xib in Resources */,
+				658FDBAF2C9D4B9600EFA72E /* KMNoteReplyCellView.xib in Resources */,
 				9FB220E42B10850400A5B208 /* KMAnnotationStampViewController.xib in Resources */,
 				AD199DED2B230B1300D56FEE /* KMPrintMultipageView.xib in Resources */,
 				9F0ACC092C883464009574D5 /* KMEmbeddedPaymentPopWC.xib in Resources */,
@@ -16504,6 +16517,7 @@
 				ADF6B87E2A485A8F0090CB78 /* KMComparativeViewCollectionItemItem.swift in Sources */,
 				BBB9B310299A5D6D004F3235 /* KMCloudDownloadOperationQueue.m in Sources */,
 				ADBC375429CAE94700D93208 /* KMComparativeOutlineSectionCell.swift in Sources */,
+				658FDBA92C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */,
 				9F0ACC042C883464009574D5 /* KMEmbeddedPaymentPopWC.swift in Sources */,
 				BB328B702B565EC500B382C6 /* iVersion.m in Sources */,
 				BB8D52A52BA29A5C00D5CB31 /* SKVersionNumber.m in Sources */,
@@ -18580,6 +18594,7 @@
 				BBC28F4F2B0F58DD00D73206 /* KMImageToolTipWindow.swift in Sources */,
 				ADDF83962B391A5D00A81A4E /* DSignDetailTypeACellView.swift in Sources */,
 				BB146FB8299DC0D100784A6A /* GTLRRuntimeCommon.m in Sources */,
+				658FDBAA2C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */,
 				BB2C84892BAE753F00AF6142 /* KMBotaTools.swift in Sources */,
 				BB8D52A62BA29A5C00D5CB31 /* SKVersionNumber.m in Sources */,
 				BB328B6B2B565BEC00B382C6 /* iVersion.m in Sources */,
@@ -19269,6 +19284,7 @@
 				AD1CA4322A0640F20070541F /* KMAnnotationScreenHeadView.swift in Sources */,
 				BB49ED1B293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift in Sources */,
 				BB8810782B4F785200AFA63E /* KMUnlockAlertViewController.m in Sources */,
+				658FDBAB2C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */,
 				89752E1B2941FD48003FF08E /* KMSearchCellView.swift in Sources */,
 				BB146FC8299DC0D100784A6A /* GTMSessionFetcherService.m in Sources */,
 				ADE86AD82B05A52B00414DFA /* KMCompareFilesConfig.swift in Sources */,