forked from qt-creator/qt-creator
RunExtensions: Move onResultReady and onFinished into asynctask.h
Change-Id: I96dbf5b0253251224ae678172cd5fca12b34326a Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
@@ -14,7 +14,6 @@
|
|||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QDirIterator>
|
#include <QDirIterator>
|
||||||
|
@@ -45,6 +45,76 @@ auto asyncRun(Function &&function, Args &&...args)
|
|||||||
std::forward<Function>(function), std::forward<Args>(args)...);
|
std::forward<Function>(function), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Adds a handler for when a result is ready.
|
||||||
|
This creates a new QFutureWatcher. Do not use if you intend to react on multiple conditions
|
||||||
|
or create a QFutureWatcher already for other reasons.
|
||||||
|
*/
|
||||||
|
template <typename R, typename T>
|
||||||
|
const QFuture<T> &onResultReady(const QFuture<T> &future, R *receiver, void(R::*member)(const T &))
|
||||||
|
{
|
||||||
|
auto watcher = new QFutureWatcher<T>();
|
||||||
|
QObject::connect(watcher, &QFutureWatcherBase::finished, watcher, &QObject::deleteLater);
|
||||||
|
QObject::connect(watcher, &QFutureWatcherBase::resultReadyAt, receiver, [=](int index) {
|
||||||
|
(receiver->*member)(watcher->future().resultAt(index));
|
||||||
|
});
|
||||||
|
watcher->setFuture(future);
|
||||||
|
return future;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Adds a handler for when a result is ready. The guard object determines the lifetime of
|
||||||
|
the connection.
|
||||||
|
This creates a new QFutureWatcher. Do not use if you intend to react on multiple conditions
|
||||||
|
or create a QFutureWatcher already for other reasons.
|
||||||
|
*/
|
||||||
|
template <typename T, typename Function>
|
||||||
|
const QFuture<T> &onResultReady(const QFuture<T> &future, QObject *guard, Function f)
|
||||||
|
{
|
||||||
|
auto watcher = new QFutureWatcher<T>();
|
||||||
|
QObject::connect(watcher, &QFutureWatcherBase::finished, watcher, &QObject::deleteLater);
|
||||||
|
QObject::connect(watcher, &QFutureWatcherBase::resultReadyAt, guard, [f, watcher](int index) {
|
||||||
|
f(watcher->future().resultAt(index));
|
||||||
|
});
|
||||||
|
watcher->setFuture(future);
|
||||||
|
return future;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Adds a handler for when the future is finished.
|
||||||
|
This creates a new QFutureWatcher. Do not use if you intend to react on multiple conditions
|
||||||
|
or create a QFutureWatcher already for other reasons.
|
||||||
|
*/
|
||||||
|
template<typename R, typename T>
|
||||||
|
const QFuture<T> &onFinished(const QFuture<T> &future,
|
||||||
|
R *receiver, void (R::*member)(const QFuture<T> &))
|
||||||
|
{
|
||||||
|
auto watcher = new QFutureWatcher<T>();
|
||||||
|
QObject::connect(watcher, &QFutureWatcherBase::finished, watcher, &QObject::deleteLater);
|
||||||
|
QObject::connect(watcher, &QFutureWatcherBase::finished, receiver,
|
||||||
|
[=] { (receiver->*member)(watcher->future()); });
|
||||||
|
watcher->setFuture(future);
|
||||||
|
return future;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Adds a handler for when the future is finished. The guard object determines the lifetime of
|
||||||
|
the connection.
|
||||||
|
This creates a new QFutureWatcher. Do not use if you intend to react on multiple conditions
|
||||||
|
or create a QFutureWatcher already for other reasons.
|
||||||
|
*/
|
||||||
|
template<typename T, typename Function>
|
||||||
|
const QFuture<T> &onFinished(const QFuture<T> &future, QObject *guard, Function f)
|
||||||
|
{
|
||||||
|
auto watcher = new QFutureWatcher<T>();
|
||||||
|
QObject::connect(watcher, &QFutureWatcherBase::finished, watcher, &QObject::deleteLater);
|
||||||
|
QObject::connect(watcher, &QFutureWatcherBase::finished, guard, [f, watcher] {
|
||||||
|
f(watcher->future());
|
||||||
|
});
|
||||||
|
watcher->setFuture(future);
|
||||||
|
return future;
|
||||||
|
}
|
||||||
|
|
||||||
class QTCREATOR_UTILS_EXPORT AsyncTaskBase : public QObject
|
class QTCREATOR_UTILS_EXPORT AsyncTaskBase : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@@ -476,79 +476,4 @@ runAsync(QThreadPool *pool, Function &&function, Args&&... args)
|
|||||||
std::forward<Args>(args)...);
|
std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Adds a handler for when a result is ready.
|
|
||||||
This creates a new QFutureWatcher. Do not use if you intend to react on multiple conditions
|
|
||||||
or create a QFutureWatcher already for other reasons.
|
|
||||||
*/
|
|
||||||
template <typename R, typename T>
|
|
||||||
const QFuture<T> &onResultReady(const QFuture<T> &future, R *receiver, void(R::*member)(const T &))
|
|
||||||
{
|
|
||||||
auto watcher = new QFutureWatcher<T>();
|
|
||||||
QObject::connect(watcher, &QFutureWatcherBase::finished, watcher, &QObject::deleteLater);
|
|
||||||
QObject::connect(watcher, &QFutureWatcherBase::resultReadyAt, receiver,
|
|
||||||
[receiver, member, watcher](int index) {
|
|
||||||
(receiver->*member)(watcher->future().resultAt(index));
|
|
||||||
});
|
|
||||||
watcher->setFuture(future);
|
|
||||||
return future;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Adds a handler for when a result is ready. The guard object determines the lifetime of
|
|
||||||
the connection.
|
|
||||||
This creates a new QFutureWatcher. Do not use if you intend to react on multiple conditions
|
|
||||||
or create a QFutureWatcher already for other reasons.
|
|
||||||
*/
|
|
||||||
template <typename T, typename Function>
|
|
||||||
const QFuture<T> &onResultReady(const QFuture<T> &future, QObject *guard, Function f)
|
|
||||||
{
|
|
||||||
auto watcher = new QFutureWatcher<T>();
|
|
||||||
QObject::connect(watcher, &QFutureWatcherBase::finished, watcher, &QObject::deleteLater);
|
|
||||||
QObject::connect(watcher, &QFutureWatcherBase::resultReadyAt, guard, [f, watcher](int index) {
|
|
||||||
f(watcher->future().resultAt(index));
|
|
||||||
});
|
|
||||||
watcher->setFuture(future);
|
|
||||||
return future;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Adds a handler for when the future is finished.
|
|
||||||
This creates a new QFutureWatcher. Do not use if you intend to react on multiple conditions
|
|
||||||
or create a QFutureWatcher already for other reasons.
|
|
||||||
*/
|
|
||||||
template<typename R, typename T>
|
|
||||||
const QFuture<T> &onFinished(const QFuture<T> &future,
|
|
||||||
R *receiver,
|
|
||||||
void (R::*member)(const QFuture<T> &))
|
|
||||||
{
|
|
||||||
auto watcher = new QFutureWatcher<T>();
|
|
||||||
QObject::connect(watcher, &QFutureWatcherBase::finished, watcher, &QObject::deleteLater);
|
|
||||||
QObject::connect(watcher,
|
|
||||||
&QFutureWatcherBase::finished,
|
|
||||||
receiver,
|
|
||||||
[receiver, member, watcher] { (receiver->*member)(watcher->future()); });
|
|
||||||
watcher->setFuture(future);
|
|
||||||
return future;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Adds a handler for when the future is finished. The guard object determines the lifetime of
|
|
||||||
the connection.
|
|
||||||
This creates a new QFutureWatcher. Do not use if you intend to react on multiple conditions
|
|
||||||
or create a QFutureWatcher already for other reasons.
|
|
||||||
*/
|
|
||||||
template<typename T, typename Function>
|
|
||||||
const QFuture<T> &onFinished(const QFuture<T> &future, QObject *guard, Function f)
|
|
||||||
{
|
|
||||||
auto watcher = new QFutureWatcher<T>();
|
|
||||||
QObject::connect(watcher, &QFutureWatcherBase::finished, watcher, &QObject::deleteLater);
|
|
||||||
QObject::connect(watcher, &QFutureWatcherBase::finished, guard, [f, watcher] {
|
|
||||||
f(watcher->future());
|
|
||||||
});
|
|
||||||
watcher->setFuture(future);
|
|
||||||
return future;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Utils
|
} // namespace Utils
|
||||||
|
@@ -24,7 +24,6 @@
|
|||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
#include <utils/stringutils.h>
|
#include <utils/stringutils.h>
|
||||||
#include <utils/temporaryfile.h>
|
#include <utils/temporaryfile.h>
|
||||||
#include <utils/url.h>
|
#include <utils/url.h>
|
||||||
|
@@ -9,10 +9,10 @@
|
|||||||
|
|
||||||
#include <app/app_version.h>
|
#include <app/app_version.h>
|
||||||
|
|
||||||
|
#include <utils/asynctask.h>
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
#include <utils/outputformatter.h>
|
#include <utils/outputformatter.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
#include <QAbstractButton>
|
#include <QAbstractButton>
|
||||||
|
@@ -16,7 +16,6 @@
|
|||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/asynctask.h>
|
#include <utils/asynctask.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
|
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include "../modemanager.h"
|
#include "../modemanager.h"
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
#include <utils/asynctask.h>
|
||||||
#include <utils/appmainwindow.h>
|
#include <utils/appmainwindow.h>
|
||||||
#include <utils/fancylineedit.h>
|
#include <utils/fancylineedit.h>
|
||||||
#include <utils/fsengine/fileiconprovider.h>
|
#include <utils/fsengine/fileiconprovider.h>
|
||||||
|
@@ -18,7 +18,6 @@
|
|||||||
#include <utils/pathchooser.h>
|
#include <utils/pathchooser.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
#include <utils/temporarydirectory.h>
|
#include <utils/temporarydirectory.h>
|
||||||
#include <utils/wizard.h>
|
#include <utils/wizard.h>
|
||||||
#include <utils/wizardpage.h>
|
#include <utils/wizardpage.h>
|
||||||
|
@@ -109,7 +109,7 @@ namespace Core {
|
|||||||
start a task concurrently in a different thread.
|
start a task concurrently in a different thread.
|
||||||
QtConcurrent has several different functions to run e.g.
|
QtConcurrent has several different functions to run e.g.
|
||||||
a class function in a different thread. Qt Creator itself
|
a class function in a different thread. Qt Creator itself
|
||||||
adds a few more in \c{src/libs/qtconcurrent/runextensions.h}.
|
adds a few more in \c{src/libs/utils/asynctask.h}.
|
||||||
The QtConcurrent functions to run a concurrent task return a
|
The QtConcurrent functions to run a concurrent task return a
|
||||||
\c QFuture object. This is what you want to give the
|
\c QFuture object. This is what you want to give the
|
||||||
ProgressManager in the addTask() function.
|
ProgressManager in the addTask() function.
|
||||||
|
@@ -19,7 +19,6 @@
|
|||||||
#include <utils/filesearch.h>
|
#include <utils/filesearch.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QFuture>
|
#include <QFuture>
|
||||||
|
@@ -42,12 +42,12 @@
|
|||||||
#include <texteditor/textmark.h>
|
#include <texteditor/textmark.h>
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
#include <utils/asynctask.h>
|
||||||
#include <utils/commandline.h>
|
#include <utils/commandline.h>
|
||||||
#include <utils/infobar.h>
|
#include <utils/infobar.h>
|
||||||
#include <utils/parameteraction.h>
|
#include <utils/parameteraction.h>
|
||||||
#include <utils/pathchooser.h>
|
#include <utils/pathchooser.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
#include <utils/stringutils.h>
|
#include <utils/stringutils.h>
|
||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
|
@@ -14,7 +14,6 @@
|
|||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
#include <utils/asynctask.h>
|
#include <utils/asynctask.h>
|
||||||
#include <utils/filesystemwatcher.h>
|
#include <utils/filesystemwatcher.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
@@ -7,8 +7,8 @@
|
|||||||
#include "simulatorcontrol.h"
|
#include "simulatorcontrol.h"
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
#include <utils/asynctask.h>
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
|
@@ -12,9 +12,9 @@
|
|||||||
#include "simulatoroperationdialog.h"
|
#include "simulatoroperationdialog.h"
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
#include <utils/asynctask.h>
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
#include <utils/pathchooser.h>
|
#include <utils/pathchooser.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
@@ -17,7 +17,6 @@
|
|||||||
#include <utils/futuresynchronizer.h>
|
#include <utils/futuresynchronizer.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
#include <utils/temporarydirectory.h>
|
#include <utils/temporarydirectory.h>
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
@@ -8,7 +8,6 @@
|
|||||||
#include <utils/asynctask.h>
|
#include <utils/asynctask.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
#include "iostr.h"
|
#include "iostr.h"
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/runextensions.h>
|
#include <utils/asynctask.h>
|
||||||
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
|
@@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
#include <utils/asynctask.h>
|
#include <utils/asynctask.h>
|
||||||
#include <utils/fileinprojectfinder.h>
|
#include <utils/fileinprojectfinder.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
|
@@ -50,7 +50,6 @@
|
|||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/asynctask.h>
|
#include <utils/asynctask.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/runextensions.h>
|
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
// Copyright (C) 2016 The Qt Company Ltd.
|
// Copyright (C) 2016 The Qt Company Ltd.
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
|
#include <utils/asynctask.h>
|
||||||
#include <utils/runextensions.h>
|
#include <utils/runextensions.h>
|
||||||
|
|
||||||
#include <QtTest>
|
#include <QtTest>
|
||||||
|
Reference in New Issue
Block a user