Sharedialog: Allow modifications of permission for users

This commit is contained in:
Roeland Jago Douma 2015-01-12 14:48:31 +01:00
parent 9b7e6cc5c1
commit 017b54f9a8
3 changed files with 95 additions and 2 deletions

View file

@ -8,7 +8,15 @@
#include <QMovie>
namespace {
int SHARETYPE_USER = 0;
int SHARETYPE_GROUP = 1;
int SHARETYPE_PUBLIC = 3;
int PERM_READ = 1;
int PERM_UPDATE = 2;
int PERM_CREATE = 4;
int PERM_DELTEE = 8;
int PERM_SHARE = 16;
}
namespace OCC {
@ -47,6 +55,17 @@ ShareDialog::ShareDialog(QWidget *parent) :
_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"));
QStringList header;
header << "share_id";
header << tr("User name");
header << tr("User");
header << tr("Edit");
header << tr("Share");
_ui->treeWidget_shareUser->setHeaderLabels(header);
_ui->treeWidget_shareUser->setColumnCount(5);
_ui->treeWidget_shareUser->hideColumn(0);
connect(_ui->treeWidget_shareUser, SIGNAL(itemChanged(QTreeWidgetItem *, int)), SLOT(slotUserShareWidgetClicked(QTreeWidgetItem *, int)));
}
void ShareDialog::setExpireDate(const QString &date)
@ -141,6 +160,35 @@ void ShareDialog::slotSharesFetched(const QString &reply)
{
QVariantMap data = ShareDialog::_shares[i].toMap();
if (data.value("share_type").toInt() == SHARETYPE_USER)
{
QStringList columns;
columns << data.value("id").toString();
columns << data.value("share_with").toString();
columns << data.value("share_with_displayname").toString();
columns << "";
columns << "";
QTreeWidgetItem *item = new QTreeWidgetItem(columns);
int perm = data.value("permissions").toInt();
if (perm & PERM_UPDATE) {
item->setCheckState(3, Qt::Checked);
} else {
item->setCheckState(3, Qt::Unchecked);
}
if (perm & PERM_SHARE) {
item->setCheckState(4, Qt::Checked);
} else {
item->setCheckState(4, Qt::Unchecked);
}
_ui->treeWidget_shareUser->insertTopLevelItem(0, item);
}
if (data.value("share_type").toInt() == SHARETYPE_PUBLIC)
{
_public_share_id = data.value("id").toULongLong();
@ -260,6 +308,38 @@ void ShareDialog::slotCheckBoxExpireClicked()
}
}
void ShareDialog::slotUserShareWidgetClicked(QTreeWidgetItem *item, int column)
{
int id = item->data(0, Qt::DisplayRole).toInt();
int perm = 1;
if (item->checkState(3) == Qt::Checked) {
perm += PERM_UPDATE;
}
if (item->checkState(4) == Qt::Checked) {
perm += PERM_SHARE;
}
QUrl url = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("ocs/v1.php/apps/files_sharing/api/v1/shares/").append(QString::number(id)));
QUrl postData;
QList<QPair<QString, QString> > getParams;
QList<QPair<QString, QString> > postParams;
getParams.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json")));
postParams.append(qMakePair(QString::fromLatin1("permissions"), QString::number(perm)));
url.setQueryItems(getParams);
postData.setQueryItems(postParams);
OcsShareJob *job = new OcsShareJob("PUT", url, postData, AccountManager::instance()->account(), this);
connect(job, SIGNAL(jobFinished(QString)), this, SLOT(slotUpdateUserShare(QString)));
job->start();
}
void ShareDialog::slotUpdateUserShare(const QString &reply)
{
}
OcsShareJob::OcsShareJob(const QByteArray &verb, const QUrl &url, const QUrl &postData, AccountPtr account, QObject* parent)
: AbstractNetworkJob(account, "", parent),
_verb(verb),

View file

@ -16,6 +16,7 @@
#include "networkjobs.h"
#include <QDialog>
#include <QTreeWidgetItem>
namespace OCC {
@ -65,6 +66,9 @@ private slots:
void slotCheckBoxPasswordClicked();
void slotCheckBoxExpireClicked();
void slotPasswordReturnPressed();
void slotUserShareWidgetClicked(QTreeWidgetItem *item, int column);
void slotUpdateUserShare(const QString &);
private:
Ui::ShareDialog *_ui;
QString _path;

View file

@ -35,16 +35,25 @@
</property>
</widget>
</item>
<item row="1" column="1">
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_shareGroup"/>
</item>
<item row="1" column="0">
<item row="2" column="0">
<widget class="QLabel" name="groupLabel">
<property name="text">
<string>Group</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QTreeWidget" name="treeWidget_shareUser">
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</item>