diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.cpp b/src/plugins/coreplugin/progressmanager/progressmanager.cpp index 1b9c1f6fe50..0de8c643ff1 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager.cpp +++ b/src/plugins/coreplugin/progressmanager/progressmanager.cpp @@ -780,21 +780,20 @@ void ProgressManager::cancelTasks(Id type) ProgressTimer::ProgressTimer(QObject *parent, - const QFutureInterface &futureInterface, + const QFutureInterfaceBase &futureInterface, int expectedSeconds) - : QTimer(parent), + : QObject(parent), m_futureInterface(futureInterface), m_expectedTime(expectedSeconds), m_currentTime(0) { - m_futureWatcher.setFuture(m_futureInterface.future()); - m_futureInterface.setProgressRange(0, 100); m_futureInterface.setProgressValue(0); - setInterval(1000); // 1 second - connect(this, &QTimer::timeout, this, &ProgressTimer::handleTimeout); - connect(&m_futureWatcher, &QFutureWatcherBase::started, this, [this]() { start(); }); + m_timer = new QTimer(this); + m_timer->setInterval(1000); // 1 second + connect(m_timer, &QTimer::timeout, this, &ProgressTimer::handleTimeout); + m_timer->start(); } void ProgressTimer::handleTimeout() diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.h b/src/plugins/coreplugin/progressmanager/progressmanager.h index a5941fe215c..97aa9207765 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager.h +++ b/src/plugins/coreplugin/progressmanager/progressmanager.h @@ -29,8 +29,11 @@ #include #include -#include #include +#include +#include + +QT_FORWARD_DECLARE_CLASS(QTimer) namespace Core { class FutureProgress; @@ -69,6 +72,20 @@ private: friend class Core::Internal::ProgressManagerPrivate; }; +class CORE_EXPORT ProgressTimer : public QObject +{ +public: + ProgressTimer(QObject *parent, const QFutureInterfaceBase &futureInterface, int expectedSeconds); + +private: + void handleTimeout(); + + QFutureInterfaceBase m_futureInterface; + int m_expectedTime; + int m_currentTime; + QTimer *m_timer; +}; + } // namespace Core Q_DECLARE_OPERATORS_FOR_FLAGS(Core::ProgressManager::ProgressFlags) diff --git a/src/plugins/coreplugin/progressmanager/progressmanager_p.h b/src/plugins/coreplugin/progressmanager/progressmanager_p.h index 5603bd750d0..2217f78186e 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager_p.h +++ b/src/plugins/coreplugin/progressmanager/progressmanager_p.h @@ -34,7 +34,6 @@ #include #include #include -#include #include namespace Core { @@ -121,23 +120,6 @@ public: void paintEvent(QPaintEvent *event); }; - -class ProgressTimer : public QTimer -{ - Q_OBJECT - -public: - ProgressTimer(QObject *parent, const QFutureInterface &futureInterface, int expectedSeconds); - -private: - void handleTimeout(); - - QFutureInterface m_futureInterface; - QFutureWatcher m_futureWatcher; - int m_expectedTime; - int m_currentTime; -}; - } // namespace Internal } // namespace Core