116 lines
3.0 KiB
C++
Executable File
116 lines
3.0 KiB
C++
Executable File
#include "dev_permissions_dialog.h"
|
|
#include "ui_dev_permissions_dialog.h"
|
|
|
|
#include <LtsSession/lts_session.h>
|
|
|
|
#include <QHBoxLayout>
|
|
#include <QPushButton>
|
|
#include <QLabel>
|
|
#include <QTimer>
|
|
|
|
|
|
namespace DeveloperTools
|
|
{
|
|
|
|
PermissionsDialog::PermissionsDialog()
|
|
: LtsWidgets::LtsDialog()
|
|
, m_ui(new Ui::PermissionsDialog())
|
|
, m_session(nullptr)
|
|
{
|
|
m_ui->setupUi(this);
|
|
|
|
connect(m_ui->pushButton, &QPushButton::clicked,
|
|
this, &PermissionsDialog::setThings);
|
|
}
|
|
|
|
|
|
PermissionsDialog::~PermissionsDialog()
|
|
{
|
|
delete m_ui;
|
|
}
|
|
|
|
|
|
bool PermissionsDialog::init(LtsSession::LtsSession *session)
|
|
{
|
|
m_session = session;
|
|
|
|
setThings();
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
void PermissionsDialog::setThings()
|
|
{
|
|
const QVector<LtsWidgets::PluginData> &missingRightActions = m_session->missingRightActions();
|
|
|
|
for (auto i = missingRightActions.constBegin(); i != missingRightActions.constEnd(); ++i)
|
|
{
|
|
QWidget *container = new QWidget();
|
|
QHBoxLayout *l = new QHBoxLayout();
|
|
container->setLayout(l);
|
|
|
|
const LtsWidgets::PluginData &pd = *i;
|
|
QLabel *text = new QLabel(QStringLiteral("Menu: %1 - Text: %2 - Ident: %3").arg(pd.menuGroup, pd.menuText, pd.identifier));
|
|
QPushButton *execute = new QPushButton(QStringLiteral("execute"));
|
|
connect(execute, &QPushButton::clicked,
|
|
this, [this, pd]()
|
|
{
|
|
if (pd.createWidgetFunc)
|
|
{
|
|
LtsDialog *w = pd.createWidgetFunc(this);
|
|
|
|
if (w)
|
|
m_session->addWidget(w, pd.menuGroup, pd.identifier, pd.layoutArea, pd.closable);
|
|
}
|
|
|
|
if (pd.directFunc)
|
|
{
|
|
pd.directFunc(pd);
|
|
}
|
|
});
|
|
|
|
QPushButton *allow = new QPushButton(QStringLiteral("allow"));
|
|
|
|
if (pd.createInstant == LtsWidgets::CreateInstantType::CreateInstantAndDiscardAction)
|
|
{
|
|
allow->setCursor(QCursor(Qt::WhatsThisCursor));
|
|
allow->setToolTip(QStringLiteral("CreateInstantType == CreateInstantAndDiscardAction !"));
|
|
allow->setEnabled(false);
|
|
}
|
|
else
|
|
{
|
|
connect(allow, &QPushButton::clicked,
|
|
this, [this, pd /* cpy */, container]()
|
|
{
|
|
LtsWidgets::PluginData _pd = pd; // copy
|
|
_pd.operatorRight = 0; // temporary allow adding this nasty action
|
|
m_session->addAction(_pd);
|
|
container->deleteLater(); // allowed, now delete container
|
|
|
|
// remove action from missing right list (session)
|
|
QVector<LtsWidgets::PluginData> &missingRightActions = m_session->missingRightActions();
|
|
for (int i = 0; i < missingRightActions.count(); i++)
|
|
{
|
|
LtsWidgets::PluginData &__pd = missingRightActions[i];
|
|
if (__pd.identifier == _pd.identifier &&
|
|
__pd.menuGroup == _pd.menuGroup &&
|
|
__pd.menuText == _pd.menuText)
|
|
{
|
|
missingRightActions.remove(i);
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
l->addWidget(text, 1);
|
|
l->addWidget(execute);
|
|
l->addWidget(allow);
|
|
|
|
m_ui->verticalLayout->addWidget(container);
|
|
}
|
|
}
|
|
|
|
} // namespace DeveloperTools
|