Support for adding user roles

This commit is contained in:
Zdenek Jonak
2016-01-06 22:33:38 +01:00
parent d2f391558a
commit 5dbebcc947
7 changed files with 81 additions and 6 deletions
+39
View File
@@ -1,6 +1,11 @@
#include "userform.h"
#include "ui_userform.h"
#include <QTableWidgetItem>
#include <QHeaderView>
#include "../data/core-data.h"
#include "../service.h"
UserForm::UserForm(QWidget *parent) :
AutoForm<User>(parent),
ui(new Ui::UserForm)
@@ -17,3 +22,37 @@ UserForm::~UserForm()
{
delete ui;
}
void UserForm::bindOtherToUi()
{
Service<Role> srv;
QList<QSharedPointer<Role> > roles = this->entity()->listRoles();
ui->tableWidget->setRowCount(srv.all().count());
ui->tableWidget->setColumnCount(1);
int i = 0;
foreach(QSharedPointer<Role> r,srv.all())
{
auto it = std::find_if(ALL(roles),[r](QSharedPointer<Role> role){return r->id() == role->id();});
QTableWidgetItem * ti;
ti = new QTableWidgetItem;
ti->setText(r->name());
ti->setCheckState(it == roles.end() ? Qt::Unchecked : Qt::Checked);
ti->setData(Qt::UserRole,r->id());
ui->tableWidget->setItem(i,0,ti);
i++;
}
}
bool UserForm::bindOtherToData()
{
Service<Role> srv;
this->entity()->clearRoles();
for(int i = 0;i < ui->tableWidget->rowCount() ;i++){
if(ui->tableWidget->item(i,0)->checkState()== Qt::Checked)
{
this->entity()->addRole(srv.loadById(ui->tableWidget->item(i,0)->data(Qt::UserRole).toInt()));
}
}
return true;
}
+5
View File
@@ -20,6 +20,11 @@ public:
private:
Ui::UserForm *ui;
// AutoForm interface
protected:
void bindOtherToUi();
bool bindOtherToData();
};
#endif // USERFORM_H
+12 -2
View File
@@ -44,7 +44,7 @@
<item row="2" column="1">
<widget class="QLineEdit" name="name"/>
</item>
<item row="3" column="1">
<item row="4" column="1">
<widget class="QCheckBox" name="isAdmin">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
@@ -54,7 +54,7 @@
</property>
</widget>
</item>
<item row="4" column="1">
<item row="5" column="1">
<widget class="QCheckBox" name="active">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
@@ -64,6 +64,16 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Roles</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>