Browse Source

【Home】添加多个文档点击合并,合并在转圈圈时,要把所有icon都置灰不能点击(已修复)

tangchao 1 year ago
parent
commit
87a1ed950b

+ 24 - 0
PDF Office/PDF Master/Class/Merge/OCPart/KMPDFEditAppendWindow.m

@@ -193,6 +193,8 @@ static KMPDFEditAppendWindow *windowController = nil;
 @property (nonatomic, strong) KMDesignButton *nMergeVC;
 @property (nonatomic, strong) KMDesignButton *nCancelVC;
 
+@property (nonatomic, strong) NSButton *loading_backgroundView;
+
 @end
 
 @implementation KMPDFEditAppendWindow
@@ -428,6 +430,16 @@ static KMPDFEditAppendWindow *windowController = nil;
     self.addFileButton.editable = false; //默认属性,初始化可不设置
     self.addFileButton.delete = self;
     [self.addFileButton updateUI];
+    
+    self.loading_backgroundView = [[NSButton alloc] init];
+    [self.window.contentView addSubview:self.loading_backgroundView];
+    self.loading_backgroundView.frame = self.window.contentView.bounds;
+    self.loading_backgroundView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
+    self.loading_backgroundView.title = @"";
+    self.loading_backgroundView.bordered = NO;
+    self.loading_backgroundView.wantsLayer = YES;
+    self.loading_backgroundView.layer.backgroundColor = [NSColor clearColor].CGColor;
+    self.loading_backgroundView.hidden = YES;
 }
 
 - (void)updateButtonState
@@ -477,6 +489,12 @@ static KMPDFEditAppendWindow *windowController = nil;
 
 - (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(BOOL isSuccessfully,NSIndexSet * selectedIndexSet))handler
 {
+    if (windowController.window.isSheet) {
+#if DEBUG
+        NSLog(@"合并窗口已显示");
+#endif
+        return;
+    }
     windowController = self;
     
     [NSApp beginSheet:[self window]
@@ -1025,6 +1043,7 @@ static KMPDFEditAppendWindow *windowController = nil;
     [self.nCancelVC setEnabled:NO];
     self.canMerge = NO;
     [_progress startAnimation:nil];
+    self.loading_backgroundView.hidden = NO;
     
     BOOL allPage = YES;//只有是全部才支持大纲的合并
     for (KMFileAttribute *file in _files) {
@@ -1038,6 +1057,7 @@ static KMPDFEditAppendWindow *windowController = nil;
                 [self->_progress setHidden:YES];
                 [self.nCancelVC setEnabled:YES];
                 self.canMerge = YES;
+                self.loading_backgroundView.hidden = YES;
             });
             return;
         }
@@ -1131,6 +1151,7 @@ static KMPDFEditAppendWindow *windowController = nil;
                                 [self->_progress setHidden:YES];
                                 [self.nCancelVC setEnabled:YES];
                                 self.canMerge = YES;
+                                self.loading_backgroundView.hidden = YES;
                                 
                                 if (self->_isSuccessfully) {
                                     [NSApp endSheet:[self window] returnCode:[(NSView *)sender tag]];
@@ -1172,6 +1193,7 @@ static KMPDFEditAppendWindow *windowController = nil;
                         [self->_progress setHidden:YES];
                         [self.nCancelVC setEnabled:YES];
                         self.canMerge = YES;
+                        self.loading_backgroundView.hidden = YES;
                     }
                 }];
             });
@@ -1215,6 +1237,7 @@ static KMPDFEditAppendWindow *windowController = nil;
                             [self->_progress setHidden:YES];
                             [self.nCancelVC setEnabled:YES];
                             self.canMerge = YES;
+                            self.loading_backgroundView.hidden = YES;
                             
                             if (self->_isSuccessfully) {
                                 [NSApp endSheet:[self window] returnCode:[(NSView *)sender tag]];
@@ -1256,6 +1279,7 @@ static KMPDFEditAppendWindow *windowController = nil;
                     [self->_progress setHidden:YES];
                     [self.nCancelVC setEnabled:YES];
                     self.canMerge = YES;
+                    self.loading_backgroundView.hidden = YES;
                 }
             }];
         } else {

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Compress/Controller/KMCompressWindowController.swift

@@ -21,7 +21,7 @@ extension NSView: KMLoadingProtocol {
     }
     
     func beginLoading() {
-        self .endLoading()
+        self.endLoading()
         
         if (Thread.isMainThread) {
             self.beginLoadingInMainThread()

+ 11 - 6
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -1538,6 +1538,10 @@ extension KMMainViewController {
     // MARK: 显示窗口
     
     internal func showCompressWindow() {
+        if let wc = self.currentWindowController as? KMCompressWindowController, let _ = wc.window?.isSheet {
+            KMPrint("压缩窗口已显示")
+            return
+        }
         let windowController = KMCompressWindowController(windowNibName: "KMCompressWindowController")
         self.view.window?.beginSheet(windowController.window!)
         self.currentWindowController = windowController
@@ -1572,6 +1576,11 @@ extension KMMainViewController {
     }
     
     internal func showConvertWindow(type: KMToolbarType, identifier: String?) {
+        if let wc = self.currentWindowController as? KMConvertBaseWindowController, let _ = wc.window?.isSheet {
+            KMPrint("转档窗口已显示")
+            return
+        }
+        
         var windowController: KMConvertBaseWindowController?
         if (type == .word) { /// Word
             windowController = KMConvertWordWindowController()
@@ -1613,12 +1622,8 @@ extension KMMainViewController {
             self?.currentWindowController = nil
         }
         
-        if let currentWindowController_ = self.currentWindowController as? KMConvertBaseWindowController, let window = currentWindowController_.window, window.isSheet {
-            KMPrint("转档窗口已显示")
-        } else {
-            self.view.window?.beginSheet((windowController?.window)!)
-            self.currentWindowController = windowController
-        }
+        self.view.window?.beginSheet((windowController?.window)!)
+        self.currentWindowController = windowController
     }
     
     internal func showPrintWindow(pageRange: KMPrintPageRange = KMPrintPageRange(type: .allPage, selectPages: [])) {