base viewmodel and interactions
This commit is contained in:
parent
50aa95e659
commit
d69b18f083
14 changed files with 228 additions and 77 deletions
|
|
@ -4,28 +4,35 @@
|
||||||
AdminPanel::AdminPanel(QWidget *parent) : QMainWindow(parent), ui(new Ui::AdminPanel) {
|
AdminPanel::AdminPanel(QWidget *parent) : QMainWindow(parent), ui(new Ui::AdminPanel) {
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
connect(ui->pb_logout, &QPushButton::clicked, this, &AdminPanel::on_logout_requested);
|
uvm = new UsersViewModel(this);
|
||||||
|
|
||||||
connect(ui->pb_vessels_add, &QPushButton::clicked, this, &AdminPanel::on_vessel_add);
|
// connect(ui->pb_logout, &QPushButton::clicked, this, &AdminPanel::on_logout_requested);
|
||||||
connect(ui->pb_vessels_remove, &QPushButton::clicked, this, &AdminPanel::on_vessel_remove);
|
|
||||||
|
|
||||||
connect(ui->pb_users_add, &QPushButton::clicked, this, &AdminPanel::on_user_add);
|
// connect(ui->pb_vessels_add, &QPushButton::clicked, this, &AdminPanel::on_vessel_add);
|
||||||
connect(ui->pb_users_remove, &QPushButton::clicked, this, &AdminPanel::on_user_remove);
|
// connect(ui->pb_vessels_remove, &QPushButton::clicked, this, &AdminPanel::on_vessel_remove);
|
||||||
|
|
||||||
connect(ui->pb_users_add, &QPushButton::clicked, this, &AdminPanel::on_storage_add);
|
// connect(ui->pb_users_add, &QPushButton::clicked, this, &AdminPanel::on_user_add);
|
||||||
connect(ui->pb_users_remove, &QPushButton::clicked, this, &AdminPanel::on_storage_remove);
|
// connect(ui->pb_users_remove, &QPushButton::clicked, this, &AdminPanel::on_user_remove);
|
||||||
|
|
||||||
connect(ui->pb_dp_add, &QPushButton::clicked, this, &AdminPanel::on_delivery_point_add);
|
// connect(ui->pb_users_add, &QPushButton::clicked, this, &AdminPanel::on_storage_add);
|
||||||
connect(ui->pb_dp_remove, &QPushButton::clicked, this, &AdminPanel::on_delivery_point_remove);
|
// connect(ui->pb_users_remove, &QPushButton::clicked, this, &AdminPanel::on_storage_remove);
|
||||||
|
|
||||||
|
// connect(ui->pb_dp_add, &QPushButton::clicked, this, &AdminPanel::on_delivery_point_add);
|
||||||
|
// connect(ui->pb_dp_remove, &QPushButton::clicked, this, &AdminPanel::on_delivery_point_remove);
|
||||||
|
|
||||||
// ui->tv_vessels->setModel();
|
// ui->tv_vessels->setModel();
|
||||||
// ui->tv_users->setModel();
|
ui->tv_users->setModel(uvm);
|
||||||
// ui->tv_dp->setModel();
|
// ui->tv_dp->setModel();
|
||||||
// ui->tv_storages->setModel();
|
// ui->tv_storages->setModel();
|
||||||
|
|
||||||
|
|
||||||
|
uvm->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
AdminPanel::~AdminPanel() {
|
AdminPanel::~AdminPanel() {
|
||||||
delete ui;
|
delete ui;
|
||||||
|
|
||||||
|
delete uvm;
|
||||||
}
|
}
|
||||||
|
|
||||||
AdminPanel& AdminPanel::set_user(const user_entity &user) {
|
AdminPanel& AdminPanel::set_user(const user_entity &user) {
|
||||||
|
|
@ -33,3 +40,39 @@ AdminPanel& AdminPanel::set_user(const user_entity &user) {
|
||||||
ui->lab_user->setText(tr("Hello user %1").arg(user.login()));
|
ui->lab_user->setText(tr("Hello user %1").arg(user.login()));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AdminPanel::on_logout_requested() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void AdminPanel::on_vessel_add() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void AdminPanel::on_vessel_remove() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void AdminPanel::on_user_add() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void AdminPanel::on_user_remove() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void AdminPanel::on_storage_add() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void AdminPanel::on_storage_remove() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void AdminPanel::on_delivery_point_add() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void AdminPanel::on_delivery_point_remove() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
|
||||||
|
#include "viewmodels/usersviewmodel.h"
|
||||||
|
|
||||||
#include "entities/user_entity.h"
|
#include "entities/user_entity.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
|
|
@ -15,6 +17,8 @@ class AdminPanel : public QMainWindow
|
||||||
|
|
||||||
user_entity user;
|
user_entity user;
|
||||||
|
|
||||||
|
UsersViewModel *uvm;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit AdminPanel(QWidget *parent = nullptr);
|
explicit AdminPanel(QWidget *parent = nullptr);
|
||||||
~AdminPanel();
|
~AdminPanel();
|
||||||
|
|
@ -22,6 +26,10 @@ public:
|
||||||
AdminPanel& set_user(const user_entity &user);
|
AdminPanel& set_user(const user_entity &user);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::AdminPanel *ui;
|
||||||
|
|
||||||
void on_logout_requested();
|
void on_logout_requested();
|
||||||
|
|
||||||
void on_vessel_add();
|
void on_vessel_add();
|
||||||
|
|
@ -35,9 +43,6 @@ private slots:
|
||||||
|
|
||||||
void on_delivery_point_add();
|
void on_delivery_point_add();
|
||||||
void on_delivery_point_remove();
|
void on_delivery_point_remove();
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AdminPanel *ui;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ADMINPANEL_H
|
#endif // ADMINPANEL_H
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,8 @@
|
||||||
#include "ui_authwindow.h"
|
#include "ui_authwindow.h"
|
||||||
|
|
||||||
|
|
||||||
AuthWindow::AuthWindow(QWidget *parent, bool fr) : QMainWindow(parent), ui(new Ui::AuthWindow) {
|
AuthWindow::AuthWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::AuthWindow) {
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->firstRun = fr;
|
|
||||||
|
|
||||||
connect(ui->btn_login, &QPushButton::clicked, this, &AuthWindow::on_auth_requested);
|
connect(ui->btn_login, &QPushButton::clicked, this, &AuthWindow::on_auth_requested);
|
||||||
}
|
}
|
||||||
|
|
@ -24,37 +23,38 @@ void AuthWindow::on_auth_requested() {
|
||||||
|
|
||||||
bool success = false;
|
bool success = false;
|
||||||
auto a = apparatus::instance()->get_auth_subsystem();
|
auto a = apparatus::instance()->get_auth_subsystem();
|
||||||
if (this->firstRun) {
|
if (apparatus::isFirstRun()) {
|
||||||
success = a.register_user(login, passw, UserRole::ADMINISTRATOR);
|
success = a.register_user(login, passw, UserRole::ADMINISTRATOR);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
QMessageBox::critical(this, "Error", "Cannot register you. Check filesystem permission");
|
QMessageBox::critical(this, "Error", "Cannot register you. Check filesystem permission");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
apparatus::instance()->serialize_data();
|
QMessageBox::information(this, "Info", "You are the first user of system. "
|
||||||
|
"Your account type is administrator");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto user = *a.get_user(login, success);
|
auto user = a.get_user(login, success);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
QMessageBox::critical(this, "Error", "User not found");
|
QMessageBox::critical(this, "Error", "User not found");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
success = user.verify_password(passw);
|
success = user->verify_password(passw);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
QMessageBox::critical(this, "Error", "Wrong password");
|
QMessageBox::critical(this, "Error", "Wrong password");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (user.role() == UserRole::ADMINISTRATOR) {
|
if (user->role() == UserRole::ADMINISTRATOR) {
|
||||||
AdminPanel(nullptr).set_user(user).show();
|
AdminPanel(nullptr).set_user(*user).showNormal();
|
||||||
}
|
}
|
||||||
else if (user.role() == UserRole::DISPATCHER) {
|
else if (user->role() == UserRole::DISPATCHER) {
|
||||||
// DispatcherPanel(nullptr, user).set_user(user).show();
|
// DispatcherPanel(nullptr, user).set_user(user).show();
|
||||||
}
|
}
|
||||||
else if (user.role() == UserRole::SKIPPER) {
|
else if (user->role() == UserRole::SKIPPER) {
|
||||||
// SkipperPanel(nullptr, user).set_user(user).show();
|
// SkipperPanel(nullptr, user).set_user(user).show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -62,5 +62,4 @@ void AuthWindow::on_auth_requested() {
|
||||||
"It may mean corruption of data.");
|
"It may mean corruption of data.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
close();
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef AUTHWINDOW_H
|
#ifndef AUTHWINDOW_H
|
||||||
#define AUTHWINDOW_H
|
#define AUTHWINDOW_H
|
||||||
|
|
||||||
#include <system/apparatus.h>
|
#include "system/apparatus.h"
|
||||||
|
|
||||||
#include "adminpanel.h"
|
#include "adminpanel.h"
|
||||||
|
|
||||||
|
|
@ -12,21 +12,17 @@ namespace Ui {
|
||||||
class AuthWindow;
|
class AuthWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
class AuthWindow : public QMainWindow
|
class AuthWindow : public QMainWindow {
|
||||||
{
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
bool firstRun;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit AuthWindow(QWidget *parent = nullptr, bool fr = false);
|
explicit AuthWindow(QWidget *parent = nullptr);
|
||||||
~AuthWindow();
|
~AuthWindow();
|
||||||
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void on_auth_requested();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::AuthWindow *ui;
|
Ui::AuthWindow *ui;
|
||||||
|
|
||||||
|
void on_auth_requested();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // AUTHWINDOW_H
|
#endif // AUTHWINDOW_H
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,16 @@
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
|
|
||||||
bool fr = apparatus::isFirstRun();
|
|
||||||
|
|
||||||
apparatus::init();
|
apparatus::init();
|
||||||
AuthWindow w(nullptr, fr);
|
|
||||||
w.show();
|
|
||||||
int ecode = a.exec();
|
|
||||||
apparatus::shutdown();
|
|
||||||
|
|
||||||
return ecode;
|
AuthWindow w(nullptr);
|
||||||
|
w.show();
|
||||||
|
|
||||||
|
QObject::connect(&a, &QApplication::aboutToQuit, []() {
|
||||||
|
apparatus::shutdown();
|
||||||
|
if (apparatus::isFirstRun()) {
|
||||||
|
apparatus::generate_lock_file();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return a.exec();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,8 @@ SOURCES += \
|
||||||
system/auth_system.cpp \
|
system/auth_system.cpp \
|
||||||
system/object_system.cpp \
|
system/object_system.cpp \
|
||||||
usereditdialog.cpp \
|
usereditdialog.cpp \
|
||||||
vesseleditdialog.cpp
|
vesseleditdialog.cpp \
|
||||||
|
viewmodels/usersviewmodel.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
adminpanel.h \
|
adminpanel.h \
|
||||||
|
|
@ -43,7 +44,8 @@ HEADERS += \
|
||||||
system/auth_system.h \
|
system/auth_system.h \
|
||||||
system/object_system.h \
|
system/object_system.h \
|
||||||
usereditdialog.h \
|
usereditdialog.h \
|
||||||
vesseleditdialog.h
|
vesseleditdialog.h \
|
||||||
|
viewmodels/usersviewmodel.h
|
||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
adminpanel.ui \
|
adminpanel.ui \
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,14 @@ apparatus::apparatus() {
|
||||||
}
|
}
|
||||||
|
|
||||||
apparatus::~apparatus() {
|
apparatus::~apparatus() {
|
||||||
this->shutdown();
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void apparatus::generate_lock_file() {
|
||||||
|
QFile init("lock");
|
||||||
|
init.open(QIODevice::ReadWrite);
|
||||||
|
init.write("lock");
|
||||||
|
init.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
apparatus* apparatus::instance() {
|
apparatus* apparatus::instance() {
|
||||||
|
|
@ -36,38 +43,30 @@ apparatus* apparatus::instance() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool apparatus::isFirstRun() {
|
bool apparatus::isFirstRun() {
|
||||||
return QFile().exists("init");
|
return !QFile().exists("lock");
|
||||||
}
|
}
|
||||||
|
|
||||||
void apparatus::generate_empty_data() {
|
auth_system& apparatus::get_auth_subsystem() {
|
||||||
this->open_stream();
|
|
||||||
this->writeGIDS();
|
|
||||||
this->serialize_data();
|
|
||||||
this->close_stream();
|
|
||||||
}
|
|
||||||
|
|
||||||
const auth_system& apparatus::get_auth_subsystem() {
|
|
||||||
return this->_auth_system;
|
return this->_auth_system;
|
||||||
}
|
}
|
||||||
|
|
||||||
const object_system& apparatus::get_object_subsystem() {
|
object_system& apparatus::get_object_subsystem() {
|
||||||
return this->_object_system;
|
return this->_object_system;
|
||||||
}
|
}
|
||||||
|
|
||||||
void apparatus::init() {
|
void apparatus::init() {
|
||||||
apparatus::_instance = new apparatus();
|
apparatus::_instance = new apparatus();
|
||||||
|
|
||||||
apparatus::instance()->open_stream();
|
apparatus::_instance->open_stream();
|
||||||
apparatus::instance()->loadGIDS();
|
apparatus::_instance->loadGIDS();
|
||||||
apparatus::instance()->deserialize_data();
|
apparatus::_instance->deserialize_data();
|
||||||
apparatus::instance()->close_stream();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void apparatus::shutdown() {
|
void apparatus::shutdown() {
|
||||||
apparatus::instance()->open_stream();
|
apparatus::_instance->writeGIDS();
|
||||||
apparatus::instance()->writeGIDS();
|
apparatus::_instance->serialize_data();
|
||||||
apparatus::instance()->serialize_data();
|
apparatus::_instance->close_stream();
|
||||||
apparatus::instance()->close_stream();
|
delete apparatus::_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
void apparatus::writeGIDS() {
|
void apparatus::writeGIDS() {
|
||||||
|
|
@ -84,12 +83,11 @@ void apparatus::loadGIDS() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void apparatus::serialize_data() {
|
void apparatus::serialize_data() {
|
||||||
this->_auth_system.init(this->stream);
|
this->_auth_system.serialize_data(this->stream);
|
||||||
this->_object_system.init(this->stream);
|
this->_object_system.serialize_data(this->stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
void apparatus::deserialize_data() {
|
void apparatus::deserialize_data() {
|
||||||
QFile("init").open(QIODevice::ReadWrite);
|
this->_auth_system.deserialize_data(this->stream);
|
||||||
this->_auth_system.shutdown(this->stream);
|
this->_object_system.deserialize_data(this->stream);
|
||||||
this->_object_system.shutdown(this->stream);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,14 +35,15 @@ public:
|
||||||
~apparatus();
|
~apparatus();
|
||||||
|
|
||||||
void generate_empty_data();
|
void generate_empty_data();
|
||||||
const auth_system& get_auth_subsystem();
|
auth_system& get_auth_subsystem();
|
||||||
const object_system& get_object_subsystem();
|
object_system& get_object_subsystem();
|
||||||
|
|
||||||
|
|
||||||
void serialize_data();
|
void serialize_data();
|
||||||
void deserialize_data();
|
void deserialize_data();
|
||||||
|
|
||||||
static bool isFirstRun();
|
static bool isFirstRun();
|
||||||
|
static void generate_lock_file();
|
||||||
static apparatus* instance();
|
static apparatus* instance();
|
||||||
static void init();
|
static void init();
|
||||||
static void shutdown();
|
static void shutdown();
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,11 @@ bool auth_system::register_user(const QString &login, const QString &password, U
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void auth_system::init(QDataStream &stream) {
|
const QVector<user_entity> auth_system::users() const {
|
||||||
|
return this->_users;
|
||||||
|
}
|
||||||
|
|
||||||
|
void auth_system::deserialize_data(QDataStream &stream) {
|
||||||
int icnt;
|
int icnt;
|
||||||
stream >> icnt;
|
stream >> icnt;
|
||||||
this->_users.resize(icnt);
|
this->_users.resize(icnt);
|
||||||
|
|
@ -48,7 +52,7 @@ void auth_system::init(QDataStream &stream) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void auth_system::shutdown(QDataStream &stream) {
|
void auth_system::serialize_data(QDataStream &stream) {
|
||||||
stream << this->_users.size();
|
stream << this->_users.size();
|
||||||
for (auto &item : this->_users) {
|
for (auto &item : this->_users) {
|
||||||
item.serialize(stream);
|
item.serialize(stream);
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,10 @@ public:
|
||||||
bool remove_user(const QString &login);
|
bool remove_user(const QString &login);
|
||||||
bool register_user(const QString &login, const QString &password, UserRole role);
|
bool register_user(const QString &login, const QString &password, UserRole role);
|
||||||
|
|
||||||
void init(QDataStream &stream);
|
const QVector<user_entity> users() const;
|
||||||
void shutdown(QDataStream &stream);
|
|
||||||
|
void deserialize_data(QDataStream &stream);
|
||||||
|
void serialize_data(QDataStream &stream);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // AUTH_SYSTEM_H
|
#endif // AUTH_SYSTEM_H
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,15 @@ bool object_system::add_vessel(vessel_entity dpoint) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void object_system::init(QDataStream &stream) {
|
const QVector<dpoint_entity> object_system::dpoints() const {
|
||||||
|
return this->_dpoints;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QVector<vessel_entity> object_system::vessels() const {
|
||||||
|
return this->_vessels;
|
||||||
|
}
|
||||||
|
|
||||||
|
void object_system::deserialize_data(QDataStream &stream) {
|
||||||
int dicnt;
|
int dicnt;
|
||||||
stream >> dicnt;
|
stream >> dicnt;
|
||||||
this->_dpoints.resize(dicnt);
|
this->_dpoints.resize(dicnt);
|
||||||
|
|
@ -93,7 +101,7 @@ void object_system::init(QDataStream &stream) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void object_system::shutdown(QDataStream &stream) {
|
void object_system::serialize_data(QDataStream &stream) {
|
||||||
stream << this->_dpoints.size();
|
stream << this->_dpoints.size();
|
||||||
for (auto &item : this->_dpoints) {
|
for (auto &item : this->_dpoints) {
|
||||||
item.serialize(stream);
|
item.serialize(stream);
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,11 @@ public:
|
||||||
bool add_vessel(vessel_entity dpoint);
|
bool add_vessel(vessel_entity dpoint);
|
||||||
|
|
||||||
|
|
||||||
void init(QDataStream &stream);
|
const QVector<dpoint_entity> dpoints() const;
|
||||||
void shutdown(QDataStream &stream);
|
const QVector<vessel_entity> vessels() const;
|
||||||
|
|
||||||
|
void deserialize_data(QDataStream &stream);
|
||||||
|
void serialize_data(QDataStream &stream);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // OBJECT_SYSTEM_H
|
#endif // OBJECT_SYSTEM_H
|
||||||
|
|
|
||||||
65
sea_transport/viewmodels/usersviewmodel.cpp
Normal file
65
sea_transport/viewmodels/usersviewmodel.cpp
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
#include "usersviewmodel.h"
|
||||||
|
|
||||||
|
UsersViewModel::UsersViewModel(QObject *parent) : QAbstractTableModel(parent) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int UsersViewModel::rowCount(const QModelIndex & /*parent*/) const {
|
||||||
|
return apparatus::instance()->get_object_subsystem().vessels().size();
|
||||||
|
}
|
||||||
|
|
||||||
|
int UsersViewModel::columnCount(const QModelIndex & /*parent*/) const {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant UsersViewModel::headerData(int section, Qt::Orientation orientation, int role) const {
|
||||||
|
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
|
||||||
|
switch (section) {
|
||||||
|
case 0:
|
||||||
|
return QString("UID");
|
||||||
|
case 1:
|
||||||
|
return QString("Login");
|
||||||
|
case 2:
|
||||||
|
return QString("Role");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant UsersViewModel::data(const QModelIndex &index, int role) const {
|
||||||
|
if (role == Qt::DisplayRole) {
|
||||||
|
auto item = apparatus::instance()->get_auth_subsystem().users()[index.row()];
|
||||||
|
int col = index.column();
|
||||||
|
|
||||||
|
switch (col) {
|
||||||
|
case 0:
|
||||||
|
return QString::number(item.id());
|
||||||
|
case 1:
|
||||||
|
return item.login();
|
||||||
|
case 2:
|
||||||
|
QString role = "unknown";
|
||||||
|
|
||||||
|
switch(item.role()) {
|
||||||
|
case UserRole::ADMINISTRATOR:
|
||||||
|
role = "Administrator";
|
||||||
|
break;
|
||||||
|
case UserRole::DISPATCHER:
|
||||||
|
role = "Dispatcher";
|
||||||
|
break;
|
||||||
|
case UserRole::SKIPPER:
|
||||||
|
role = "Skipper";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return role;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "UNKNOWN FIELD";
|
||||||
|
}
|
||||||
|
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UsersViewModel::update() {
|
||||||
|
this->resetInternalData();
|
||||||
|
}
|
||||||
22
sea_transport/viewmodels/usersviewmodel.h
Normal file
22
sea_transport/viewmodels/usersviewmodel.h
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
#ifndef USERSVIEWMODEL_H
|
||||||
|
#define USERSVIEWMODEL_H
|
||||||
|
|
||||||
|
#include "system/apparatus.h"
|
||||||
|
|
||||||
|
#include <QAbstractTableModel>
|
||||||
|
|
||||||
|
class UsersViewModel : public QAbstractTableModel
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
UsersViewModel(QObject *parent = nullptr);
|
||||||
|
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||||
|
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||||
|
QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
|
||||||
|
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void update();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // USERSVIEWMODEL_H
|
||||||
Loading…
Add table
Add a link
Reference in a new issue