From ebd2144dde412355367fb1bcd78495bca76db65d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Frimberger?= Date: Thu, 20 Sep 2012 21:20:04 +0200 Subject: [PATCH] Added label for displaying errors to progressbar widget. Also improved error handling a bit. Closing a tab before download finished does no longer show a message box. --- partwin.cpp | 15 +++++++ progresswidget.cpp | 17 ++++++++ progresswidget.h | 4 ++ progresswidget.ui | 98 ++++++++++++++++++++++++++++++++++++---------- 4 files changed, 114 insertions(+), 20 deletions(-) diff --git a/partwin.cpp b/partwin.cpp index ba32e79..841708a 100644 --- a/partwin.cpp +++ b/partwin.cpp @@ -137,6 +137,21 @@ PartWin::~PartWin() bool PartWin::readData(QIODevice *source, const QString &format) { + // NPRES_NETWORK_ERR: + if (source->errorString() == "Network error during download.") { + // this error message is also set when user aborts download before it finished. + m_progressWidget->resetProgressBar(); + m_progressWidget->setErrorMessage("Error occurred during download. Reload tab to retry."); + return false; + } + + // NPRES_USER_BREAK: + if (source->errorString() == "User cancelled operation.") { + m_progressWidget->resetProgressBar(); + m_progressWidget->setErrorMessage("Error occurred during download. Reload tab to retry."); + return false; + } + // Download finished m_progressWidget->setValue(m_progressWidget->getMaximum()); diff --git a/progresswidget.cpp b/progresswidget.cpp index 6e51523..e042868 100644 --- a/progresswidget.cpp +++ b/progresswidget.cpp @@ -26,6 +26,7 @@ ProgressWidget::ProgressWidget(QWidget *parent) : QWidget(parent), m_ui(new Ui: { m_ui->setupUi(this); + m_ui->lblErrorMessage->setText(""); m_ui->lblDownloadSpeed->setText(""); m_ui->lblRemainingDlTime->setText(""); @@ -140,6 +141,22 @@ void ProgressWidget::setFileName(const QString& fileName) m_fileName = fileName; } +void ProgressWidget::setErrorMessage ( const QString& errMsg ) +{ + m_ui->lblErrorMessage->setText(errMsg); +} + +void ProgressWidget::resetProgressBar() { + m_timer->stop(); + m_ui->progressBar->setValue(m_ui->progressBar->minimum()); + m_ui->lblDownloadSpeed->setText(""); + m_ui->lblRemainingDlTime->setText(""); + m_vecDownloadSpeeds.clear(); + m_lastTimestamp = 0; + m_bytesDownloadedTotalLastInterval = 0; + m_avgDownloadSpeedWeighted = 0; +} + ProgressWidget::~ProgressWidget() { m_timer->stop(); diff --git a/progresswidget.h b/progresswidget.h index 63f2564..2ef6ed1 100644 --- a/progresswidget.h +++ b/progresswidget.h @@ -41,12 +41,16 @@ class ProgressWidget : public QWidget ProgressWidget(QWidget *parent); ~ProgressWidget(); + void setErrorMessage(const QString &errMsg); + void setFileName(const QString &fileName); void setMinimum(int size); void setMaximum(int size); int getMaximum(); + void resetProgressBar(); + void setValue(int size); int getValue(); diff --git a/progresswidget.ui b/progresswidget.ui index 2d09036..56fcf59 100644 --- a/progresswidget.ui +++ b/progresswidget.ui @@ -14,9 +14,9 @@ Form - + - + true @@ -29,7 +29,7 @@ - + 00:00:00 @@ -39,20 +39,7 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - - + 0 KB/s @@ -62,17 +49,46 @@ - + 0 + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + - - + + + + + Qt::Vertical @@ -84,6 +100,48 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + 14 + 75 + true + + + + + + + false + + + Qt::AlignCenter + + + true + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + +