Hide the edit menu when the user doesn't have enough power
This commit is contained in:
parent
340c9ab9de
commit
791a9d0a4d
5 changed files with 93 additions and 20 deletions
|
|
@ -11,11 +11,13 @@
|
|||
#include <QLabel>
|
||||
#include <QPainter>
|
||||
#include <QPixmap>
|
||||
#include <QSettings>
|
||||
#include <QSharedPointer>
|
||||
#include <QStyleOption>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
using namespace dialogs;
|
||||
using namespace mtx::events;
|
||||
|
||||
EditModal::EditModal(const QString &roomId, QWidget *parent)
|
||||
: QWidget(parent)
|
||||
|
|
@ -86,7 +88,7 @@ EditModal::EditModal(const QString &roomId, QWidget *parent)
|
|||
&StateEventProxy::stateEventSent,
|
||||
this,
|
||||
[this, proxy, newName]() {
|
||||
proxy->deleteLater();
|
||||
Q_UNUSED(proxy);
|
||||
errorField_->hide();
|
||||
emit nameChanged(newName);
|
||||
close();
|
||||
|
|
@ -96,7 +98,7 @@ EditModal::EditModal(const QString &roomId, QWidget *parent)
|
|||
&StateEventProxy::stateEventError,
|
||||
this,
|
||||
[this, proxy, newName](const QString &msg) {
|
||||
proxy->deleteLater();
|
||||
Q_UNUSED(proxy);
|
||||
errorField_->setText(msg);
|
||||
errorField_->show();
|
||||
});
|
||||
|
|
@ -113,7 +115,7 @@ EditModal::EditModal(const QString &roomId, QWidget *parent)
|
|||
&StateEventProxy::stateEventSent,
|
||||
this,
|
||||
[this, proxy, newTopic]() {
|
||||
proxy->deleteLater();
|
||||
Q_UNUSED(proxy);
|
||||
errorField_->hide();
|
||||
close();
|
||||
});
|
||||
|
|
@ -122,7 +124,7 @@ EditModal::EditModal(const QString &roomId, QWidget *parent)
|
|||
&StateEventProxy::stateEventError,
|
||||
this,
|
||||
[this, proxy, newTopic](const QString &msg) {
|
||||
proxy->deleteLater();
|
||||
Q_UNUSED(proxy);
|
||||
errorField_->setText(msg);
|
||||
errorField_->show();
|
||||
});
|
||||
|
|
@ -242,9 +244,43 @@ RoomSettings::RoomSettings(const QString &room_id, QWidget *parent)
|
|||
auto menuLabel = new QLabel("Room Settings", this);
|
||||
menuLabel->setFont(font);
|
||||
|
||||
topSection_ = new TopSection(info_, avatarImg_, this);
|
||||
|
||||
editLayout_ = new QHBoxLayout;
|
||||
editLayout_->setMargin(0);
|
||||
editLayout_->addWidget(topSection_);
|
||||
|
||||
setupEditButton();
|
||||
|
||||
layout->addWidget(menuLabel);
|
||||
layout->addLayout(editLayout_);
|
||||
layout->addLayout(notifOptionLayout_);
|
||||
layout->addLayout(accessOptionLayout);
|
||||
layout->addLayout(btnLayout);
|
||||
|
||||
connect(cancelBtn_, &QPushButton::clicked, this, &RoomSettings::closing);
|
||||
connect(saveBtn_, &QPushButton::clicked, this, &RoomSettings::saveSettings);
|
||||
}
|
||||
|
||||
void
|
||||
RoomSettings::setupEditButton()
|
||||
{
|
||||
try {
|
||||
QSettings settings;
|
||||
auto userId = settings.value("auth/user_id").toString().toStdString();
|
||||
|
||||
hasEditRights_ = cache::client()->hasEnoughPowerLevel(
|
||||
{EventType::RoomName, EventType::RoomTopic}, room_id_.toStdString(), userId);
|
||||
} catch (const lmdb::error &e) {
|
||||
qWarning() << "lmdb error" << e.what();
|
||||
}
|
||||
|
||||
constexpr int buttonSize = 36;
|
||||
constexpr int iconSize = buttonSize / 2;
|
||||
|
||||
if (!hasEditRights_)
|
||||
return;
|
||||
|
||||
QIcon editIcon;
|
||||
editIcon.addFile(":/icons/icons/ui/edit.svg");
|
||||
editFieldsBtn_ = new FlatButton(this);
|
||||
|
|
@ -264,21 +300,7 @@ RoomSettings::RoomSettings(const QString &room_id, QWidget *parent)
|
|||
});
|
||||
});
|
||||
|
||||
topSection_ = new TopSection(info_, avatarImg_, this);
|
||||
|
||||
auto editLayout = new QHBoxLayout;
|
||||
editLayout->setMargin(0);
|
||||
editLayout->addWidget(topSection_);
|
||||
editLayout->addWidget(editFieldsBtn_, 0, Qt::AlignRight | Qt::AlignTop);
|
||||
|
||||
layout->addWidget(menuLabel);
|
||||
layout->addLayout(editLayout);
|
||||
layout->addLayout(notifOptionLayout_);
|
||||
layout->addLayout(accessOptionLayout);
|
||||
layout->addLayout(btnLayout);
|
||||
|
||||
connect(cancelBtn_, &QPushButton::clicked, this, &RoomSettings::closing);
|
||||
connect(saveBtn_, &QPushButton::clicked, this, &RoomSettings::saveSettings);
|
||||
editLayout_->addWidget(editFieldsBtn_, 0, Qt::AlignRight | Qt::AlignTop);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue