Просмотр исходного кода

Change all Network Jobs to use start()

Daniel Molkentin 12 лет назад
Родитель
Сommit
7ba8983f0a

+ 0 - 1
src/mirall/accountsettings.cpp

@@ -25,7 +25,6 @@
 #include "mirall/mirallconfigfile.h"
 #include "mirall/ignorelisteditor.h"
 #include "mirall/account.h"
-#include "mirall/networkjobs.h"
 #include "creds/abstractcredentials.h"
 
 #include <math.h>

+ 4 - 1
src/mirall/connectionvalidator.cpp

@@ -84,6 +84,7 @@ void ConnectionValidator::checkConnection()
         CheckServerJob *checkJob = new CheckServerJob(_account, false, this);
         connect(checkJob, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotStatusFound(QUrl,QVariantMap)));
         connect(checkJob, SIGNAL(networkError(QNetworkReply*)), SLOT(slotNoStatusFound(QNetworkReply*)));
+        checkJob->start();
     } else {
         _errors << tr("No ownCloud account configured");
         emit connectionResult( NotConfigured );
@@ -126,9 +127,11 @@ void ConnectionValidator::slotCheckAuthentication()
 {
     // simply GET the webdav root, will fail if credentials are wrong.
     // continue in slotAuthCheck here :-)
-    PropfindJob *propFind = new PropfindJob(_account, "/", QList<QByteArray>() << "getlastmodified", this);
+    PropfindJob *propFind = new PropfindJob(_account, "/", this);
+    propFind->setProperties(QList<QByteArray>() << "getlastmodified");
     connect(propFind, SIGNAL(result(QVariantMap)), SLOT(slotAuthSuccess()));
     connect(propFind, SIGNAL(networkError(QNetworkReply*)), SLOT(slotAuthFailed(QNetworkReply*)));
+    propFind->start();
     qDebug() << "# checking for authentication settings.";
 }
 

+ 1 - 0
src/mirall/folder.cpp

@@ -280,6 +280,7 @@ void Folder::slotPollTimerTimeout()
         // check if the etag is different
         QObject::connect(job, SIGNAL(etagRetreived(QString)), this, SLOT(etagRetreived(QString)));
         QObject::connect(job, SIGNAL(networkError(QNetworkReply*)), this, SLOT(slotNetworkUnavailable()));
+        job->start();
     }
 }
 

+ 3 - 0
src/mirall/folderwizard.cpp

@@ -208,6 +208,7 @@ void FolderWizardTargetPage::slotCreateRemoteFolder(const QString &folder)
     connect(job, SIGNAL(finished(QNetworkReply::NetworkError)),
                  SLOT(slotCreateRemoteFolderFinished(QNetworkReply::NetworkError)));
     connect(job, SIGNAL(networkError(QNetworkReply*)), SLOT(slotHandleNetworkError(QNetworkReply*)));
+    job->start();
 }
 
 void FolderWizardTargetPage::slotCreateRemoteFolderFinished(QNetworkReply::NetworkError error)
@@ -288,6 +289,7 @@ void FolderWizardTargetPage::slotRefreshFolders()
     LsColJob *job = new LsColJob(AccountManager::instance()->account(), "/", this);
     connect(job, SIGNAL(directoryListing(QStringList)),
             SLOT(slotUpdateDirectories(QStringList)));
+    job->start();
     _ui.folderTreeWidget->clear();
 }
 
@@ -297,6 +299,7 @@ void FolderWizardTargetPage::slotItemExpanded(QTreeWidgetItem *item)
     LsColJob *job = new LsColJob(AccountManager::instance()->account(), dir, this);
     connect(job, SIGNAL(directoryListing(QStringList)),
             SLOT(slotUpdateDirectories(QStringList)));
+    job->start();
 }
 
 FolderWizardTargetPage::~FolderWizardTargetPage()

+ 56 - 18
src/mirall/networkjobs.cpp

@@ -136,9 +136,13 @@ AbstractNetworkJob::~AbstractNetworkJob() {
 
 RequestEtagJob::RequestEtagJob(Account *account, const QString &path, QObject *parent)
     : AbstractNetworkJob(account, path, parent)
+{
+}
+
+void RequestEtagJob::start()
 {
     QNetworkRequest req;
-    if (path.isEmpty() || path == QLatin1String("/")) {
+    if (path().isEmpty() || path() == QLatin1String("/")) {
         /* For the root directory, we need to query the etags of all the sub directories
          * because, at the time I am writing this comment (Owncloud 5.0.9), the etag of the
          * root directory is not updated when the sub directories changes */
@@ -152,11 +156,11 @@ RequestEtagJob::RequestEtagJob(Account *account, const QString &path, QObject *p
                    "    <d:getetag/>\n"
                    "  </d:prop>\n"
                    "</d:propfind>\n");
-    QBuffer *buf = new QBuffer;
+    QBuffer *buf = new QBuffer(this);
     buf->setData(xml);
     buf->open(QIODevice::ReadOnly);
     // assumes ownership
-    setReply(davRequest("PROPFIND", path, req, buf));
+    setReply(davRequest("PROPFIND", path(), req, buf));
     buf->setParent(reply());
     setupConnections(reply());
 
@@ -192,10 +196,14 @@ void RequestEtagJob::slotFinished()
 MkColJob::MkColJob(Account *account, const QString &path, QObject *parent)
     : AbstractNetworkJob(account, path, parent)
 {
-     // assumes ownership
-    QNetworkReply *reply = davRequest("MKCOL", path);
-    setReply(reply);
-    setupConnections(reply);
+}
+
+void MkColJob::start()
+{
+    // assumes ownership
+   QNetworkReply *reply = davRequest("MKCOL", path());
+   setReply(reply);
+   setupConnections(reply);
 }
 
 void MkColJob::slotFinished()
@@ -208,6 +216,10 @@ void MkColJob::slotFinished()
 
 LsColJob::LsColJob(Account *account, const QString &path, QObject *parent)
     : AbstractNetworkJob(account, path, parent)
+{
+}
+
+void LsColJob::start()
 {
     QNetworkRequest req;
     req.setRawHeader("Depth", "1");
@@ -217,10 +229,10 @@ LsColJob::LsColJob(Account *account, const QString &path, QObject *parent)
                    "    <d:resourcetype/>\n"
                    "  </d:prop>\n"
                    "</d:propfind>\n");
-    QBuffer *buf = new QBuffer;
+    QBuffer *buf = new QBuffer(this);
     buf->setData(xml);
     buf->open(QIODevice::ReadOnly);
-    QNetworkReply *reply = davRequest("PROPFIND", path, req, buf);
+    QNetworkReply *reply = davRequest("PROPFIND", path(), req, buf);
     buf->setParent(reply);
     setReply(reply);
     setupConnections(reply);
@@ -263,7 +275,10 @@ CheckServerJob::CheckServerJob(Account *account, bool followRedirect, QObject *p
     , _followRedirects(followRedirect)
     , _redirectCount(0)
 {
-    // ### perform update of certificate chain
+}
+
+void CheckServerJob::start()
+{
     setReply(getRequest(path()));
     setupConnections(reply());
 }
@@ -333,11 +348,16 @@ void CheckServerJob::slotFinished()
 
 /*********************************************************************************************/
 
-PropfindJob::PropfindJob(Account *account, const QString &path,
-                         QList<QByteArray> properties,
-                         QObject *parent)
+PropfindJob::PropfindJob(Account *account, const QString &path, QObject *parent)
     : AbstractNetworkJob(account, path, parent)
 {
+
+}
+
+void PropfindJob::start()
+{
+    QList<QByteArray> properties = _properties;
+
     if (properties.isEmpty()) {
         properties << "allprop";
     }
@@ -354,14 +374,24 @@ PropfindJob::PropfindJob(Account *account, const QString &path,
                      "  </d:prop>\n"
                      "</d:propfind>\n";
 
-    QBuffer *buf = new QBuffer;
+    QBuffer *buf = new QBuffer(this);
     buf->setData(xml);
     buf->open(QIODevice::ReadOnly);
-    setReply(davRequest("PROPFIND", path, req, buf));
+    setReply(davRequest("PROPFIND", path(), req, buf));
     buf->setParent(reply());
     setupConnections(reply());
 }
 
+void PropfindJob::setProperties(QList<QByteArray> properties)
+{
+    _properties = properties;
+}
+
+QList<QByteArray> PropfindJob::properties() const
+{
+    return _properties;
+}
+
 void PropfindJob::slotFinished()
 {
     int http_result_code = reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
@@ -405,7 +435,11 @@ void PropfindJob::slotFinished()
 EntityExistsJob::EntityExistsJob(Account *account, const QString &path, QObject *parent)
     : AbstractNetworkJob(account, path, parent)
 {
-    setReply(headRequest(path));
+}
+
+void EntityExistsJob::start()
+{
+    setReply(headRequest(path()));
     setupConnections(reply());
 }
 
@@ -418,6 +452,10 @@ void EntityExistsJob::slotFinished()
 
 CheckQuotaJob::CheckQuotaJob(Account *account, const QString &path, QObject *parent)
     : AbstractNetworkJob(account, path, parent)
+{
+}
+
+void CheckQuotaJob::start()
 {
     QNetworkRequest req;
     req.setRawHeader("Depth", "0");
@@ -428,11 +466,11 @@ CheckQuotaJob::CheckQuotaJob(Account *account, const QString &path, QObject *par
                    "    <d:quota-used-bytes/>\n"
                    "  </d:prop>\n"
                    "</d:propfind>\n");
-    QBuffer *buf = new QBuffer;
+    QBuffer *buf = new QBuffer(this);
     buf->setData(xml);
     buf->open(QIODevice::ReadOnly);
     // assumes ownership
-    setReply(davRequest("PROPFIND", path, req, buf));
+    setReply(davRequest("PROPFIND", path(), req, buf));
     buf->setParent(reply());
     setupConnections(reply());
 }

+ 16 - 3
src/mirall/networkjobs.h

@@ -37,6 +37,8 @@ public:
     explicit AbstractNetworkJob(Account *account, const QString &path, QObject* parent = 0);
     virtual ~AbstractNetworkJob();
 
+    virtual void start() = 0;
+
     void setAccount(Account *account);
     Account* account() const { return _account; }
     void setPath(const QString &path);
@@ -84,6 +86,8 @@ class EntityExistsJob : public AbstractNetworkJob {
     Q_OBJECT
 public:
     explicit EntityExistsJob(Account *account, const QString &path, QObject* parent = 0);
+    void start();
+
 signals:
     void exists(QNetworkReply*);
 
@@ -98,6 +102,7 @@ class LsColJob : public AbstractNetworkJob {
     Q_OBJECT
 public:
     explicit LsColJob(Account *account, const QString &path, QObject *parent = 0);
+    void start();
 
 signals:
     void directoryListing(const QStringList &items);
@@ -112,15 +117,19 @@ private slots:
 class PropfindJob : public AbstractNetworkJob {
     Q_OBJECT
 public:
-    explicit PropfindJob(Account *account, const QString &path,
-                         QList<QByteArray> properties,
-                         QObject *parent = 0);
+    explicit PropfindJob(Account *account, const QString &path, QObject *parent = 0);
+    void start();
+    void setProperties(QList<QByteArray> properties);
+    QList<QByteArray> properties() const;
 
 signals:
     void result(const QVariantMap &values);
 
 private slots:
     virtual void slotFinished();
+
+private:
+    QList<QByteArray> _properties;
 };
 
 /**
@@ -130,6 +139,7 @@ class MkColJob : public AbstractNetworkJob {
     Q_OBJECT
 public:
     explicit MkColJob(Account *account, const QString &path, QObject *parent = 0);
+    void start();
 
 signals:
     void finished(QNetworkReply::NetworkError);
@@ -145,6 +155,7 @@ class CheckServerJob : public AbstractNetworkJob {
     Q_OBJECT
 public:
     explicit CheckServerJob(Account *account, bool followRedirect = false, QObject *parent = 0);
+    void start();
 
     static QString version(const QVariantMap &info);
     static QString versionString(const QVariantMap &info);
@@ -171,6 +182,7 @@ class RequestEtagJob : public AbstractNetworkJob {
     Q_OBJECT
 public:
     explicit RequestEtagJob(Account *account, const QString &path, QObject *parent = 0);
+    void start();
 
 signals:
     void etagRetreived(const QString &etag);
@@ -186,6 +198,7 @@ class CheckQuotaJob : public AbstractNetworkJob {
     Q_OBJECT
 public:
     explicit CheckQuotaJob(Account *account, const QString &path, QObject *parent = 0);
+    void start();
 
 signals:
     void quotaRetrieved(qint64 totalBytes, qint64 availableBytes);

+ 13 - 1
src/mirall/owncloudsetupwizard.cpp

@@ -127,9 +127,9 @@ void OwncloudSetupWizard::slotDetermineAuthType(const QString &urlString)
     CheckServerJob *job = new CheckServerJob(_ocWizard->account(), false, this);
     connect(job, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotOwnCloudFoundAuth(QUrl,QVariantMap)));
     connect(job, SIGNAL(networkError(QNetworkReply*)), SLOT(slotNoOwnCloudFoundAuth(QNetworkReply*)));
-
     connect(job, SIGNAL(timeout(const QUrl&)), SLOT(slotNoOwnCloudFoundAuthTimeout(const QUrl&)));
     job->setTimeout(10*1000);
+    job->start();
 }
 
 void OwncloudSetupWizard::slotOwnCloudFoundAuth(const QUrl& url, const QVariantMap &info)
@@ -151,6 +151,7 @@ void OwncloudSetupWizard::slotOwnCloudFoundAuth(const QUrl& url, const QVariantM
     DetermineAuthTypeJob *job = new DetermineAuthTypeJob(_ocWizard->account(), this);
     connect(job, SIGNAL(authType(WizardCommon::AuthType)),
             _ocWizard, SLOT(setAuthType(WizardCommon::AuthType)));
+    job->start();
 }
 
 void OwncloudSetupWizard::slotNoOwnCloudFoundAuth(QNetworkReply *reply)
@@ -184,6 +185,7 @@ void OwncloudSetupWizard::testOwnCloudConnect()
 {
     ValidateDavAuthJob *job = new ValidateDavAuthJob(_ocWizard->account(), this);
     connect(job, SIGNAL(authResult(QNetworkReply*)), SLOT(slotConnectionCheck(QNetworkReply*)));
+    job->start();
 }
 
 void OwncloudSetupWizard::slotConnectionCheck(QNetworkReply* reply)
@@ -227,6 +229,7 @@ void OwncloudSetupWizard::slotCreateLocalAndRemoteFolders(const QString& localFo
     if (nextStep) {
         EntityExistsJob *job = new EntityExistsJob(_ocWizard->account(), remoteFolder, this);
         connect(job, SIGNAL(exists(QNetworkReply*)), SLOT(slotAuthCheckReply(QNetworkReply*)));
+        job->start();
     } else {
         finalizeSetup( false );
     }
@@ -266,6 +269,7 @@ void OwncloudSetupWizard::createRemoteFolder()
 
     MkColJob *job = new MkColJob(_ocWizard->account(), _remoteFolder, this);
     connect(job, SIGNAL(finished(QNetworkReply::NetworkError)), SLOT(slotCreateRemoteFolderFinished(QNetworkReply::NetworkError)));
+    job->start();
 }
 
 void OwncloudSetupWizard::slotCreateRemoteFolderFinished( QNetworkReply::NetworkError error )
@@ -418,6 +422,10 @@ void OwncloudSetupWizard::slotAssistantFinished( int result )
 DetermineAuthTypeJob::DetermineAuthTypeJob(Account *account, QObject *parent)
     : AbstractNetworkJob(account, QString(), parent)
     , _redirects(0)
+{
+}
+
+void DetermineAuthTypeJob::start()
 {
     QNetworkReply *reply = getRequest(Account::davPath());
     setReply(reply);
@@ -455,6 +463,10 @@ void DetermineAuthTypeJob::slotFinished()
 
 ValidateDavAuthJob::ValidateDavAuthJob(Account *account, QObject *parent)
     : AbstractNetworkJob(account, QString(), parent)
+{
+}
+
+void ValidateDavAuthJob::start()
 {
     QNetworkReply *reply = getRequest(Account::davPath());
     setReply(reply);

+ 2 - 0
src/mirall/owncloudsetupwizard.h

@@ -35,6 +35,7 @@ class ValidateDavAuthJob : public AbstractNetworkJob {
     Q_OBJECT
 public:
     ValidateDavAuthJob(Account* account, QObject *parent = 0);
+    void start();
 signals:
     void authResult(QNetworkReply*);
 private slots:
@@ -45,6 +46,7 @@ class DetermineAuthTypeJob : public AbstractNetworkJob {
     Q_OBJECT
 public:
     explicit DetermineAuthTypeJob(Account *account, QObject *parent = 0);
+    void start();
 signals:
     void authType(WizardCommon::AuthType);
 private slots:

+ 1 - 0
src/mirall/quotainfo.cpp

@@ -50,6 +50,7 @@ void QuotaInfo::slotCheckQuota()
     if (!_account.isNull() && _account->credentials() && _account->credentials()->ready()) {
         CheckQuotaJob *job = new CheckQuotaJob(_account, "/", this);
         connect(job, SIGNAL(quotaRetrieved(qint64,qint64)), SLOT(slotUpdateLastQuota(qint64,qint64)));
+        job->start();
         _refreshTimer->start(defaultIntervalT);
     } else {
         _lastQuotaTotalBytes = 0;

+ 0 - 1
src/mirall/syncjournaldb.cpp

@@ -186,7 +186,6 @@ bool SyncJournalDb::setFileRecord( const SyncJournalFileRecord& record )
 {
     QMutexLocker locker(&_mutex);
     qlonglong phash = getPHash(record._path);
-
     if( checkConnect() ) {
 
         QSqlQuery writeQuery( "INSERT OR REPLACE INTO metadata "