summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-ui/subsurfacewebservices.cpp15
-rw-r--r--qt-ui/subsurfacewebservices.h3
2 files changed, 18 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()
diff --git a/qt-ui/subsurfacewebservices.h b/qt-ui/subsurfacewebservices.h
index 05735f859..89c41e4dd 100644
--- a/qt-ui/subsurfacewebservices.h
+++ b/qt-ui/subsurfacewebservices.h
@@ -3,6 +3,7 @@
#include <QDialog>
#include <QNetworkReply>
+#include <QTimer>
#include <libxml/tree.h>
#include "ui_webservices.h"
@@ -23,6 +24,7 @@ private slots:
virtual void startDownload() = 0;
virtual void startUpload() = 0;
virtual void buttonClicked(QAbstractButton* button) = 0;
+ virtual void downloadTimedOut();
protected slots:
void updateProgress(qint64 current, qint64 total);
@@ -33,6 +35,7 @@ protected:
Ui::WebServices ui;
QNetworkReply *reply;
+ QTimer timeout;
QByteArray downloadedData;
};