[Pkg-owncloud-commits] [owncloud-client] 07/218: AddFolder: Improve remote path selection error handling #3573

Sandro Knauß hefee-guest at moszumanska.debian.org
Sat Oct 17 14:30:30 UTC 2015


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 035e57cf37e4218ee1196e6f6c00a0803b8d8d88
Author: Christian Kamm <mail at ckamm.de>
Date:   Fri Aug 21 11:46:38 2015 +0200

    AddFolder: Improve remote path selection error handling #3573
---
 src/gui/folderwizard.cpp | 41 ++++++++++++++++++++++++++---------------
 src/gui/folderwizard.h   |  4 +++-
 2 files changed, 29 insertions(+), 16 deletions(-)

diff --git a/src/gui/folderwizard.cpp b/src/gui/folderwizard.cpp
index cd39c6c..998632a 100644
--- a/src/gui/folderwizard.cpp
+++ b/src/gui/folderwizard.cpp
@@ -240,7 +240,7 @@ void FolderWizardRemotePath::slotCreateRemoteFolder(const QString &folder)
     /* check the owncloud configuration file and query the ownCloud */
     connect(job, SIGNAL(finished(QNetworkReply::NetworkError)),
                  SLOT(slotCreateRemoteFolderFinished(QNetworkReply::NetworkError)));
-    connect(job, SIGNAL(networkError(QNetworkReply*)), SLOT(slotHandleNetworkError(QNetworkReply*)));
+    connect(job, SIGNAL(networkError(QNetworkReply*)), SLOT(slotHandleMkdirNetworkError(QNetworkReply*)));
     job->start();
 }
 
@@ -255,7 +255,7 @@ void FolderWizardRemotePath::slotCreateRemoteFolderFinished(QNetworkReply::Netwo
     }
 }
 
-void FolderWizardRemotePath::slotHandleNetworkError(QNetworkReply *reply)
+void FolderWizardRemotePath::slotHandleMkdirNetworkError(QNetworkReply *reply)
 {
     qDebug() << "** webdav mkdir request failed:" << reply->error();
     if( reply && !_account->credentials()->stillValid(reply) ) {
@@ -266,6 +266,12 @@ void FolderWizardRemotePath::slotHandleNetworkError(QNetworkReply *reply)
     }
 }
 
+void FolderWizardRemotePath::slotHandleLsColNetworkError(QNetworkReply *reply)
+{
+    showWarn(tr("Failed to list a folder. Error: %1")
+             .arg(errorMessage(reply->errorString(), reply->readAll())));
+}
+
 static QTreeWidgetItem* findFirstChild(QTreeWidgetItem *parent, const QString& text)
 {
     for (int i = 0; i < parent->childCount(); ++i) {
@@ -356,11 +362,7 @@ void FolderWizardRemotePath::slotUpdateDirectories(const QStringList &list)
 
 void FolderWizardRemotePath::slotRefreshFolders()
 {
-    LsColJob *job = new LsColJob(_account, "/", this);
-    job->setProperties(QList<QByteArray>() << "resourcetype");
-    connect(job, SIGNAL(directoryListingSubfolders(QStringList)),
-            SLOT(slotUpdateDirectories(QStringList)));
-    job->start();
+    runLsColJob("/");
     _ui.folderTreeWidget->clear();
     _ui.folderEntry->clear();
 }
@@ -368,11 +370,7 @@ void FolderWizardRemotePath::slotRefreshFolders()
 void FolderWizardRemotePath::slotItemExpanded(QTreeWidgetItem *item)
 {
     QString dir = item->data(0, Qt::UserRole).toString();
-    LsColJob *job = new LsColJob(_account, dir, this);
-    job->setProperties(QList<QByteArray>() << "resourcetype");
-    connect(job, SIGNAL(directoryListingSubfolders(QStringList)),
-            SLOT(slotUpdateDirectories(QStringList)));
-    job->start();
+    runLsColJob(dir);
 }
 
 void FolderWizardRemotePath::slotCurrentItemChanged(QTreeWidgetItem *item)
@@ -405,11 +403,11 @@ void FolderWizardRemotePath::slotLsColFolderEntry()
     if (path.startsWith(QLatin1Char('/')))
         path = path.mid(1);
 
-    LsColJob *job = new LsColJob(_account, path, this);
-    job->setProperties(QList<QByteArray>() << "resourcetype");
+    LsColJob *job = runLsColJob(path);
+    // no error handling, no updating, we do this manually
+    disconnect(job, 0, this, 0);
     connect(job, SIGNAL(directoryListingSubfolders(QStringList)),
             SLOT(slotTypedPathFound(QStringList)));
-    job->start();
 }
 
 void FolderWizardRemotePath::slotTypedPathFound(const QStringList& subpaths)
@@ -418,6 +416,19 @@ void FolderWizardRemotePath::slotTypedPathFound(const QStringList& subpaths)
     selectByPath(_ui.folderEntry->text());
 }
 
+LsColJob* FolderWizardRemotePath::runLsColJob(const QString& path)
+{
+    LsColJob *job = new LsColJob(_account, path, this);
+    job->setProperties(QList<QByteArray>() << "resourcetype");
+    connect(job, SIGNAL(directoryListingSubfolders(QStringList)),
+            SLOT(slotUpdateDirectories(QStringList)));
+    connect(job, SIGNAL(finishedWithError(QNetworkReply*)),
+            SLOT(slotHandleLsColNetworkError(QNetworkReply*)));
+    job->start();
+
+    return job;
+}
+
 FolderWizardRemotePath::~FolderWizardRemotePath()
 {
 }
diff --git a/src/gui/folderwizard.h b/src/gui/folderwizard.h
index 945a95f..1796555 100644
--- a/src/gui/folderwizard.h
+++ b/src/gui/folderwizard.h
@@ -89,7 +89,8 @@ protected slots:
     void slotAddRemoteFolder();
     void slotCreateRemoteFolder(const QString&);
     void slotCreateRemoteFolderFinished(QNetworkReply::NetworkError error);
-    void slotHandleNetworkError(QNetworkReply*);
+    void slotHandleMkdirNetworkError(QNetworkReply*);
+    void slotHandleLsColNetworkError(QNetworkReply*);
     void slotUpdateDirectories(const QStringList&);
     void slotRefreshFolders();
     void slotItemExpanded(QTreeWidgetItem*);
@@ -98,6 +99,7 @@ protected slots:
     void slotLsColFolderEntry();
     void slotTypedPathFound(const QStringList& subpaths);
 private:
+    LsColJob* runLsColJob(const QString& path);
     void recursiveInsert(QTreeWidgetItem *parent, QStringList pathTrail, QString path);
     bool selectByPath(QString path);
     Ui_FolderWizardTargetPage _ui;

-- 
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