fix: ensure all connections to the ProgressDialogs's Task the dialog made are dissconnected
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
This commit is contained in:
parent
f239f4c17c
commit
a108b5b420
@ -90,6 +90,9 @@ void ProgressDialog::on_skipButton_clicked(bool checked)
|
||||
|
||||
ProgressDialog::~ProgressDialog()
|
||||
{
|
||||
for (auto conn : this->m_taskConnections) {
|
||||
disconnect(conn);
|
||||
}
|
||||
delete ui;
|
||||
}
|
||||
|
||||
@ -140,15 +143,15 @@ int ProgressDialog::execWithTask(Task* task)
|
||||
}
|
||||
|
||||
// Connect signals.
|
||||
connect(task, &Task::started, this, &ProgressDialog::onTaskStarted);
|
||||
connect(task, &Task::failed, this, &ProgressDialog::onTaskFailed);
|
||||
connect(task, &Task::succeeded, this, &ProgressDialog::onTaskSucceeded);
|
||||
connect(task, &Task::status, this, &ProgressDialog::changeStatus);
|
||||
connect(task, &Task::details, this, &ProgressDialog::changeStatus);
|
||||
connect(task, &Task::stepProgress, this, &ProgressDialog::changeStepProgress);
|
||||
connect(task, &Task::progress, this, &ProgressDialog::changeProgress);
|
||||
connect(task, &Task::aborted, this, &ProgressDialog::hide);
|
||||
connect(task, &Task::abortStatusChanged, ui->skipButton, &QPushButton::setEnabled);
|
||||
this->m_taskConnections.push_back(connect(task, &Task::started, this, &ProgressDialog::onTaskStarted));
|
||||
this->m_taskConnections.push_back(connect(task, &Task::failed, this, &ProgressDialog::onTaskFailed));
|
||||
this->m_taskConnections.push_back(connect(task, &Task::succeeded, this, &ProgressDialog::onTaskSucceeded));
|
||||
this->m_taskConnections.push_back(connect(task, &Task::status, this, &ProgressDialog::changeStatus));
|
||||
this->m_taskConnections.push_back(connect(task, &Task::details, this, &ProgressDialog::changeStatus));
|
||||
this->m_taskConnections.push_back(connect(task, &Task::stepProgress, this, &ProgressDialog::changeStepProgress));
|
||||
this->m_taskConnections.push_back(connect(task, &Task::progress, this, &ProgressDialog::changeProgress));
|
||||
this->m_taskConnections.push_back(connect(task, &Task::aborted, this, &ProgressDialog::hide));
|
||||
this->m_taskConnections.push_back(connect(task, &Task::abortStatusChanged, ui->skipButton, &QPushButton::setEnabled));
|
||||
|
||||
m_is_multi_step = task->isMultiStep();
|
||||
ui->taskProgressScrollArea->setHidden(!m_is_multi_step);
|
||||
|
@ -93,6 +93,8 @@ class ProgressDialog : public QDialog {
|
||||
Ui::ProgressDialog* ui;
|
||||
|
||||
Task* m_task;
|
||||
|
||||
QList<QMetaObject::Connection> m_taskConnections;
|
||||
|
||||
bool m_is_multi_step = false;
|
||||
QHash<QUuid, SubTaskProgressBar*> taskProgress;
|
||||
|
Loading…
Reference in New Issue
Block a user