statusbar: disconnect old task when connecting a new one

This commit is contained in:
itsmattkc
2020-06-18 15:06:07 +10:00
parent c5dd406ff1
commit 897b9ca3dd
2 changed files with 22 additions and 3 deletions
+18 -3
View File
@@ -26,7 +26,8 @@ OLIVE_NAMESPACE_ENTER
MainStatusBar::MainStatusBar(QWidget *parent) :
QStatusBar(parent),
manager_(nullptr)
manager_(nullptr),
connected_task_(nullptr)
{
setSizeGripEnabled(false);
@@ -37,7 +38,8 @@ MainStatusBar::MainStatusBar(QWidget *parent) :
bar_->setMaximum(100);
bar_->setVisible(false);
showMessage(tr("Welcome to %1 %2").arg(QCoreApplication::applicationName(), QCoreApplication::applicationVersion()));
showMessage(tr("Welcome to %1 %2").arg(QCoreApplication::applicationName(),
QCoreApplication::applicationVersion()));
}
void MainStatusBar::ConnectTaskManager(TaskManager *manager)
@@ -73,7 +75,15 @@ void MainStatusBar::UpdateStatus()
}
bar_->setVisible(true);
connect(t, &Task::ProgressChanged, this, &MainStatusBar::SetProgressBarValue);
if (connected_task_) {
disconnect(connected_task_, &Task::ProgressChanged, this, &MainStatusBar::SetProgressBarValue);
disconnect(connected_task_, &Task::destroyed, this, &MainStatusBar::ConnectedTaskDeleted);
}
connected_task_ = t;
connect(connected_task_, &Task::ProgressChanged, this, &MainStatusBar::SetProgressBarValue);
connect(connected_task_, &Task::destroyed, this, &MainStatusBar::ConnectedTaskDeleted);
}
}
@@ -82,6 +92,11 @@ void MainStatusBar::SetProgressBarValue(double d)
bar_->setValue(qRound(100.0 * d));
}
void MainStatusBar::ConnectedTaskDeleted()
{
connected_task_ = nullptr;
}
void MainStatusBar::mouseDoubleClickEvent(QMouseEvent* e)
{
QStatusBar::mouseDoubleClickEvent(e);
+4
View File
@@ -50,11 +50,15 @@ private slots:
void SetProgressBarValue(double d);
void ConnectedTaskDeleted();
private:
TaskManager* manager_;
QProgressBar* bar_;
Task* connected_task_;
};
OLIVE_NAMESPACE_EXIT