summaryrefslogtreecommitdiffstats
path: root/application/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'application/widgets')
-rw-r--r--application/widgets/VersionSelectWidget.cpp46
-rw-r--r--application/widgets/VersionSelectWidget.h5
2 files changed, 21 insertions, 30 deletions
diff --git a/application/widgets/VersionSelectWidget.cpp b/application/widgets/VersionSelectWidget.cpp
index 18284a91..1696d9d1 100644
--- a/application/widgets/VersionSelectWidget.cpp
+++ b/application/widgets/VersionSelectWidget.cpp
@@ -80,52 +80,42 @@ void VersionSelectWidget::initialize()
void VersionSelectWidget::closeEvent(QCloseEvent * event)
{
- if(loadTask)
- {
- loadTask->abort();
- loadTask->deleteLater();
- loadTask = nullptr;
- }
QWidget::closeEvent(event);
}
void VersionSelectWidget::loadList()
{
- if(loadTask)
+ auto newTask = m_vlist->getLoadTask();
+ if (!newTask)
{
return;
}
- loadTask = m_vlist->getLoadTask();
- if (!loadTask)
+ loadTask = newTask.get();
+ connect(loadTask, &Task::succeeded, this, &VersionSelectWidget::onTaskSucceeded);
+ connect(loadTask, &Task::failed, this, &VersionSelectWidget::onTaskFailed);
+ connect(loadTask, &Task::progress, this, &VersionSelectWidget::changeProgress);
+ if(!loadTask->isRunning())
{
- return;
+ loadTask->start();
}
- connect(loadTask, &Task::finished, this, &VersionSelectWidget::onTaskFinished);
- connect(loadTask, &Task::progress, this, &VersionSelectWidget::changeProgress);
- loadTask->start();
sneakyProgressBar->setHidden(false);
}
-void VersionSelectWidget::onTaskFinished()
+void VersionSelectWidget::onTaskSucceeded()
{
- if (!loadTask->successful())
- {
- CustomMessageBox::selectable(this, tr("Error"),
- tr("List update failed:\n%1").arg(loadTask->failReason()),
- QMessageBox::Warning)->show();
- if (m_proxyModel->rowCount() == 0)
- {
- listView->setEmptyMode(VersionListView::ErrorString);
- }
- }
- else if (m_proxyModel->rowCount() == 0)
+ if (m_proxyModel->rowCount() == 0)
{
listView->setEmptyMode(VersionListView::String);
}
sneakyProgressBar->setHidden(true);
- loadTask->deleteLater();
- loadTask = nullptr;
preselect();
+ loadTask = nullptr;
+}
+
+void VersionSelectWidget::onTaskFailed(const QString& reason)
+{
+ CustomMessageBox::selectable(this, tr("Error"), tr("List update failed:\n%1").arg(reason), QMessageBox::Warning)->show();
+ onTaskSucceeded();
}
void VersionSelectWidget::changeProgress(qint64 current, qint64 total)
@@ -178,4 +168,4 @@ void VersionSelectWidget::setExactFilter(BaseVersionList::ModelRoles role, QStri
void VersionSelectWidget::setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter)
{
m_proxyModel->setFilter(role, filter, false);
-} \ No newline at end of file
+}
diff --git a/application/widgets/VersionSelectWidget.h b/application/widgets/VersionSelectWidget.h
index 0fc9f2e6..66e512ac 100644
--- a/application/widgets/VersionSelectWidget.h
+++ b/application/widgets/VersionSelectWidget.h
@@ -55,7 +55,8 @@ protected:
virtual void closeEvent ( QCloseEvent* );
private slots:
- void onTaskFinished();
+ void onTaskSucceeded();
+ void onTaskFailed(const QString &reason);
void changeProgress(qint64 current, qint64 total);
void currentRowChanged(const QModelIndex &current, const QModelIndex &);
@@ -66,7 +67,7 @@ private:
BaseVersionList *m_vlist = nullptr;
VersionProxyModel *m_proxyModel = nullptr;
int resizeOnColumn = 0;
- Task * loadTask = nullptr;
+ Task * loadTask;
bool preselectedAlready = false;
private: