statusbar: disconnect old task when connecting a new one
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -50,11 +50,15 @@ private slots:
|
||||
|
||||
void SetProgressBarValue(double d);
|
||||
|
||||
void ConnectedTaskDeleted();
|
||||
|
||||
private:
|
||||
TaskManager* manager_;
|
||||
|
||||
QProgressBar* bar_;
|
||||
|
||||
Task* connected_task_;
|
||||
|
||||
};
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
Reference in New Issue
Block a user