diff options
author | Thiago Macieira <thiago@macieira.org> | 2013-11-14 17:47:35 -0800 |
---|---|---|
committer | Thiago Macieira <thiago@macieira.org> | 2013-12-03 13:53:00 -0800 |
commit | 919c7045b76f61a67cd00189127cd7d3488065b0 (patch) | |
tree | a8262e5a5cdd89ebce548b6a66a27cd735b98bf2 /qt-ui/subsurfacewebservices.cpp | |
parent | ab1b314a84347b648fa0df6a9719f67a9fb54d54 (diff) | |
download | subsurface-919c7045b76f61a67cd00189127cd7d3488065b0.tar.gz |
Add support for timing the download out
The time out is 30 seconds from the start of the request or from the
last time we got any data from the server.
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Diffstat (limited to 'qt-ui/subsurfacewebservices.cpp')
-rw-r--r-- | qt-ui/subsurfacewebservices.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/qt-ui/subsurfacewebservices.cpp b/qt-ui/subsurfacewebservices.cpp index 2607dbb2e..5756e806d 100644 --- a/qt-ui/subsurfacewebservices.cpp +++ b/qt-ui/subsurfacewebservices.cpp @@ -95,7 +95,9 @@ WebServices::WebServices(QWidget* parent, Qt::WindowFlags f): QDialog(parent, f) ui.setupUi(this); connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonClicked(QAbstractButton*))); connect(ui.download, SIGNAL(clicked(bool)), this, SLOT(startDownload())); + connect(&timeout, SIGNAL(timeout()), this, SLOT(downloadTimedOut())); ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); + timeout.setSingleShot(true); } void WebServices::hidePassword() @@ -115,6 +117,17 @@ QNetworkAccessManager *WebServices::manager() return manager; } +void WebServices::downloadTimedOut() +{ + if (!reply) + return; + + reply->deleteLater(); + reply = NULL; + resetState(); + ui.status->setText(tr("Download timed out")); +} + void WebServices::updateProgress(qint64 current, qint64 total) { if (!reply) @@ -144,6 +157,8 @@ void WebServices::connectSignalsForDownload(QNetworkReply *reply) this, SLOT(downloadError(QNetworkReply::NetworkError))); connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(updateProgress(qint64,qint64))); + + timeout.start(30000); // 30s } void WebServices::resetState() |