#include "rolesform.h" #include "ui_rolesform.h" #include "../iplugin.h" #include "../permissionservice.h" #include RolesForm::RolesForm(QWidget *parent) : AutoForm(parent), ui(new Ui::RolesForm) { ui->setupUi(this); registerBinding(ui->active); registerBinding(ui->name); } RolesForm::~RolesForm() { delete ui; } void RolesForm::bindOtherToUi() { ui->treePerms->clear(); QList > perms = entity()->listPermissions(); foreach (IPlugin *plugin, Context::instance().plugins()) { if (plugin->pluginId() != "CORE") { QTreeWidgetItem *item = new QTreeWidgetItem(); item->setText(0, plugin->pluginName()); item->setData(0, Qt::UserRole, plugin->pluginId()); foreach (QString perm, Context::instance().defaultPerms()) { QTreeWidgetItem *permItem = new QTreeWidgetItem(); permItem->setText(0, tr(perm.toStdString().c_str())); permItem->setData(0, Qt::UserRole, perm); QList >::iterator it = std::find_if(ALL(perms), [&perm, plugin](QSharedPointer p){ return p->permissionName() == perm && p->pluginId() == plugin->pluginId(); }); permItem->setCheckState(0, it != perms.end() ? Qt::Checked : Qt::Unchecked); item->addChild(permItem); } ui->treePerms->addTopLevelItem(item); } } } bool RolesForm::bindOtherToData() { PermissionService permService; entity()->clearPermissions(); for (int i = 0; i < ui->treePerms->topLevelItemCount(); i++) { QTreeWidgetItem *item = ui->treePerms->topLevelItem(i); for (int j = 0; j < item->childCount(); j++) { QTreeWidgetItem *permItem = item->child(j); if (permItem->checkState(0) == Qt::Checked) { QSharedPointer perm = permService.forNameAndPlugin(permItem->data(0, Qt::UserRole).toString(), item->data(0, Qt::UserRole).toString()); perm->addRole(entity()); entity()->addPermission(perm); } } } return true; }