mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-25 05:45:42 +03:00
Sharedialog: Allow modifications of permission for users
This commit is contained in:
parent
9b7e6cc5c1
commit
017b54f9a8
3 changed files with 95 additions and 2 deletions
|
@ -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),
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue