forked from qt-creator/qt-creator
TaskProgress: Add setAutoStopOnCancel() property
By default it's true. When turned off task progress just emits canceled() signal and leaves the further handling to the user. Change-Id: Ice4456ac5ead5ca45712d1eb2c988302b273760c Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -82,7 +82,7 @@ ProcessProgress::ProcessProgress(QtcProcess *process)
|
|||||||
, d(new ProcessProgressPrivate(this, process))
|
, d(new ProcessProgressPrivate(this, process))
|
||||||
{
|
{
|
||||||
connect(&d->m_watcher, &QFutureWatcher<void>::canceled, this, [this] {
|
connect(&d->m_watcher, &QFutureWatcher<void>::canceled, this, [this] {
|
||||||
d->m_process->stop(); // TODO: should we have different cancel policies?
|
d->m_process->stop(); // TODO: See TaskProgress::setAutoStopOnCancel
|
||||||
});
|
});
|
||||||
connect(d->m_process, &QtcProcess::starting, this, [this] {
|
connect(d->m_process, &QtcProcess::starting, this, [this] {
|
||||||
d->m_futureInterface = QFutureInterface<void>();
|
d->m_futureInterface = QFutureInterface<void>();
|
||||||
|
@@ -39,6 +39,7 @@ public:
|
|||||||
QFutureWatcher<void> m_watcher;
|
QFutureWatcher<void> m_watcher;
|
||||||
QFutureInterface<void> m_futureInterface;
|
QFutureInterface<void> m_futureInterface;
|
||||||
QPointer<FutureProgress> m_futureProgress;
|
QPointer<FutureProgress> m_futureProgress;
|
||||||
|
bool m_isAutoStopOnCancel = true;
|
||||||
int m_halfLifeTimePerTask = 1000; // 1000 ms
|
int m_halfLifeTimePerTask = 1000; // 1000 ms
|
||||||
QString m_displayName;
|
QString m_displayName;
|
||||||
FutureProgress::KeepOnFinishType m_keep = FutureProgress::HideOnFinish;
|
FutureProgress::KeepOnFinishType m_keep = FutureProgress::HideOnFinish;
|
||||||
@@ -99,7 +100,9 @@ TaskProgress::TaskProgress(TaskTree *taskTree)
|
|||||||
, d(new TaskProgressPrivate(this, taskTree))
|
, d(new TaskProgressPrivate(this, taskTree))
|
||||||
{
|
{
|
||||||
connect(&d->m_watcher, &QFutureWatcher<void>::canceled, this, [this] {
|
connect(&d->m_watcher, &QFutureWatcher<void>::canceled, this, [this] {
|
||||||
d->m_taskTree->stop(); // TODO: should we have different cancel policies?
|
emit canceled();
|
||||||
|
if (d->m_isAutoStopOnCancel)
|
||||||
|
d->m_taskTree->stop();
|
||||||
});
|
});
|
||||||
connect(d->m_taskTree, &TaskTree::started, this, [this] {
|
connect(d->m_taskTree, &TaskTree::started, this, [this] {
|
||||||
d->m_futureInterface = QFutureInterface<void>();
|
d->m_futureInterface = QFutureInterface<void>();
|
||||||
@@ -133,6 +136,11 @@ TaskProgress::TaskProgress(TaskTree *taskTree)
|
|||||||
|
|
||||||
TaskProgress::~TaskProgress() = default;
|
TaskProgress::~TaskProgress() = default;
|
||||||
|
|
||||||
|
void TaskProgress::setAutoStopOnCancel(bool enable)
|
||||||
|
{
|
||||||
|
d->m_isAutoStopOnCancel = enable;
|
||||||
|
}
|
||||||
|
|
||||||
void TaskProgress::setHalfLifeTimePerTask(int msecs)
|
void TaskProgress::setHalfLifeTimePerTask(int msecs)
|
||||||
{
|
{
|
||||||
d->m_halfLifeTimePerTask = msecs;
|
d->m_halfLifeTimePerTask = msecs;
|
||||||
|
@@ -17,16 +17,22 @@ class TaskProgressPrivate;
|
|||||||
|
|
||||||
class CORE_EXPORT TaskProgress : public QObject
|
class CORE_EXPORT TaskProgress : public QObject
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TaskProgress(Utils::TaskTree *taskTree); // Makes TaskProgress a child of task tree
|
TaskProgress(Utils::TaskTree *taskTree); // Makes TaskProgress a child of task tree
|
||||||
~TaskProgress() override;
|
~TaskProgress() override;
|
||||||
|
|
||||||
|
void setAutoStopOnCancel(bool enable); // Default is true
|
||||||
void setHalfLifeTimePerTask(int msecs); // Default is 1000 ms
|
void setHalfLifeTimePerTask(int msecs); // Default is 1000 ms
|
||||||
void setDisplayName(const QString &name);
|
void setDisplayName(const QString &name);
|
||||||
void setKeepOnFinish(FutureProgress::KeepOnFinishType keepType);
|
void setKeepOnFinish(FutureProgress::KeepOnFinishType keepType);
|
||||||
void setSubtitleVisibleInStatusBar(bool visible);
|
void setSubtitleVisibleInStatusBar(bool visible);
|
||||||
void setSubtitle(const QString &subtitle);
|
void setSubtitle(const QString &subtitle);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void canceled();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<TaskProgressPrivate> d;
|
std::unique_ptr<TaskProgressPrivate> d;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user