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:
Rachel Powers 2024-10-14 00:32:12 -07:00
parent f239f4c17c
commit a108b5b420
No known key found for this signature in database
GPG Key ID: E10E321EB160949B
2 changed files with 14 additions and 9 deletions

View File

@ -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);

View File

@ -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;