[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