File indexing completed on 2024-05-19 04:26:30

0001 /*
0002  *  SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "kis_processing_visitor.h"
0008 
0009 #include <KoUpdater.h>
0010 #include <KoProgressUpdater.h>
0011 #include "kis_node_progress_proxy.h"
0012 #include "kis_node.h"
0013 #include <KLocalizedString>
0014 #include <QTimer>
0015 
0016 KisProcessingVisitor::ProgressHelper::ProgressHelper(const KisNode *node)
0017 {
0018     KIS_ASSERT(node);
0019     KisNodeProgressProxy *progressProxy = node->nodeProgressProxy();
0020 
0021     if(progressProxy) {
0022         m_progressUpdater = new KoProgressUpdater(progressProxy);
0023         m_progressUpdater->setObjectName("ProgressHelper::m_progressUpdater");
0024         m_progressUpdater->start(100, i18n("Processing"));
0025         m_progressUpdater->moveToThread(node->thread());
0026     }
0027     else {
0028         m_progressUpdater = 0;
0029     }
0030 }
0031 
0032 KisProcessingVisitor::ProgressHelper::~ProgressHelper()
0033 {
0034     if (m_progressUpdater) {
0035         m_progressUpdater->deleteLater();
0036     }
0037 }
0038 
0039 KoUpdater* KisProcessingVisitor::ProgressHelper::updater() const
0040 {
0041     return m_progressUpdater ? m_progressUpdater->startSubtask() : 0;
0042 }
0043 
0044 void KisProcessingVisitor::ProgressHelper::cancel()
0045 {
0046     if (m_progressUpdater) {
0047         QTimer::singleShot(0, m_progressUpdater, &KoProgressUpdater::cancel);
0048     }
0049 }
0050 
0051 KisProcessingVisitor::~KisProcessingVisitor()
0052 {
0053 }
0054 
0055 KUndo2Command *KisProcessingVisitor::createInitCommand()
0056 {
0057     return 0;
0058 }