Browse Source

【页面分割】选择文件和拖拽导入文件补充

tangchao 1 year ago
parent
commit
a0acd637c1

+ 12 - 8
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -2888,18 +2888,21 @@ extension KMMainViewController {
                     controlView?.frame = controlRect
                     controlView?.autoresizingMask = [.maxXMargin, .maxYMargin, .width]
 //                    [(SKGradientView *)secondaryPdfContentView setMinSize:controlRect.size];
-//                    [secondaryPdfView setFrame:pdfRect];
                     self.secondaryPdfView?.frame = pdfRect
                     self.secondaryPdfContentView?.addSubview(controlView!)
-//
+
                     self.openSecondaryPdfView = KMSecondaryViewController()
                     self.openSecondaryPdfView?.view.frame = self.secondaryPdfContentView?.frame ?? .zero
                     self.secondaryPdfContentView?.addSubview(self.openSecondaryPdfView!.view)
 //                    __block typeof(self)weakself = self;
-//                    openSecondaryPdfView.secondaryView.receivedFileUrlBlock = ^(NSURL *fileUrl) {
-//                        [weakself displaySecondaryPDFViewWithUrl:fileUrl];
-//                        [openSecondaryPdfView.view removeFromSuperview];
-//                    };
+                    self.openSecondaryPdfView?.secondaryView.receivedFileUrlBlock = { [weak self] fileUrl in
+                        if let docUrl = fileUrl {
+                            _ = self?.displaySecondaryPDFView(withUrl: docUrl)
+                            self?.openSecondaryPdfView?.view.removeFromSuperview()
+                            self?.openSecondaryPdfView = nil
+                        }
+                    }
+                    self.openSecondaryPdfView?.delegate = self
                     if (!isHorizontal) {
                         self.openSecondaryPdfView?.changeBenefit(ofContrastLabelWidth: 300)
                     }
@@ -2940,8 +2943,6 @@ extension KMMainViewController {
     func displaySecondaryPDFView(withUrl url: URL) -> Bool {
         let document = CPDFDocument.init(url: url)
         if document != nil {
-            self.secondaryPdfView?.frame = pdfSplitSecondView.frame
-            self.pdfSplitSecondView.contentView = secondaryPdfView
             self.secondaryPdfView?.document = nil
             self.secondaryPdfView?.document = document
             return true
@@ -3008,6 +3009,9 @@ extension KMMainViewController: KMSecondaryViewControllerDelegate {
             alert.messageText = NSLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
             alert.runModal()
             return
+        } else {
+            self.openSecondaryPdfView?.view.removeFromSuperview()
+            self.openSecondaryPdfView = nil
         }
     }
 }

+ 31 - 20
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift

@@ -278,7 +278,7 @@ extension KMMainViewController: KMToolbarControllerDelegate {
 
 extension KMMainViewController : NSSplitViewDelegate {
     func splitView(_ splitView: NSSplitView, canCollapseSubview subview: NSView) -> Bool {
-        KMPrint("kk- canCollapseSubview")
+//        KMPrint("kk- canCollapseSubview")
         if splitView == self.mianSplitView {
             //            return (subview == self.listView) == false
         } else if splitView == self.newPDFSplitView {
@@ -288,7 +288,7 @@ extension KMMainViewController : NSSplitViewDelegate {
     }
     
     func splitView(_ splitView: NSSplitView, shouldCollapseSubview subview: NSView, forDoubleClickOnDividerAt dividerIndex: Int) -> Bool {
-        KMPrint("kk- shouldCollapseSubview")
+//        KMPrint("kk- shouldCollapseSubview")
         if splitView == self.newPDFSplitView {
             if subview.isEqual(to: self.secondaryPdfContentView) {
                 var position = self.newPDFSplitView.maxPossiblePositionOfDivider(at: dividerIndex)
@@ -312,7 +312,7 @@ extension KMMainViewController : NSSplitViewDelegate {
     }
     
     func splitView(_ splitView: NSSplitView, shouldHideDividerAt dividerIndex: Int) -> Bool {
-        KMPrint("kk- shouldHideDividerAt")
+//        KMPrint("kk- shouldHideDividerAt")
         if splitView == self.mianSplitView {
             return splitView == self.mianSplitView
         } else if splitView == self.newPDFSplitView {
@@ -323,7 +323,7 @@ extension KMMainViewController : NSSplitViewDelegate {
     }
     
     func splitView(_ splitView: NSSplitView, constrainMaxCoordinate proposedMaximumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
-        KMPrint("kk- constrainMaxCoordinate")
+//        KMPrint("kk- constrainMaxCoordinate")
         if splitView == mianSplitView {
             let splitViewWidth = splitView.frame.width
             let dividerIndexX0 = panelWidth + functionWidth
@@ -346,7 +346,7 @@ extension KMMainViewController : NSSplitViewDelegate {
     }
     
     func splitView(_ splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
-        KMPrint("kk- constrainMinCoordinate")
+//        KMPrint("kk- constrainMinCoordinate")
         if splitView == mianSplitView {
             let splitViewWidth = splitView.frame.width
             let dividerIndexX1 = splitViewWidth - defaultRightWidth
@@ -362,7 +362,7 @@ extension KMMainViewController : NSSplitViewDelegate {
     }
     
     func splitView(_ splitView: NSSplitView, resizeSubviewsWithOldSize oldSize: NSSize) {
-        KMPrint("kk- resizeSubviewsWithOldSize")
+//        KMPrint("kk- resizeSubviewsWithOldSize")
         if splitView.isEqual(to: mianSplitView) {
             let leftView = splitView.subviews[0]
             let centerView = splitView.subviews[1]
@@ -412,26 +412,37 @@ extension KMMainViewController : NSSplitViewDelegate {
             }
             centerView.setFrameSize(mainSize)
         } else if splitView == self.newPDFSplitView {
-            let left = splitView.subviews.first
-            let right = splitView.subviews.last
-            if left == right{
+            let firstV = splitView.subviews.first
+            let lastV = splitView.subviews.last
+            if firstV == lastV{
                 splitView.adjustSubviews()
                 return
             }
-            // 左边是否收起
-            let leftCollapsed = splitView.isSubviewCollapsed(left!)
-            // 右边是否收起
-            let rightCollapsed = splitView.isSubviewCollapsed(right!)
-            
-            var contentSize = splitView.frame.size
-            left?.setFrameSize(NSMakeSize(contentSize.width * 0.5, contentSize.height))
-            right?.setFrameSize(NSMakeSize(contentSize.width * 0.5, contentSize.height))
+            if self.newPDFSplitView.isVertical { // 横向
+                // 左边是否收起
+                let leftCollapsed = splitView.isSubviewCollapsed(firstV!)
+                // 右边是否收起
+                let rightCollapsed = splitView.isSubviewCollapsed(lastV!)
+                
+                var contentSize = splitView.frame.size
+                firstV?.setFrameSize(NSMakeSize(contentSize.width * 0.5, contentSize.height))
+                lastV?.setFrameSize(NSMakeSize(contentSize.width * 0.5, contentSize.height))
+            } else { // 纵向
+                // 左边是否收起
+                let leftCollapsed = splitView.isSubviewCollapsed(firstV!)
+                // 右边是否收起
+                let rightCollapsed = splitView.isSubviewCollapsed(lastV!)
+                
+                var contentSize = splitView.frame.size
+                firstV?.setFrameSize(NSMakeSize(contentSize.width, contentSize.height * 0.5))
+                lastV?.setFrameSize(NSMakeSize(contentSize.width, contentSize.height * 0.5))
+            }
         }
         splitView.adjustSubviews()
     }
     
     func splitViewWillResizeSubviews(_ notification: Notification) {
-        KMPrint("kk- splitViewWillResizeSubviews")
+//        KMPrint("kk- splitViewWillResizeSubviews")
         let defaultView = KMSplitView()
         let sender : NSSplitView = notification.object as? NSSplitView ?? defaultView
         if (sender == self.mianSplitView || sender == defaultView) && self.view.window?.frameAutosaveName != nil{
@@ -449,7 +460,7 @@ extension KMMainViewController : NSSplitViewDelegate {
     }
     
     func splitViewDidResizeSubviews(_ notification: Notification) {
-        KMPrint("kk- splitViewDidResizeSubviews")
+//        KMPrint("kk- splitViewDidResizeSubviews")
         self.locationPageView.frame = CGRect(x: 0, y: self.listView.frame.maxY-32, width: self.listView.frame.width, height: 32)
         let defaultView = KMSplitView()
         let sender : NSSplitView = notification.object as? NSSplitView ?? defaultView
@@ -466,7 +477,7 @@ extension KMMainViewController : NSSplitViewDelegate {
     }
     
     func splitView(_ splitView: NSSplitView, constrainSplitPosition proposedPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
-        KMPrint("kk- constrainSplitPosition")
+//        KMPrint("kk- constrainSplitPosition")
         if splitView == self.mianSplitView {
             if dividerIndex == 0 {
                 if leftPanelOpen {

+ 4 - 4
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -46,8 +46,8 @@
             filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "446"
-            endingLineNumber = "446"
+            startingLineNumber = "457"
+            endingLineNumber = "457"
             landmarkName = "splitViewWillResizeSubviews(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -62,8 +62,8 @@
             filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "463"
-            endingLineNumber = "463"
+            startingLineNumber = "474"
+            endingLineNumber = "474"
             landmarkName = "splitViewDidResizeSubviews(_:)"
             landmarkType = "7">
          </BreakpointContent>