From 748440ced340da3d60df1d45481989bc9f8ce3ef Mon Sep 17 00:00:00 2001 From: "Alfie \"Azelphur\" Day" Date: Wed, 3 Sep 2014 15:12:21 +0100 Subject: [PATCH 01/18] Initial push for filebrowser integration, not finished yet but it's a start :) --- src/gui/CMakeLists.txt | 2 + src/gui/application.cpp | 14 +++ src/gui/application.h | 2 + src/gui/folderman.cpp | 5 + src/gui/folderman.h | 2 + src/gui/sharedialog.cpp | 246 ++++++++++++++++++++++++++++++++++++++++ src/gui/sharedialog.h | 61 ++++++++++ src/gui/sharedialog.ui | 160 ++++++++++++++++++++++++++ src/gui/socketapi.cpp | 7 ++ src/gui/socketapi.h | 5 + 10 files changed, 504 insertions(+) create mode 100644 src/gui/sharedialog.cpp create mode 100644 src/gui/sharedialog.h create mode 100644 src/gui/sharedialog.ui diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 08c6ff2e79..ff2c969035 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -22,6 +22,7 @@ set(client_UI networksettings.ui protocolwidget.ui settingsdialog.ui + sharedialog.ui sslerrordialog.ui wizard/owncloudadvancedsetuppage.ui wizard/owncloudhttpcredspage.ui @@ -49,6 +50,7 @@ set(client_SRCS protocolwidget.cpp selectivesyncdialog.cpp settingsdialog.cpp + sharedialog.cpp socketapi.cpp sslbutton.cpp sslerrordialog.cpp diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 8c84430e66..35b2bd9687 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -31,6 +31,7 @@ #include "theme.h" #include "utility.h" #include "clientproxy.h" +#include "sharedialog.h" #include "updater/updater.h" #include "creds/abstractcredentials.h" @@ -138,6 +139,9 @@ Application::Application(int &argc, char **argv) : connect(AccountManager::instance(), SIGNAL(accountChanged(Account*,Account*)), this, SLOT(slotAccountChanged(Account*,Account*))); + connect(FolderMan::instance()->socketApi(), SIGNAL(shareCommandReceived(QString)), + this, SLOT(slotShowShareDialog(QString))); + // startup procedure. connect(&_checkConnectionTimer, SIGNAL(timeout()), this, SLOT(slotCheckConnection())); _checkConnectionTimer.setInterval(32 * 1000); // check for connection every 32 seconds. @@ -152,6 +156,7 @@ Application::Application(int &argc, char **argv) : } connect (this, SIGNAL(aboutToQuit()), SLOT(slotCleanup())); + } Application::~Application() @@ -160,6 +165,15 @@ Application::~Application() // qDebug() << "* OCC shutdown"; } +void Application::slotShowShareDialog(const QString &path) +{ + qDebug() << "Opening share dialog"; + ShareDialog *w = new ShareDialog; + //w->setParent(w); + w->setPath(path); + w->show(); +} + void Application::slotLogin() { Account *a = AccountManager::instance()->account(); diff --git a/src/gui/application.h b/src/gui/application.h index 861c2a53b6..dfccfa8ae6 100644 --- a/src/gui/application.h +++ b/src/gui/application.h @@ -29,6 +29,7 @@ #include "progressdispatcher.h" #include "clientproxy.h" #include "folderman.h" +#include "sharedialog.h" class QMessageBox; class QSystemTrayIcon; @@ -84,6 +85,7 @@ protected slots: void slotCredentialsFetched(); void slotToggleFolderman(int state); void slotCrash(); + void slotShowShareDialog(const QString &path); private: void setHelp(); diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index 4819cc7307..49a954aba3 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -271,6 +271,11 @@ QString FolderMan::escapeAlias( const QString& alias ) return a; } +SocketApi *FolderMan::socketApi() +{ + return this->_socketApi; +} + QString FolderMan::unescapeAlias( const QString& alias ) const { QString a(alias); diff --git a/src/gui/folderman.h b/src/gui/folderman.h index c1b50c2990..e3ed39035a 100644 --- a/src/gui/folderman.h +++ b/src/gui/folderman.h @@ -89,6 +89,8 @@ public: // system, thus need to be escaped. static QString escapeAlias( const QString& ); + SocketApi *socketApi(); + signals: /** * signal to indicate a folder named by alias has changed its sync state. diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp new file mode 100644 index 0000000000..4285ef4465 --- /dev/null +++ b/src/gui/sharedialog.cpp @@ -0,0 +1,246 @@ +#include "sharedialog.h" +#include "ui_sharedialog.h" +#include "networkjobs.h" +#include "account.h" +#include "json.h" +#include "folderman.h" +#include +#include +#include + +namespace { + int SHARETYPE_PUBLIC = 3; +} + +namespace Mirall { + +ShareDialog::ShareDialog(QWidget *parent) : + QDialog(parent), + _ui(new Ui::ShareDialog) +{ + setAttribute(Qt::WA_DeleteOnClose); + _ui->setupUi(this); + _ui->pushButton_copy->setIcon(QIcon::fromTheme("edit-copy")); + layout()->setSizeConstraint(QLayout::SetFixedSize); + QMovie *movie = new QMovie("/home/azelphur/ownCloud-share-tools/loading-icon.gif"); + movie->start(); + _ui->labelShareSpinner->setMovie(movie); + _ui->labelShareSpinner->hide(); + + _ui->labelPasswordSpinner->setMovie(movie); + _ui->labelPasswordSpinner->hide(); + + _ui->labelCalendarSpinner->setMovie(movie); + _ui->labelCalendarSpinner->hide(); + connect(_ui->checkBox_shareLink, SIGNAL(clicked()), this, SLOT(slotCheckBoxShareLinkClicked())); + connect(_ui->checkBox_password, SIGNAL(clicked()), this, SLOT(slotCheckBoxPasswordClicked())); + connect(_ui->lineEdit_password, SIGNAL(returnPressed()), this, SLOT(slotPasswordReturnPressed())); + connect(_ui->checkBox_expire, SIGNAL(clicked()), this, SLOT(slotCheckBoxExpireClicked())); + + _ui->labelShareSpinner->hide(); + _ui->lineEdit_shareLink->hide(); + _ui->pushButton_copy->hide(); + _ui->lineEdit_password->hide(); + _ui->checkBox_password->hide(); + _ui->checkBox_expire->hide(); + _ui->calendar->hide(); + _ui->lineEdit_shareGroup->setPlaceholderText("Share with group..."); + _ui->lineEdit_shareUser->setPlaceholderText("Share with user..."); + _ui->lineEdit_password->setPlaceholderText("Choose a password for the public link"); +} + +QString ShareDialog::getPath() +{ + return _path; +} + +void ShareDialog::setPath(const QString &path) +{ + _path = path; + ShareDialog::getShares(); +} + +ShareDialog::~ShareDialog() +{ + delete _ui; +} + +void ShareDialog::slotPasswordReturnPressed() +{ + _ui->labelPasswordSpinner->show(); + QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(_public_share.value("id").toString())); + QUrl postData; + QList > getParams; + QList > postParams; + getParams.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"))); + postParams.append(qMakePair(QString::fromLatin1("password"), _ui->lineEdit_password->text())); + url.setQueryItems(getParams); + postData.setQueryItems(postParams); + OcsShareJob *job = new OcsShareJob("PUT", url, postData, AccountManager::instance()->account(), this); + connect(job, SIGNAL(jobFinished(QString)), this, SLOT(slotCreateShareFetched(QString))); + job->start(); +} + +void ShareDialog::getShares() +{ + this->setWindowTitle(QString("Sharing ").append(_path)); + QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QLatin1String("ocs/v1.php/apps/files_sharing/api/v1/shares")); + QList > params; + params.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"))); + params.append(qMakePair(QString::fromLatin1("path"), _path)); + url.setQueryItems(params); + OcsShareJob *job = new OcsShareJob("GET", url, QUrl(), AccountManager::instance()->account(), this); + connect(job, SIGNAL(jobFinished(QString)), this, SLOT(slotSharesFetched(QString))); + job->start(); +} + +void ShareDialog::slotSharesFetched(QString reply) +{ + bool success = false; + QVariantMap json = QtJson::parse(reply, success).toMap(); + ShareDialog::_shares = json.value("ocs").toMap().values("data")[0].toList(); + for(int i = 0; i < ShareDialog::_shares.count(); i++) + { + QVariantMap data = ShareDialog::_shares[i].toMap(); + + if (data.value("share_type").toInt() == SHARETYPE_PUBLIC) + { + ShareDialog::_public_share = data; + + _ui->lineEdit_shareLink->show(); + _ui->pushButton_copy->show(); + _ui->checkBox_password->show(); + _ui->checkBox_expire->show(); + _ui->pushButton_copy->show(); + _ui->checkBox_shareLink->setChecked(true); + + if (data.value("share_with").isValid()) + { + _ui->checkBox_password->setChecked(true); + _ui->lineEdit_password->setText("********"); + _ui->lineEdit_password->show(); + } + + char url[512]; + sprintf(url, "https://home.azelphur.com/owncloud/public.php?service=files&t=%s", data.value("token").toString().toStdString().c_str()); + _ui->lineEdit_shareLink->setText(url); + } + } +} + +void ShareDialog::slotDeleteShareFetched(QString reply) +{ + _ui->labelShareSpinner->hide(); + _ui->lineEdit_shareLink->hide(); + _ui->pushButton_copy->hide(); + _ui->lineEdit_password->hide(); + _ui->checkBox_password->hide(); + _ui->checkBox_expire->hide(); + _ui->calendar->hide(); +} + +void ShareDialog::slotCheckBoxShareLinkClicked() +{ + if (_ui->checkBox_shareLink->checkState() == Qt::Checked) + { + _ui->labelShareSpinner->show(); + QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QLatin1String("ocs/v1.php/apps/files_sharing/api/v1/shares")); + //QUrl url = Account::concatUrlPath(QUrl("http://localhost:8080/owncloud"), QLatin1String("ocs/v1.php/apps/files_sharing/api/v1/shares")); + QUrl postData; + QList > getParams; + QList > postParams; + getParams.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"))); + postParams.append(qMakePair(QString::fromLatin1("path"), _path)); + postParams.append(qMakePair(QString::fromLatin1("shareType"), QString::number(SHARETYPE_PUBLIC))); + url.setQueryItems(getParams); + postData.setQueryItems(postParams); + OcsShareJob *job = new OcsShareJob("POST", url, postData, AccountManager::instance()->account(), this); + connect(job, SIGNAL(jobFinished(QString)), this, SLOT(slotCreateShareFetched(QString))); + job->start(); + } + else + { + _ui->labelShareSpinner->show(); + QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(_public_share.value("id").toString())); + QList > getParams; + getParams.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"))); + url.setQueryItems(getParams); + OcsShareJob *job = new OcsShareJob("DELETE", url, QUrl(), AccountManager::instance()->account(), this); + connect(job, SIGNAL(jobFinished(QString)), this, SLOT(slotDeleteShareFetched(QString))); + job->start(); + } +} + +void ShareDialog::slotCreateShareFetched(QString reply) +{ + qDebug() << reply; + _ui->labelShareSpinner->hide(); + bool success; + QVariantMap json = QtJson::parse(reply, success).toMap(); + QString url = json.value("ocs").toMap().values("data")[0].toMap().value("url").toString(); + _ui->lineEdit_shareLink->setText(url); + _ui->lineEdit_shareLink->show(); + _ui->pushButton_copy->show(); + _ui->checkBox_password->show(); + _ui->checkBox_expire->show(); + _ui->pushButton_copy->show(); +} + +void ShareDialog::slotCheckBoxPasswordClicked() +{ + if (_ui->checkBox_password->checkState() == Qt::Checked) + { + _ui->lineEdit_password->show(); + } + else + { + _ui->lineEdit_password->hide(); + } +} + +void ShareDialog::slotCheckBoxExpireClicked() +{ + if (_ui->checkBox_expire->checkState() == Qt::Checked) + { + _ui->calendar->show(); + } + else + { + _ui->calendar->hide(); + } +} + +OcsShareJob::OcsShareJob(const QByteArray &verb, const QUrl &url, const QUrl &postData, Account* account, QObject* parent) +: AbstractNetworkJob(account, "", parent), + _verb(verb), + _url(url), + _postData(postData) + +{ + setIgnoreCredentialFailure(true); +} + +void OcsShareJob::start() +{ + QNetworkRequest req; + req.setRawHeader("OCS-APIREQUEST", "true"); + req.setRawHeader("Content-Type", "application/x-www-form-urlencoded"); + qDebug() << ">>>>>>>>" << _url; + QBuffer *buffer = new QBuffer; + buffer->setData(_postData.query().toAscii()); + setReply(davRequest(_verb, _url, req, buffer)); + //setReply(davRequest("GET", url, req)); + setupConnections(reply()); + buffer->setParent(reply()); + AbstractNetworkJob::start(); +} + +bool OcsShareJob::finished() +{ + emit jobFinished(reply()->readAll()); + return true; +} + + + +} diff --git a/src/gui/sharedialog.h b/src/gui/sharedialog.h new file mode 100644 index 0000000000..0ea84dc336 --- /dev/null +++ b/src/gui/sharedialog.h @@ -0,0 +1,61 @@ +#ifndef SHAREDIALOG_H +#define SHAREDIALOG_H + +#include "networkjobs.h" +#include + +namespace Mirall { + +class OcsShareJob : public AbstractNetworkJob { + Q_OBJECT +public: + explicit OcsShareJob(const QByteArray &verb, const QUrl &url, const QUrl &postData, Account *account, QObject* parent = 0); +public slots: + void start() Q_DECL_OVERRIDE; +signals: + void jobFinished(QString reply); +private slots: + virtual bool finished() Q_DECL_OVERRIDE; +private: + QByteArray _verb; + QUrl _url; + QUrl _postData; +}; + +namespace Ui { +class ShareDialog; +} + +class AbstractCredentials; +class Account; +class QuotaInfo; +class MirallAccessManager; + +class ShareDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ShareDialog(QWidget *parent = 0); + ~ShareDialog(); + void getShares(); + void setPath(const QString &path); + QString getPath(); +private slots: + void slotSharesFetched(QString reply); + void slotCreateShareFetched(QString reply); + void slotDeleteShareFetched(QString reply); + void slotCheckBoxShareLinkClicked(); + void slotCheckBoxPasswordClicked(); + void slotCheckBoxExpireClicked(); + void slotPasswordReturnPressed(); +private: + Ui::ShareDialog *_ui; + QString _path; + QList _shares; + QVariantMap _public_share; +}; + +} + +#endif // SHAREDIALOG_H diff --git a/src/gui/sharedialog.ui b/src/gui/sharedialog.ui new file mode 100644 index 0000000000..72ba5788e2 --- /dev/null +++ b/src/gui/sharedialog.ui @@ -0,0 +1,160 @@ + + + Mirall::ShareDialog + + + + 0 + 0 + 400 + 535 + + + + Share NewDocument.odt + + + + + + QLayout::SetFixedSize + + + + + + + + + + + Qt::Horizontal + + + + 40 + 5 + + + + + + + + 1 + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + + 40 + 5 + + + + + + + + + + Share link + + + + + + + + + + + + + + + + QLayout::SetDefaultConstraint + + + + + true + + + + + + + + + + + + + + + + + + Set password + + + + + + + + + + + + + + + + + + QLineEdit::Password + + + + + + + + + + + Set expiry date + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp index 63d51a66c7..9b73270a08 100644 --- a/src/gui/socketapi.cpp +++ b/src/gui/socketapi.cpp @@ -402,6 +402,13 @@ void SocketApi::command_RETRIEVE_FILE_STATUS(const QString& argument, SocketType sendMessage(socket, message); } +void SocketApi::command_SHARE(const QString& argument, QTcpSocket* socket) +{ + sendMessage(socket, QString("Openening sharing dialog >").append(argument)); + QString folderForPath = FolderMan::instance()->folderForPath(argument)->path(); + emit shareCommandReceived(argument.right(argument.count()-folderForPath.count()+1)); +} + void SocketApi::command_VERSION(const QString&, SocketType* socket) { sendMessage(socket, QLatin1String("VERSION:" MIRALL_VERSION_STRING ":" MIRALL_SOCKET_API_VERSION)); diff --git a/src/gui/socketapi.h b/src/gui/socketapi.h index 75a490f2da..308c7bdf1c 100644 --- a/src/gui/socketapi.h +++ b/src/gui/socketapi.h @@ -56,6 +56,10 @@ public slots: void slotRegisterPath( const QString& alias ); void slotReadExcludes(); void slotClearExcludesList(); + +signals: + void shareCommandReceived(const QString &path); + private slots: void slotNewConnection(); void onLostConnection(); @@ -74,6 +78,7 @@ private: Q_INVOKABLE void command_RETRIEVE_FOLDER_STATUS(const QString& argument, SocketType* socket); Q_INVOKABLE void command_RETRIEVE_FILE_STATUS(const QString& argument, SocketType* socket); + Q_INVOKABLE void command_SHARE(const QString& argument, QTcpSocket* socket); Q_INVOKABLE void command_VERSION(const QString& argument, SocketType* socket); From bd7f45e398e099dc71353073e53474b30c66ff5c Mon Sep 17 00:00:00 2001 From: "Alfie \"Azelphur\" Day" Date: Tue, 9 Sep 2014 00:50:31 +0100 Subject: [PATCH 02/18] Everything works now, albeit without error checking. --- src/gui/sharedialog.cpp | 57 ++++++++++++++++++++++++++++++++++++++--- src/gui/sharedialog.h | 5 ++++ 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 4285ef4465..47ca96fc71 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -36,6 +36,7 @@ ShareDialog::ShareDialog(QWidget *parent) : connect(_ui->checkBox_password, SIGNAL(clicked()), this, SLOT(slotCheckBoxPasswordClicked())); connect(_ui->lineEdit_password, SIGNAL(returnPressed()), this, SLOT(slotPasswordReturnPressed())); connect(_ui->checkBox_expire, SIGNAL(clicked()), this, SLOT(slotCheckBoxExpireClicked())); + connect(_ui->calendar, SIGNAL(clicked(QDate)), SLOT(slotCalendarClicked(QDate))); _ui->labelShareSpinner->hide(); _ui->lineEdit_shareLink->hide(); @@ -49,6 +50,32 @@ ShareDialog::ShareDialog(QWidget *parent) : _ui->lineEdit_password->setPlaceholderText("Choose a password for the public link"); } +void ShareDialog::setExpireDate(QString date) +{ + _ui->labelCalendarSpinner->show(); + QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(_public_share.value("id").toString())); + QUrl postData; + QList > getParams; + QList > postParams; + getParams.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"))); + postParams.append(qMakePair(QString::fromLatin1("expireDate"), date)); + url.setQueryItems(getParams); + postData.setQueryItems(postParams); + OcsShareJob *job = new OcsShareJob("PUT", url, postData, AccountManager::instance()->account(), this); + connect(job, SIGNAL(jobFinished(QString)), this, SLOT(slotExpireSet(QString))); + job->start(); +} + +void ShareDialog::slotExpireSet(QString reply) +{ + _ui->labelCalendarSpinner->hide(); +} + +void ShareDialog::slotCalendarClicked(QDate date) +{ + ShareDialog::setExpireDate(date.toString("dd-MM-yyyy")); +} + QString ShareDialog::getPath() { return _path; @@ -66,6 +93,13 @@ ShareDialog::~ShareDialog() } void ShareDialog::slotPasswordReturnPressed() +{ + ShareDialog::setPassword(_ui->lineEdit_password->text()); + _ui->lineEdit_password->setPlaceholderText("Password Protected"); + _ui->lineEdit_password->setText(""); +} + +void ShareDialog::setPassword(QString password) { _ui->labelPasswordSpinner->show(); QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(_public_share.value("id").toString())); @@ -73,14 +107,19 @@ void ShareDialog::slotPasswordReturnPressed() QList > getParams; QList > postParams; getParams.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"))); - postParams.append(qMakePair(QString::fromLatin1("password"), _ui->lineEdit_password->text())); + postParams.append(qMakePair(QString::fromLatin1("password"), password)); url.setQueryItems(getParams); postData.setQueryItems(postParams); OcsShareJob *job = new OcsShareJob("PUT", url, postData, AccountManager::instance()->account(), this); - connect(job, SIGNAL(jobFinished(QString)), this, SLOT(slotCreateShareFetched(QString))); + connect(job, SIGNAL(jobFinished(QString)), this, SLOT(slotPasswordSet(QString))); job->start(); } +void ShareDialog::slotPasswordSet(QString reply) +{ + _ui->labelPasswordSpinner->hide(); +} + void ShareDialog::getShares() { this->setWindowTitle(QString("Sharing ").append(_path)); @@ -121,6 +160,13 @@ void ShareDialog::slotSharesFetched(QString reply) _ui->lineEdit_password->show(); } + if (data.value("expire_date").isValid()) + { + _ui->calendar->setSelectedDate(QDate::fromString(data.value("expire_date").toString(), "dd-MM-yyyy")); + _ui->calendar->show(); + _ui->checkBox_expire->setChecked(true); + } + char url[512]; sprintf(url, "https://home.azelphur.com/owncloud/public.php?service=files&t=%s", data.value("token").toString().toStdString().c_str()); _ui->lineEdit_shareLink->setText(url); @@ -145,7 +191,6 @@ void ShareDialog::slotCheckBoxShareLinkClicked() { _ui->labelShareSpinner->show(); QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QLatin1String("ocs/v1.php/apps/files_sharing/api/v1/shares")); - //QUrl url = Account::concatUrlPath(QUrl("http://localhost:8080/owncloud"), QLatin1String("ocs/v1.php/apps/files_sharing/api/v1/shares")); QUrl postData; QList > getParams; QList > postParams; @@ -194,6 +239,8 @@ void ShareDialog::slotCheckBoxPasswordClicked() } else { + ShareDialog::setPassword(QString("")); + _ui->labelPasswordSpinner->show(); _ui->lineEdit_password->hide(); } } @@ -202,10 +249,14 @@ void ShareDialog::slotCheckBoxExpireClicked() { if (_ui->checkBox_expire->checkState() == Qt::Checked) { + QDate date = QDate::currentDate().addDays(1); + ShareDialog::setExpireDate(date.toString("dd-MM-yyyy")); + _ui->calendar->setSelectedDate(date); _ui->calendar->show(); } else { + ShareDialog::setExpireDate(QString("")); _ui->calendar->hide(); } } diff --git a/src/gui/sharedialog.h b/src/gui/sharedialog.h index 0ea84dc336..569f13ee4a 100644 --- a/src/gui/sharedialog.h +++ b/src/gui/sharedialog.h @@ -45,6 +45,9 @@ private slots: void slotSharesFetched(QString reply); void slotCreateShareFetched(QString reply); void slotDeleteShareFetched(QString reply); + void slotPasswordSet(QString reply); + void slotExpireSet(QString reply); + void slotCalendarClicked(QDate date); void slotCheckBoxShareLinkClicked(); void slotCheckBoxPasswordClicked(); void slotCheckBoxExpireClicked(); @@ -54,6 +57,8 @@ private: QString _path; QList _shares; QVariantMap _public_share; + void setPassword(QString password); + void setExpireDate(QString date); }; } From b7d4c997a3a39f4b4a57f82e714b3773261905ad Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Fri, 19 Dec 2014 16:56:17 +0100 Subject: [PATCH 03/18] Fix rebase of branch --- src/gui/sharedialog.cpp | 16 +++++++++++++--- src/gui/sharedialog.h | 2 +- src/gui/sharedialog.ui | 4 ++-- src/gui/socketapi.cpp | 2 +- src/gui/socketapi.h | 2 +- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 47ca96fc71..f82c967f27 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -5,14 +5,13 @@ #include "json.h" #include "folderman.h" #include -#include #include namespace { int SHARETYPE_PUBLIC = 3; } -namespace Mirall { +namespace OCC { ShareDialog::ShareDialog(QWidget *parent) : QDialog(parent), @@ -278,7 +277,18 @@ void OcsShareJob::start() req.setRawHeader("Content-Type", "application/x-www-form-urlencoded"); qDebug() << ">>>>>>>>" << _url; QBuffer *buffer = new QBuffer; - buffer->setData(_postData.query().toAscii()); + //buffer->setData(_postData.query().toAscii()); + + QString tmp; + auto tmp2 = _postData.queryItems(); + for (int i = 0; i < tmp2.size(); i++) { + if (i != 0) { + tmp.append("="); + } + tmp.append(tmp2[i].first + "=" + tmp2[i].second); + } + buffer->setData(tmp.toAscii()); + setReply(davRequest(_verb, _url, req, buffer)); //setReply(davRequest("GET", url, req)); setupConnections(reply()); diff --git a/src/gui/sharedialog.h b/src/gui/sharedialog.h index 569f13ee4a..af63bde335 100644 --- a/src/gui/sharedialog.h +++ b/src/gui/sharedialog.h @@ -4,7 +4,7 @@ #include "networkjobs.h" #include -namespace Mirall { +namespace OCC { class OcsShareJob : public AbstractNetworkJob { Q_OBJECT diff --git a/src/gui/sharedialog.ui b/src/gui/sharedialog.ui index 72ba5788e2..515ef96162 100644 --- a/src/gui/sharedialog.ui +++ b/src/gui/sharedialog.ui @@ -1,7 +1,7 @@ - Mirall::ShareDialog - + OCC::ShareDialog + 0 diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp index 9b73270a08..fac193c929 100644 --- a/src/gui/socketapi.cpp +++ b/src/gui/socketapi.cpp @@ -402,7 +402,7 @@ void SocketApi::command_RETRIEVE_FILE_STATUS(const QString& argument, SocketType sendMessage(socket, message); } -void SocketApi::command_SHARE(const QString& argument, QTcpSocket* socket) +void SocketApi::command_SHARE(const QString& argument, SocketType* socket) { sendMessage(socket, QString("Openening sharing dialog >").append(argument)); QString folderForPath = FolderMan::instance()->folderForPath(argument)->path(); diff --git a/src/gui/socketapi.h b/src/gui/socketapi.h index 308c7bdf1c..ac6000ae27 100644 --- a/src/gui/socketapi.h +++ b/src/gui/socketapi.h @@ -78,7 +78,7 @@ private: Q_INVOKABLE void command_RETRIEVE_FOLDER_STATUS(const QString& argument, SocketType* socket); Q_INVOKABLE void command_RETRIEVE_FILE_STATUS(const QString& argument, SocketType* socket); - Q_INVOKABLE void command_SHARE(const QString& argument, QTcpSocket* socket); + Q_INVOKABLE void command_SHARE(const QString& argument, SocketType* socket); Q_INVOKABLE void command_VERSION(const QString& argument, SocketType* socket); From 763d5f67cd39bd85117b7d55f910b064d2a56a49 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Tue, 23 Dec 2014 16:30:37 +0100 Subject: [PATCH 04/18] Some error checking on SHARE sockeAPI command --- src/gui/socketapi.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp index fac193c929..721c7941bd 100644 --- a/src/gui/socketapi.cpp +++ b/src/gui/socketapi.cpp @@ -404,9 +404,25 @@ void SocketApi::command_RETRIEVE_FILE_STATUS(const QString& argument, SocketType void SocketApi::command_SHARE(const QString& argument, SocketType* socket) { - sendMessage(socket, QString("Openening sharing dialog >").append(argument)); - QString folderForPath = FolderMan::instance()->folderForPath(argument)->path(); - emit shareCommandReceived(argument.right(argument.count()-folderForPath.count()+1)); + if (!socket) { + qDebug() << "No valid socket object."; + return; + } + + qDebug() << Q_FUNC_INFO << argument; + + QString statusString; + + Folder *shareFolder = FolderMan::instance()->folderForPath(argument); + if (!shareFolder) { + QString message = QLatin1String("SHARE:NOP:")+QDir::toNativeSeparators(argument); + sendMessage(socket, message); + } else { + QString message = QLatin1String("SHARE:OK:")+QDir::toNativeSeparators(argument); + sendMessage(socket, message); + QString folderForPath = shareFolder->path(); + emit shareCommandReceived(argument.right(argument.count()-folderForPath.count()+1)); + } } void SocketApi::command_VERSION(const QString&, SocketType* socket) From 0ad4fb727317210329d5767544f4ef49433af967 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Tue, 23 Dec 2014 21:58:55 +0100 Subject: [PATCH 05/18] Create valid poststring --- src/gui/sharedialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index f82c967f27..21ac6e297f 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -283,7 +283,7 @@ void OcsShareJob::start() auto tmp2 = _postData.queryItems(); for (int i = 0; i < tmp2.size(); i++) { if (i != 0) { - tmp.append("="); + tmp.append("&"); } tmp.append(tmp2[i].first + "=" + tmp2[i].second); } From ec3c83c0c9ffc1b4c08055cffd61db6bd8bf1715 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Wed, 24 Dec 2014 14:44:21 +0100 Subject: [PATCH 06/18] Minor sharedialog.ui fixes --- src/gui/sharedialog.ui | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/src/gui/sharedialog.ui b/src/gui/sharedialog.ui index 515ef96162..43239fcc26 100644 --- a/src/gui/sharedialog.ui +++ b/src/gui/sharedialog.ui @@ -6,7 +6,7 @@ 0 0 - 400 + 500 535 @@ -20,10 +20,33 @@ QLayout::SetFixedSize - - - - + + + Share with + + + + + + + + + User: + + + + + + + + + + Group + + + + + From facb6b2e816b4cdd95d5c8026c713090a0e1da87 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Wed, 24 Dec 2014 14:44:35 +0100 Subject: [PATCH 07/18] Check box public link now works multiple times When deleting a share (public link) and recreating it we need to store the new id. --- src/gui/sharedialog.cpp | 9 +++++---- src/gui/sharedialog.h | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 21ac6e297f..0902fbad7a 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -52,7 +52,7 @@ ShareDialog::ShareDialog(QWidget *parent) : void ShareDialog::setExpireDate(QString date) { _ui->labelCalendarSpinner->show(); - QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(_public_share.value("id").toString())); + QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(QString::number(_public_share_id))); QUrl postData; QList > getParams; QList > postParams; @@ -101,7 +101,7 @@ void ShareDialog::slotPasswordReturnPressed() void ShareDialog::setPassword(QString password) { _ui->labelPasswordSpinner->show(); - QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(_public_share.value("id").toString())); + QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(QString::number(_public_share_id))); QUrl postData; QList > getParams; QList > postParams; @@ -143,7 +143,7 @@ void ShareDialog::slotSharesFetched(QString reply) if (data.value("share_type").toInt() == SHARETYPE_PUBLIC) { - ShareDialog::_public_share = data; + _public_share_id = data.value("id").toULongLong(); _ui->lineEdit_shareLink->show(); _ui->pushButton_copy->show(); @@ -205,7 +205,7 @@ void ShareDialog::slotCheckBoxShareLinkClicked() else { _ui->labelShareSpinner->show(); - QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(_public_share.value("id").toString())); + QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(QString::number(_public_share_id))); QList > getParams; getParams.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"))); url.setQueryItems(getParams); @@ -221,6 +221,7 @@ void ShareDialog::slotCreateShareFetched(QString reply) _ui->labelShareSpinner->hide(); bool success; QVariantMap json = QtJson::parse(reply, success).toMap(); + _public_share_id = json.value("ocs").toMap().values("data")[0].toMap().value("id").toULongLong(); QString url = json.value("ocs").toMap().values("data")[0].toMap().value("url").toString(); _ui->lineEdit_shareLink->setText(url); _ui->lineEdit_shareLink->show(); diff --git a/src/gui/sharedialog.h b/src/gui/sharedialog.h index af63bde335..179f73c26a 100644 --- a/src/gui/sharedialog.h +++ b/src/gui/sharedialog.h @@ -56,7 +56,7 @@ private: Ui::ShareDialog *_ui; QString _path; QList _shares; - QVariantMap _public_share; + qulonglong _public_share_id; void setPassword(QString password); void setExpireDate(QString date); }; From ee2e6e5dce6be2caa0f4d3de72fc4bbddaef3d74 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Sun, 28 Dec 2014 20:10:46 +0100 Subject: [PATCH 08/18] Also allow sharing if we only sync a part --- src/gui/socketapi.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp index 721c7941bd..d0059df5de 100644 --- a/src/gui/socketapi.cpp +++ b/src/gui/socketapi.cpp @@ -421,7 +421,8 @@ void SocketApi::command_SHARE(const QString& argument, SocketType* socket) QString message = QLatin1String("SHARE:OK:")+QDir::toNativeSeparators(argument); sendMessage(socket, message); QString folderForPath = shareFolder->path(); - emit shareCommandReceived(argument.right(argument.count()-folderForPath.count()+1)); + QString path = shareFolder->remotePath() + argument.right(argument.count()-folderForPath.count()+1); + emit shareCommandReceived(path); } } From 786a877986ac029c441de0ebfaac84b0383261f5 Mon Sep 17 00:00:00 2001 From: Klaas Freitag Date: Fri, 9 Jan 2015 11:44:01 +0100 Subject: [PATCH 09/18] SocketAPI: Some cleanups plus added some consts --- src/gui/socketapi.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp index d0059df5de..5cd9868082 100644 --- a/src/gui/socketapi.cpp +++ b/src/gui/socketapi.cpp @@ -411,17 +411,15 @@ void SocketApi::command_SHARE(const QString& argument, SocketType* socket) qDebug() << Q_FUNC_INFO << argument; - QString statusString; - Folder *shareFolder = FolderMan::instance()->folderForPath(argument); if (!shareFolder) { - QString message = QLatin1String("SHARE:NOP:")+QDir::toNativeSeparators(argument); + const QString message = QLatin1String("SHARE:NOP:")+QDir::toNativeSeparators(argument); sendMessage(socket, message); } else { - QString message = QLatin1String("SHARE:OK:")+QDir::toNativeSeparators(argument); + const QString message = QLatin1String("SHARE:OK:")+QDir::toNativeSeparators(argument); sendMessage(socket, message); - QString folderForPath = shareFolder->path(); - QString path = shareFolder->remotePath() + argument.right(argument.count()-folderForPath.count()+1); + const QString folderForPath = shareFolder->path(); + const QString path = shareFolder->remotePath() + argument.right(argument.count()-folderForPath.count()+1); emit shareCommandReceived(path); } } From bc84a78b0f8cafc2763f85d989096c9ca4408eae Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Sun, 11 Jan 2015 11:19:12 +0100 Subject: [PATCH 10/18] ShareDialog: Made slot arguments const --- src/gui/sharedialog.cpp | 12 ++++++------ src/gui/sharedialog.h | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 0902fbad7a..fe4ed41fbb 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -65,12 +65,12 @@ void ShareDialog::setExpireDate(QString date) job->start(); } -void ShareDialog::slotExpireSet(QString reply) +void ShareDialog::slotExpireSet(const QString &reply) { _ui->labelCalendarSpinner->hide(); } -void ShareDialog::slotCalendarClicked(QDate date) +void ShareDialog::slotCalendarClicked(const QDate &date) { ShareDialog::setExpireDate(date.toString("dd-MM-yyyy")); } @@ -114,7 +114,7 @@ void ShareDialog::setPassword(QString password) job->start(); } -void ShareDialog::slotPasswordSet(QString reply) +void ShareDialog::slotPasswordSet(const QString &reply) { _ui->labelPasswordSpinner->hide(); } @@ -132,7 +132,7 @@ void ShareDialog::getShares() job->start(); } -void ShareDialog::slotSharesFetched(QString reply) +void ShareDialog::slotSharesFetched(const QString &reply) { bool success = false; QVariantMap json = QtJson::parse(reply, success).toMap(); @@ -173,7 +173,7 @@ void ShareDialog::slotSharesFetched(QString reply) } } -void ShareDialog::slotDeleteShareFetched(QString reply) +void ShareDialog::slotDeleteShareFetched(const QString &reply) { _ui->labelShareSpinner->hide(); _ui->lineEdit_shareLink->hide(); @@ -215,7 +215,7 @@ void ShareDialog::slotCheckBoxShareLinkClicked() } } -void ShareDialog::slotCreateShareFetched(QString reply) +void ShareDialog::slotCreateShareFetched(const QString &reply) { qDebug() << reply; _ui->labelShareSpinner->hide(); diff --git a/src/gui/sharedialog.h b/src/gui/sharedialog.h index 179f73c26a..edb2159e77 100644 --- a/src/gui/sharedialog.h +++ b/src/gui/sharedialog.h @@ -42,12 +42,12 @@ public: void setPath(const QString &path); QString getPath(); private slots: - void slotSharesFetched(QString reply); - void slotCreateShareFetched(QString reply); - void slotDeleteShareFetched(QString reply); - void slotPasswordSet(QString reply); - void slotExpireSet(QString reply); - void slotCalendarClicked(QDate date); + void slotSharesFetched(const QString &reply); + void slotCreateShareFetched(const QString &reply); + void slotDeleteShareFetched(const QString &reply); + void slotPasswordSet(const QString &reply); + void slotExpireSet(const QString &reply); + void slotCalendarClicked(const QDate &date); void slotCheckBoxShareLinkClicked(); void slotCheckBoxPasswordClicked(); void slotCheckBoxExpireClicked(); From 1d011a2f9a95cde2b03dfd62d25509cc065a264e Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Sun, 11 Jan 2015 13:22:48 +0100 Subject: [PATCH 11/18] ShareDialog: make visible text translatable --- src/gui/sharedialog.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index fe4ed41fbb..506aaa4adc 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -44,9 +44,9 @@ ShareDialog::ShareDialog(QWidget *parent) : _ui->checkBox_password->hide(); _ui->checkBox_expire->hide(); _ui->calendar->hide(); - _ui->lineEdit_shareGroup->setPlaceholderText("Share with group..."); - _ui->lineEdit_shareUser->setPlaceholderText("Share with user..."); - _ui->lineEdit_password->setPlaceholderText("Choose a password for the public link"); + _ui->lineEdit_shareGroup->setPlaceholderText(tr("Share with group...")); + _ui->lineEdit_shareUser->setPlaceholderText(tr("Share with user...")); + _ui->lineEdit_password->setPlaceholderText(tr("Choose a password for the public link")); } void ShareDialog::setExpireDate(QString date) @@ -94,7 +94,7 @@ ShareDialog::~ShareDialog() void ShareDialog::slotPasswordReturnPressed() { ShareDialog::setPassword(_ui->lineEdit_password->text()); - _ui->lineEdit_password->setPlaceholderText("Password Protected"); + _ui->lineEdit_password->setPlaceholderText(tr("Password Protected")); _ui->lineEdit_password->setText(""); } @@ -121,7 +121,7 @@ void ShareDialog::slotPasswordSet(const QString &reply) void ShareDialog::getShares() { - this->setWindowTitle(QString("Sharing ").append(_path)); + this->setWindowTitle(tr("Sharing %1").arg(_path)); QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QLatin1String("ocs/v1.php/apps/files_sharing/api/v1/shares")); QList > params; params.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"))); From e20f819c1dde1595ee4712ed1b493586778cca1d Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Sun, 11 Jan 2015 13:24:40 +0100 Subject: [PATCH 12/18] Sharedialog: QString("") -> QString() --- src/gui/sharedialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 506aaa4adc..91ead7517b 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -239,7 +239,7 @@ void ShareDialog::slotCheckBoxPasswordClicked() } else { - ShareDialog::setPassword(QString("")); + ShareDialog::setPassword(QString()); _ui->labelPasswordSpinner->show(); _ui->lineEdit_password->hide(); } @@ -256,7 +256,7 @@ void ShareDialog::slotCheckBoxExpireClicked() } else { - ShareDialog::setExpireDate(QString("")); + ShareDialog::setExpireDate(QString()); _ui->calendar->hide(); } } From 44690ff596d452787be3d7fcc21336033ad5c2e2 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Sun, 11 Jan 2015 13:27:32 +0100 Subject: [PATCH 13/18] ShareDialog: fixed "" -> QString --- src/gui/sharedialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 91ead7517b..225b81e96d 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -95,7 +95,7 @@ void ShareDialog::slotPasswordReturnPressed() { ShareDialog::setPassword(_ui->lineEdit_password->text()); _ui->lineEdit_password->setPlaceholderText(tr("Password Protected")); - _ui->lineEdit_password->setText(""); + _ui->lineEdit_password->setText(QString()); } void ShareDialog::setPassword(QString password) From accb036507ebeebacef64de75095ed7a5892e21e Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Sun, 11 Jan 2015 13:36:45 +0100 Subject: [PATCH 14/18] Removed some unused outcommented code --- src/gui/application.cpp | 1 - src/gui/sharedialog.cpp | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 35b2bd9687..bdcf4e16a8 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -169,7 +169,6 @@ void Application::slotShowShareDialog(const QString &path) { qDebug() << "Opening share dialog"; ShareDialog *w = new ShareDialog; - //w->setParent(w); w->setPath(path); w->show(); } diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 225b81e96d..bfc5d18ae3 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -276,9 +276,7 @@ void OcsShareJob::start() QNetworkRequest req; req.setRawHeader("OCS-APIREQUEST", "true"); req.setRawHeader("Content-Type", "application/x-www-form-urlencoded"); - qDebug() << ">>>>>>>>" << _url; QBuffer *buffer = new QBuffer; - //buffer->setData(_postData.query().toAscii()); QString tmp; auto tmp2 = _postData.queryItems(); @@ -291,7 +289,6 @@ void OcsShareJob::start() buffer->setData(tmp.toAscii()); setReply(davRequest(_verb, _url, req, buffer)); - //setReply(davRequest("GET", url, req)); setupConnections(reply()); buffer->setParent(reply()); AbstractNetworkJob::start(); From fa390299f98f5e8d817b45c39b34b73755373bac Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Sun, 11 Jan 2015 13:41:15 +0100 Subject: [PATCH 15/18] Added Q_FUNC_INFO at several places --- src/gui/application.cpp | 2 +- src/gui/sharedialog.cpp | 2 +- src/gui/socketapi.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index bdcf4e16a8..3e27897379 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -167,7 +167,7 @@ Application::~Application() void Application::slotShowShareDialog(const QString &path) { - qDebug() << "Opening share dialog"; + qDebug() << Q_FUNC_INFO << "Opening share dialog"; ShareDialog *w = new ShareDialog; w->setPath(path); w->show(); diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index bfc5d18ae3..481b5c3495 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -217,7 +217,7 @@ void ShareDialog::slotCheckBoxShareLinkClicked() void ShareDialog::slotCreateShareFetched(const QString &reply) { - qDebug() << reply; + qDebug() << Q_FUNC_INFO << reply; _ui->labelShareSpinner->hide(); bool success; QVariantMap json = QtJson::parse(reply, success).toMap(); diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp index 5cd9868082..5068ad4663 100644 --- a/src/gui/socketapi.cpp +++ b/src/gui/socketapi.cpp @@ -405,7 +405,7 @@ void SocketApi::command_RETRIEVE_FILE_STATUS(const QString& argument, SocketType void SocketApi::command_SHARE(const QString& argument, SocketType* socket) { if (!socket) { - qDebug() << "No valid socket object."; + qDebug() << Q_FUNC_INFO << "No valid socket object."; return; } From 25e90ff658acecd38c04427f0fbdca03a5c12fd2 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Sun, 11 Jan 2015 13:56:23 +0100 Subject: [PATCH 16/18] Sharedialog: use Q_FOREACH --- src/gui/sharedialog.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 481b5c3495..4965dca908 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -278,15 +278,11 @@ void OcsShareJob::start() req.setRawHeader("Content-Type", "application/x-www-form-urlencoded"); QBuffer *buffer = new QBuffer; - QString tmp; - auto tmp2 = _postData.queryItems(); - for (int i = 0; i < tmp2.size(); i++) { - if (i != 0) { - tmp.append("&"); - } - tmp.append(tmp2[i].first + "=" + tmp2[i].second); + QStringList tmp; + Q_FOREACH(auto tmp2, _postData.queryItems()) { + tmp.append(tmp2.first + "=" + tmp2.second); } - buffer->setData(tmp.toAscii()); + buffer->setData(tmp.join("&").toAscii()); setReply(davRequest(_verb, _url, req, buffer)); setupConnections(reply()); From 811cbc27c022789a21367f1d0a6be12a667b9f40 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Sun, 11 Jan 2015 14:16:49 +0100 Subject: [PATCH 17/18] Sharedialog: Construct correct public url for existing shares --- src/gui/sharedialog.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 4965dca908..3249cb8507 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -166,8 +166,7 @@ void ShareDialog::slotSharesFetched(const QString &reply) _ui->checkBox_expire->setChecked(true); } - char url[512]; - sprintf(url, "https://home.azelphur.com/owncloud/public.php?service=files&t=%s", data.value("token").toString().toStdString().c_str()); + const QString url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("public.php?service=files&t=%1").arg(data.value("token").toString())).toString(); _ui->lineEdit_shareLink->setText(url); } } From b680788f48d2476f3f83133f93254468f2d63938 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Mon, 12 Jan 2015 10:14:45 +0100 Subject: [PATCH 18/18] Sharedialog: Allow setting and retrieving of experiation data for public urls --- src/gui/sharedialog.cpp | 8 ++++---- src/gui/sharedialog.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 3249cb8507..2d3daf9a7c 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -49,7 +49,7 @@ ShareDialog::ShareDialog(QWidget *parent) : _ui->lineEdit_password->setPlaceholderText(tr("Choose a password for the public link")); } -void ShareDialog::setExpireDate(QString date) +void ShareDialog::setExpireDate(const QString &date) { _ui->labelCalendarSpinner->show(); QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(QString::number(_public_share_id))); @@ -72,7 +72,7 @@ void ShareDialog::slotExpireSet(const QString &reply) void ShareDialog::slotCalendarClicked(const QDate &date) { - ShareDialog::setExpireDate(date.toString("dd-MM-yyyy")); + ShareDialog::setExpireDate(date.toString("yyyy-MM-dd")); } QString ShareDialog::getPath() @@ -159,9 +159,9 @@ void ShareDialog::slotSharesFetched(const QString &reply) _ui->lineEdit_password->show(); } - if (data.value("expire_date").isValid()) + if (data.value("expiration").isValid()) { - _ui->calendar->setSelectedDate(QDate::fromString(data.value("expire_date").toString(), "dd-MM-yyyy")); + _ui->calendar->setSelectedDate(QDate::fromString(data.value("expiration").toString(), "yyyy-MM-dd 00:00:00")); _ui->calendar->show(); _ui->checkBox_expire->setChecked(true); } diff --git a/src/gui/sharedialog.h b/src/gui/sharedialog.h index edb2159e77..2467f246c4 100644 --- a/src/gui/sharedialog.h +++ b/src/gui/sharedialog.h @@ -58,7 +58,7 @@ private: QList _shares; qulonglong _public_share_id; void setPassword(QString password); - void setExpireDate(QString date); + void setExpireDate(const QString &date); }; }