remove UI objects when a task is deleted
This commit is contained in:
@@ -30,6 +30,11 @@ TaskManager::TaskManager()
|
||||
maximum_task_count_ = QThread::idealThreadCount();
|
||||
}
|
||||
|
||||
TaskManager::~TaskManager()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
void TaskManager::AddTask(Task* t)
|
||||
{
|
||||
// Connect Task's status signal to the Callback
|
||||
@@ -45,6 +50,17 @@ void TaskManager::AddTask(Task* t)
|
||||
StartNextWaiting();
|
||||
}
|
||||
|
||||
void TaskManager::Clear()
|
||||
{
|
||||
// TODO Cancelling tasks
|
||||
|
||||
// Delete Tasks from memory
|
||||
for (int i=0;i<tasks_.size();i++) {
|
||||
delete tasks_.at(i);
|
||||
}
|
||||
tasks_.clear();
|
||||
}
|
||||
|
||||
void TaskManager::StartNextWaiting()
|
||||
{
|
||||
// Count the tasks that are currently active
|
||||
|
||||
@@ -42,6 +42,33 @@ public:
|
||||
*/
|
||||
TaskManager();
|
||||
|
||||
/**
|
||||
* @brief TaskManager Destructor
|
||||
*
|
||||
* Ensures all Tasks are deleted
|
||||
*/
|
||||
virtual ~TaskManager();
|
||||
|
||||
/**
|
||||
* @brief Deleted copy constructor
|
||||
*/
|
||||
TaskManager(const TaskManager& other) = delete;
|
||||
|
||||
/**
|
||||
* @brief Deleted move constructor
|
||||
*/
|
||||
TaskManager(TaskManager&& other) = delete;
|
||||
|
||||
/**
|
||||
* @brief Deleted copy assignment
|
||||
*/
|
||||
TaskManager& operator=(const TaskManager& other) = delete;
|
||||
|
||||
/**
|
||||
* @brief Deleted move assignment
|
||||
*/
|
||||
TaskManager& operator=(TaskManager&& other) = delete;
|
||||
|
||||
/**
|
||||
* @brief Add a new Task
|
||||
*
|
||||
@@ -56,6 +83,11 @@ public:
|
||||
*/
|
||||
void AddTask(Task *t);
|
||||
|
||||
/**
|
||||
* @brief Forcibly
|
||||
*/
|
||||
void Clear();
|
||||
|
||||
signals:
|
||||
/**
|
||||
* @brief Signal emitted when a Task is added by AddTask()
|
||||
|
||||
@@ -52,6 +52,7 @@ void TaskViewItem::SetTask(Task *t)
|
||||
if (task_ != nullptr) {
|
||||
disconnect(task_, SIGNAL(StatusChanged(Task::Status)), this, SLOT(TaskStatusChange(Task::Status)));
|
||||
disconnect(task_, SIGNAL(ProgressChanged(int)), progress_bar_, SLOT(setValue(int)));
|
||||
disconnect(task_, SIGNAL(destroyed()), this, SLOT(deleteLater()));
|
||||
}
|
||||
|
||||
// Set task
|
||||
@@ -61,8 +62,9 @@ void TaskViewItem::SetTask(Task *t)
|
||||
task_name_lbl_->setText(QString("<b>%1</b>").arg(task_->text()));
|
||||
|
||||
// Connect to the task
|
||||
connect(t, SIGNAL(StatusChanged(Task::Status)), this, SLOT(TaskStatusChange(Task::Status)));
|
||||
connect(t, SIGNAL(ProgressChanged(int)), progress_bar_, SLOT(setValue(int)));
|
||||
connect(task_, SIGNAL(StatusChanged(Task::Status)), this, SLOT(TaskStatusChange(Task::Status)));
|
||||
connect(task_, SIGNAL(ProgressChanged(int)), progress_bar_, SLOT(setValue(int)));
|
||||
connect(task_, SIGNAL(destroyed()), this, SLOT(deleteLater()));
|
||||
}
|
||||
|
||||
void TaskViewItem::TaskStatusChange(Task::Status status)
|
||||
|
||||
Reference in New Issue
Block a user