[Pkg-owncloud-commits] [owncloud-client] 07/47: SslErrorDialog: Ensure to run into a timeout while showing the dialog

Sandro Knauß hefee-guest at moszumanska.debian.org
Mon Feb 17 18:06:32 UTC 2014


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit 33ab85492206cb2271ae286664375950c44d4b59
Author: Daniel Molkentin <danimo at owncloud.com>
Date:   Wed Feb 5 14:16:43 2014 +0100

    SslErrorDialog: Ensure to run into a timeout while showing the dialog
---
 src/mirall/account.cpp     |  2 ++
 src/mirall/networkjobs.cpp | 35 +++++++++++++++++++++++++++++------
 src/mirall/networkjobs.h   | 14 ++++++++++++++
 3 files changed, 45 insertions(+), 6 deletions(-)

diff --git a/src/mirall/account.cpp b/src/mirall/account.cpp
index 4efcb8d..93022e5 100644
--- a/src/mirall/account.cpp
+++ b/src/mirall/account.cpp
@@ -13,6 +13,7 @@
 
 #include "mirall/account.h"
 #include "mirall/theme.h"
+#include "mirall/networkjobs.h"
 #include "mirall/mirallconfigfile.h"
 #include "creds/abstractcredentials.h"
 #include "creds/credentialsfactory.h"
@@ -299,6 +300,7 @@ void Account::setState(int state)
 
 void Account::slotHandleErrors(QNetworkReply *reply , QList<QSslError> errors)
 {
+    NetworkJobTimeoutPauser pauser(reply);
     qDebug() << "SSL-Warnings happened for url " << reply->url().toString();
 
     if( _treatSslErrorsAsFailure ) {
diff --git a/src/mirall/networkjobs.cpp b/src/mirall/networkjobs.cpp
index 2b2ad62..4aefc79 100644
--- a/src/mirall/networkjobs.cpp
+++ b/src/mirall/networkjobs.cpp
@@ -35,6 +35,8 @@
 #include "creds/credentialsfactory.h"
 #include "creds/abstractcredentials.h"
 
+Q_DECLARE_METATYPE(QTimer*)
+
 namespace Mirall {
 
 AbstractNetworkJob::AbstractNetworkJob(Account *account, const QString &path, QObject *parent)
@@ -95,35 +97,41 @@ void AbstractNetworkJob::setupConnections(QNetworkReply *reply)
     connect(reply, SIGNAL(finished()), SLOT(slotFinished()));
 }
 
+QNetworkReply* AbstractNetworkJob::addTimer(QNetworkReply *reply)
+{
+    reply->setProperty("timer", QVariant::fromValue(_timer));
+    return reply;
+}
+
 QNetworkReply* AbstractNetworkJob::davRequest(const QByteArray &verb, const QString &relPath,
                                               QNetworkRequest req, QIODevice *data)
 {
-    return _account->davRequest(verb, relPath, req, data);
+    return addTimer(_account->davRequest(verb, relPath, req, data));
 }
 
 QNetworkReply *AbstractNetworkJob::davRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data)
 {
-    return _account->davRequest(verb, url, req, data);
+    return addTimer(_account->davRequest(verb, url, req, data));
 }
 
 QNetworkReply* AbstractNetworkJob::getRequest(const QString &relPath)
 {
-    return _account->getRequest(relPath);
+    return addTimer(_account->getRequest(relPath));
 }
 
 QNetworkReply *AbstractNetworkJob::getRequest(const QUrl &url)
 {
-    return _account->getRequest(url);
+    return addTimer(_account->getRequest(url));
 }
 
 QNetworkReply *AbstractNetworkJob::headRequest(const QString &relPath)
 {
-    return _account->headRequest(relPath);
+    return addTimer(_account->headRequest(relPath));
 }
 
 QNetworkReply *AbstractNetworkJob::headRequest(const QUrl &url)
 {
-    return _account->headRequest(url);
+    return addTimer(_account->headRequest(url));
 }
 
 void AbstractNetworkJob::slotFinished()
@@ -526,4 +534,19 @@ void CheckQuotaJob::finished()
     }
 }
 
+NetworkJobTimeoutPauser::NetworkJobTimeoutPauser(QNetworkReply *reply)
+{
+    _timer = reply->property("timer").value<QTimer*>();
+    if(!_timer.isNull()) {
+        _timer->stop();
+    }
+}
+
+NetworkJobTimeoutPauser::~NetworkJobTimeoutPauser()
+{
+    if(!_timer.isNull()) {
+        _timer->start();
+    }
+}
+
 } // namespace Mirall
diff --git a/src/mirall/networkjobs.h b/src/mirall/networkjobs.h
index d412b5f..90394e0 100644
--- a/src/mirall/networkjobs.h
+++ b/src/mirall/networkjobs.h
@@ -19,6 +19,7 @@
 #include <QObject>
 #include <QNetworkRequest>
 #include <QNetworkReply>
+#include <QPointer>
 
 class QUrl;
 class QTimer;
@@ -28,6 +29,18 @@ namespace Mirall {
 class Account;
 class AbstractSslErrorHandler;
 
+
+/**
+ * @brief Internal Helper class
+ */
+class NetworkJobTimeoutPauser {
+public:
+    NetworkJobTimeoutPauser(QNetworkReply *reply);
+    ~NetworkJobTimeoutPauser();
+private:
+    QPointer<QTimer> _timer;
+};
+
 /**
  * @brief The AbstractNetworkJob class
  */
@@ -76,6 +89,7 @@ private slots:
     virtual void slotTimeout() {}
 
 private:
+    QNetworkReply* addTimer(QNetworkReply *reply);
     bool _ignoreCredentialFailure;
     QNetworkReply *_reply;
     Account *_account;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list