[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdepim] pimcommon/storageservice/webdav: Add create/list folder
From: Montel Laurent <montel () kde ! org>
Date: 2014-01-31 21:20:46
Message-ID: E1W9LW2-0002I9-T4 () scm ! kde ! org
[Download RAW message or body]
Git commit d02b0e42969a5ec102574c9778fec93171892b26 by Montel Laurent.
Committed on 31/01/2014 at 21:19.
Pushed by mlaurent into branch 'master'.
Add create/list folder
M +0 -19 pimcommon/storageservice/webdav/protocol/webdav.cpp
M +57 -7 pimcommon/storageservice/webdav/webdavjob.cpp
M +2 -0 pimcommon/storageservice/webdav/webdavjob.h
M +3 -3 pimcommon/storageservice/webdav/webdavsettingsdialog.cpp
M +12 -6 pimcommon/storageservice/webdav/webdavstorageservice.cpp
http://commits.kde.org/kdepim/d02b0e42969a5ec102574c9778fec93171892b26
diff --git a/pimcommon/storageservice/webdav/protocol/webdav.cpp \
b/pimcommon/storageservice/webdav/protocol/webdav.cpp index ff55d7c..4ace360 100644
--- a/pimcommon/storageservice/webdav/protocol/webdav.cpp
+++ b/pimcommon/storageservice/webdav/protocol/webdav.cpp
@@ -221,26 +221,7 @@ void QWebdav::emitListInfos()
QDomDocument multiResponse;
multiResponse.setContent(buffer, true);
- qDebug()<<" sssssssssssssssssssssssssssssssssssssssss";
Q_EMIT listInfo(multiResponse.toString());
-#if 0
- for ( QDomNode n = multiResponse.documentElement().firstChild();
- !n.isNull(); n = n.nextSibling())
- {
- QDomElement thisResponse = n.toElement();
-
- if (thisResponse.isNull())
- continue;
-
- QWebdavUrlInfo info(thisResponse);
-
- if (!info.isValid())
- continue;
-
- hasResponse = true;
- emit listInfo(info);
- }
-#endif
}
void QWebdav::responseHeaderReceived( const QHttpResponseHeader & resp )
diff --git a/pimcommon/storageservice/webdav/webdavjob.cpp \
b/pimcommon/storageservice/webdav/webdavjob.cpp index a200a74..eb8c3f1 100644
--- a/pimcommon/storageservice/webdav/webdavjob.cpp
+++ b/pimcommon/storageservice/webdav/webdavjob.cpp
@@ -33,7 +33,8 @@
using namespace PimCommon;
WebDavJob::WebDavJob(QObject *parent)
- : PimCommon::StorageServiceAbstractJob(parent)
+ : PimCommon::StorageServiceAbstractJob(parent),
+ mReqId(-1)
{
connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), this, \
SLOT(slotSendDataFinished(QNetworkReply*))); connect(mNetworkAccessManager, \
SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), \
SLOT(slotAuthenticationRequired(QNetworkReply*,QAuthenticator*))); @@ -120,16 +121,26 \
@@ void WebDavJob::listFolder(const QString &folder) {
mActionType = PimCommon::StorageServiceAbstract::ListFolder;
mError = false;
+ qDebug()<<" folder"<<folder;
QWebdav *webdav = new QWebdav(this);
webdav->setUser(mUserName, mPassword);
+
QUrl url(mServiceLocation);
+ if (!mServiceLocation.endsWith(QLatin1Char('/')))
+ url.setUrl(mServiceLocation + QLatin1Char('/') + folder + QLatin1Char('/'));
+ else
+ url.setUrl(mServiceLocation + QLatin1Char('/') + folder + QLatin1Char('/'));
+
+
+
QHttp::ConnectionMode mode = QHttp::ConnectionModeHttp;
if (url.port() == -1) {
- if (mServiceLocation.startsWith(QLatin1String("https://")))
+ if (mServiceLocation.startsWith(QLatin1String("https://"))) {
url.setPort(443);
- if (mServiceLocation.startsWith(QLatin1String("http://")))
+ } else if (mServiceLocation.startsWith(QLatin1String("http://"))) {
url.setPort(80);
+ }
}
if (mServiceLocation.startsWith(QLatin1String("https://")))
@@ -142,10 +153,11 @@ void WebDavJob::listFolder(const QString &folder)
webdav, SLOT(ignoreSslErrors()));
connect(webdav, SIGNAL(authenticationRequired(QString,quint16,QAuthenticator*)),
this, SLOT(slotRequired(QString,quint16,QAuthenticator*)));
+ qDebug()<<" url.toString()"<<url.toString();
webdav->list(url.toString());
}
-void WebDavJob::slotRequired(const QString &hostname, quint16 port, QAuthenticator \
*authenticator) +void WebDavJob::slotRequired(const QString &, quint16 , \
QAuthenticator *authenticator) {
QPointer<LoginDialog> dlg = new LoginDialog;
if (dlg->exec()) {
@@ -181,9 +193,47 @@ void WebDavJob::createFolder(const QString &foldername, const \
QString &destinati {
mActionType = PimCommon::StorageServiceAbstract::CreateFolder;
mError = false;
- qDebug()<<" not implemented";
- Q_EMIT actionFailed(QLatin1String("Not Implemented"));
- deleteLater();
+ QWebdav *webdav = new QWebdav(this);
+ webdav->setUser(mUserName, mPassword);
+ QUrl url(mServiceLocation);
+ if (!mServiceLocation.endsWith(QLatin1Char('/')))
+ url.setUrl(mServiceLocation + QLatin1Char('/'));
+
+ QHttp::ConnectionMode mode = QHttp::ConnectionModeHttp;
+
+ if (url.port() == -1) {
+ if (mServiceLocation.startsWith(QLatin1String("https://"))) {
+ url.setPort(443);
+ } else if (mServiceLocation.startsWith(QLatin1String("http://"))) {
+ url.setPort(80);
+ }
+ }
+
+ if (mServiceLocation.startsWith(QLatin1String("https://")))
+ mode = QHttp::ConnectionModeHttps;
+ else
+ mode = QHttp::ConnectionModeHttp;
+
+ webdav->setHost(url.host(), mode, url.port());
+
+ connect(webdav, SIGNAL(authenticationRequired(QString,quint16,QAuthenticator*)),
+ this, SLOT(slotRequired(QString,quint16,QAuthenticator*)));
+ connect(webdav, SIGNAL(requestFinished(int, bool)), this, \
SLOT(slotRequestFinished(int, bool))); + //TODO add destination
+ qDebug()<<" url.toString() "<<url.toString() <<" foldername"<<foldername;
+ mReqId = webdav->mkdir(url.toString() + QLatin1Char('/') + destination + \
QLatin1Char('/') + foldername + QLatin1Char('/')); +}
+
+void WebDavJob::slotRequestFinished(int id, bool)
+{
+ if (id == mReqId) {
+ switch(mActionType) {
+ case PimCommon::StorageServiceAbstract::CreateFolder:
+ Q_EMIT createFolderDone(QString());
+ break;
+ }
+ deleteLater();
+ }
}
void WebDavJob::slotSendDataFinished(QNetworkReply *reply)
diff --git a/pimcommon/storageservice/webdav/webdavjob.h \
b/pimcommon/storageservice/webdav/webdavjob.h index 302bfff..d94ddb7 100644
--- a/pimcommon/storageservice/webdav/webdavjob.h
+++ b/pimcommon/storageservice/webdav/webdavjob.h
@@ -55,6 +55,7 @@ private slots:
void slotAuthenticationRequired(QNetworkReply *, QAuthenticator *);
void slotListInfo(const QString &data);
void slotRequired(const QString &hostname, quint16 port, QAuthenticator \
*authenticator); + void slotRequestFinished(int, bool);
private:
void parseUploadFile(const QString &data);
void parseCreateFolder(const QString &data);
@@ -65,6 +66,7 @@ private:
QString mServiceLocation;
QString mUserName;
QString mPassword;
+ int mReqId;
};
}
diff --git a/pimcommon/storageservice/webdav/webdavsettingsdialog.cpp \
b/pimcommon/storageservice/webdav/webdavsettingsdialog.cpp index d413dd9..d36e117 \
100644
--- a/pimcommon/storageservice/webdav/webdavsettingsdialog.cpp
+++ b/pimcommon/storageservice/webdav/webdavsettingsdialog.cpp
@@ -59,15 +59,15 @@ WebDavSettingsDialog::~WebDavSettingsDialog()
void WebDavSettingsDialog::slotServiceLocationChanged(const QString &text)
{
- enableButtonOk(!text.isEmpty());
+ enableButtonOk(!text.isEmpty() && (text.startsWith(QLatin1String("http://")) || \
text.startsWith(QLatin1String("https://")))); }
QString WebDavSettingsDialog::serviceLocation() const
{
- return mServiceLocation->text();
+ return mServiceLocation->text().trimmed();
}
QString WebDavSettingsDialog::publicLocation() const
{
- return mPublicLocation->text();
+ return mPublicLocation->text().trimmed();
}
diff --git a/pimcommon/storageservice/webdav/webdavstorageservice.cpp \
b/pimcommon/storageservice/webdav/webdavstorageservice.cpp index c8057a5..b987cba \
100644
--- a/pimcommon/storageservice/webdav/webdavstorageservice.cpp
+++ b/pimcommon/storageservice/webdav/webdavstorageservice.cpp
@@ -300,18 +300,24 @@ StorageServiceAbstract::Capabilities \
WebDavStorageService::capabilities() const
QString WebDavStorageService::fillListWidget(StorageServiceTreeWidget *listWidget, \
const QString &data) {
+ qDebug()<<" data"<<data;
listWidget->clear();
listWidget->createMoveUpItem();
const QList<QWebdavUrlInfo> lst = QWebdavUrlInfo::parseListInfo(data);
Q_FOREACH(const QWebdavUrlInfo &info, lst) {
if (info.isDir()) {
- StorageServiceTreeWidgetItem *item = \
listWidget->addFolder(QFileInfo(info.name()).dir().dirName(), info.source()); + \
QFileInfo folderInfo(info.name()); + StorageServiceTreeWidgetItem *item = \
listWidget->addFolder(folderInfo.dir().dirName(), folderInfo.dir().dirName()); + \
item->setDateCreated(info.createdAt()); + \
item->setLastModification(info.lastModified()); } else {
- StorageServiceTreeWidgetItem *item = \
listWidget->addFile(QFileInfo(info.name()).fileName(), info.source()); + \
const QString mimetype = info.mimeType(); + QFileInfo \
fileInfo(info.name()); + StorageServiceTreeWidgetItem *item = \
listWidget->addFile(fileInfo.fileName(), fileInfo.fileName(), mimetype); + \
item->setDateCreated(info.createdAt()); + \
item->setLastModification(info.lastModified()); }
}
-
-
return QString();
}
@@ -427,9 +433,9 @@ StorageServiceAbstract::Capabilities \
WebDavStorageService::serviceCapabilities() cap |= AccountInfoCapability;
//cap |= UploadFileCapability;
//cap |= DownloadFileCapability;
- //cap |= CreateFolderCapability;
+ cap |= CreateFolderCapability;
//cap |= DeleteFolderCapability;
- //cap |= ListFolderCapability;
+ cap |= ListFolderCapability;
//cap |= ShareLinkCapability;
//cap |= DeleteFileCapability;
//cap |= RenameFolderCapability;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic