From d8caab515aa641ec901592d40b5d30c6dfd282f5 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sun, 26 Jul 2015 17:55:29 +0200 Subject: GH-1053 add back update progress dialog --- application/dialogs/ProgressDialog.cpp | 37 +++++++++++++++++++++++++++++++++- application/dialogs/ProgressDialog.h | 3 +++ 2 files changed, 39 insertions(+), 1 deletion(-) (limited to 'application/dialogs') diff --git a/application/dialogs/ProgressDialog.cpp b/application/dialogs/ProgressDialog.cpp index 9a437d7a..939c5870 100644 --- a/application/dialogs/ProgressDialog.cpp +++ b/application/dialogs/ProgressDialog.cpp @@ -57,6 +57,12 @@ void ProgressDialog::updateSize() int ProgressDialog::exec(Task *task) { this->task = task; + QDialog::DialogCode result; + + if(handleImmediateResult(result)) + { + return result; + } // Connect signals. connect(task, SIGNAL(started()), SLOT(onTaskStarted())); @@ -67,11 +73,40 @@ int ProgressDialog::exec(Task *task) // if this didn't connect to an already running task, invoke start if(!task->isRunning()) + { task->start(); + } if(task->isRunning()) + { + changeProgress(task->getProgress(), task->getTotalProgress()); + changeStatus(task->getStatus()); return QDialog::exec(); + } + else if(handleImmediateResult(result)) + { + return result; + } else - return QDialog::Accepted; + { + return QDialog::Rejected; + } +} + +bool ProgressDialog::handleImmediateResult(QDialog::DialogCode &result) +{ + if(task->isFinished()) + { + if(task->successful()) + { + result = QDialog::Accepted; + } + else + { + result = QDialog::Rejected; + } + return true; + } + return false; } Task *ProgressDialog::getTask() diff --git a/application/dialogs/ProgressDialog.h b/application/dialogs/ProgressDialog.h index fb80d0ce..44cbbe88 100644 --- a/application/dialogs/ProgressDialog.h +++ b/application/dialogs/ProgressDialog.h @@ -58,6 +58,9 @@ protected: virtual void keyPressEvent(QKeyEvent *e); virtual void closeEvent(QCloseEvent *e); +private: + bool handleImmediateResult(QDialog::DialogCode &result); + private: Ui::ProgressDialog *ui; -- cgit