diff --git a/core/context.cpp b/core/context.cpp
index 2660622..1a760b4 100644
--- a/core/context.cpp
+++ b/core/context.cpp
@@ -12,6 +12,7 @@
#include "core.h"
#include "coreplugin.h"
#include "users/users.h"
+#include "roles/roles.h"
Context &Context::instance()
{
@@ -40,6 +41,7 @@ void Context::loadPlugins()
IPlugin *corePlugin = new CorePlugin();
m_plugins.append(corePlugin);
m_plugins.append(new Users);
+ m_plugins.append(new Roles);
QDir pluginsDir(qApp->applicationDirPath() + "/../plugins");
diff --git a/core/core.pro b/core/core.pro
index ffedd33..fdea287 100644
--- a/core/core.pro
+++ b/core/core.pro
@@ -28,7 +28,11 @@ SOURCES += \
users/usersui.cpp \
users/tablemodel.cpp \
users/userform.cpp \
- columndialog.cpp
+ columndialog.cpp \
+ roles/rolestablemodel.cpp \
+ roles/roles.cpp \
+ roles/rolesui.cpp \
+ roles/rolesform.cpp
HEADERS += core.h\
core_global.h \
@@ -56,7 +60,11 @@ HEADERS += core.h\
users/usersui.h \
users/tablemodel.h \
users/userform.h \
- columndialog.h
+ columndialog.h \
+ roles/rolestablemodel.h \
+ roles/roles.h \
+ roles/rolesui.h \
+ roles/rolesform.h
unix {
target.path = /usr/lib
@@ -84,7 +92,9 @@ FORMS += \
gridform.ui \
formdialog.ui \
users/userform.ui \
- columndialog.ui
+ columndialog.ui \
+ roles/rolesform.ui
OTHER_FILES += \
- users/metaData.json
+ users/metaData.json \
+ roles/metaData.json
diff --git a/core/rc.qrc b/core/rc.qrc
index 68aa197..3bb3eff 100644
--- a/core/rc.qrc
+++ b/core/rc.qrc
@@ -2,5 +2,6 @@
metaData.json
users/metaData.json
+ roles/metaData.json
diff --git a/core/roles/metaData.json b/core/roles/metaData.json
new file mode 100644
index 0000000..0a3c398
--- /dev/null
+++ b/core/roles/metaData.json
@@ -0,0 +1,16 @@
+{
+ "MetaData" : {
+ "id" : "CORE_ROLES",
+ "name" : {
+ "default" : "Core Roles plugin",
+ "CZ" : "Role"
+ },
+ "description" : {
+ "default" : "",
+ "CZ" : ""
+ },
+ "schemaVersion" : 1,
+ "sql" : [],
+ "dependencies" : []
+ }
+}
diff --git a/core/roles/roles.cpp b/core/roles/roles.cpp
new file mode 100644
index 0000000..7e74a5e
--- /dev/null
+++ b/core/roles/roles.cpp
@@ -0,0 +1,24 @@
+#include "roles.h"
+#include "rolesui.h"
+#include "rolesform.h"
+
+#include
+#include
+
+Roles::Roles()
+{
+ Q_INIT_RESOURCE(rc);
+
+ QFile f (":/roles/metaData.json");
+ f.open(QIODevice::ReadOnly | QIODevice::Text);
+ QJsonDocument d = QJsonDocument::fromJson(f.readAll());
+ init(d.object());
+ f.close();
+}
+
+void Roles::initServiceUi()
+{
+ m_service = new Service();
+ m_ui = new RolesUi();
+ ((RolesUi*)m_ui)->setForm(new RolesForm());
+}
diff --git a/core/roles/roles.h b/core/roles/roles.h
new file mode 100644
index 0000000..6bdb164
--- /dev/null
+++ b/core/roles/roles.h
@@ -0,0 +1,16 @@
+#ifndef ROLES_H
+#define ROLES_H
+
+#include "imetadataplugin.h"
+
+class Roles : public IMetaDataPlugin
+{
+public:
+ Roles();
+
+ // IMetaDataPlugin interface
+protected:
+ void initServiceUi();
+};
+
+#endif // ROLES_H
diff --git a/core/roles/rolesform.cpp b/core/roles/rolesform.cpp
new file mode 100644
index 0000000..7d6cfb7
--- /dev/null
+++ b/core/roles/rolesform.cpp
@@ -0,0 +1,17 @@
+#include "rolesform.h"
+#include "ui_rolesform.h"
+
+RolesForm::RolesForm(QWidget *parent) :
+ AutoForm(parent),
+ ui(new Ui::RolesForm)
+{
+ ui->setupUi(this);
+
+ registerBinding(ui->active);
+ registerBinding(ui->name);
+}
+
+RolesForm::~RolesForm()
+{
+ delete ui;
+}
diff --git a/core/roles/rolesform.h b/core/roles/rolesform.h
new file mode 100644
index 0000000..c8d6811
--- /dev/null
+++ b/core/roles/rolesform.h
@@ -0,0 +1,25 @@
+#ifndef ROLESFORM_H
+#define ROLESFORM_H
+
+#include
+#include "autoform.h"
+#include "data/core-data.h"
+#include "core-odb.hxx"
+
+namespace Ui {
+class RolesForm;
+}
+
+class RolesForm : public AutoForm
+{
+ Q_OBJECT
+
+public:
+ explicit RolesForm(QWidget *parent = 0);
+ ~RolesForm();
+
+private:
+ Ui::RolesForm *ui;
+};
+
+#endif // ROLESFORM_H
diff --git a/core/roles/rolesform.ui b/core/roles/rolesform.ui
new file mode 100644
index 0000000..ea50558
--- /dev/null
+++ b/core/roles/rolesform.ui
@@ -0,0 +1,38 @@
+
+
+ RolesForm
+
+
+
+ 0
+ 0
+ 542
+ 388
+
+
+
+ Form
+
+
+ -
+
+
+ Name
+
+
+
+ -
+
+
+ -
+
+
+ Active
+
+
+
+
+
+
+
+
diff --git a/core/roles/rolestablemodel.cpp b/core/roles/rolestablemodel.cpp
new file mode 100644
index 0000000..1280e96
--- /dev/null
+++ b/core/roles/rolestablemodel.cpp
@@ -0,0 +1,6 @@
+#include "rolestablemodel.h"
+
+RolesTableModel::RolesTableModel(QObject *parent)
+ :AutoTableModel(parent)
+{
+}
diff --git a/core/roles/rolestablemodel.h b/core/roles/rolestablemodel.h
new file mode 100644
index 0000000..c3a20a2
--- /dev/null
+++ b/core/roles/rolestablemodel.h
@@ -0,0 +1,14 @@
+#ifndef ROLESTABLEMODEL_H
+#define ROLESTABLEMODEL_H
+
+#include "autotablemodel.h"
+#include "data/core-data.h"
+
+class RolesTableModel : public AutoTableModel
+{
+ Q_OBJECT
+public:
+ explicit RolesTableModel(QObject *parent = NULL);
+};
+
+#endif // ROLESTABLEMODEL_H
diff --git a/core/roles/rolesui.cpp b/core/roles/rolesui.cpp
new file mode 100644
index 0000000..c278edb
--- /dev/null
+++ b/core/roles/rolesui.cpp
@@ -0,0 +1,12 @@
+#include "rolesui.h"
+#include "rolestablemodel.h"
+
+RolesUi::RolesUi(QWidget *parent)
+ :GridForm(parent)
+{
+ setTableModel(new RolesTableModel());
+}
+
+RolesUi::~RolesUi()
+{
+}
diff --git a/core/roles/rolesui.h b/core/roles/rolesui.h
new file mode 100644
index 0000000..a07d69e
--- /dev/null
+++ b/core/roles/rolesui.h
@@ -0,0 +1,16 @@
+#ifndef ROLESUI_H
+#define ROLESUI_H
+
+#include "gridform.h"
+#include "data/core-data.h"
+#include "core-odb.hxx"
+
+class RolesUi : public GridForm
+{
+ Q_OBJECT
+public:
+ explicit RolesUi(QWidget *parent = NULL);
+ ~RolesUi();
+};
+
+#endif // ROLESUI_H