User edit dialog completed
This commit is contained in:
parent
3adbef8c08
commit
e24554a0a0
11 changed files with 315 additions and 47 deletions
|
|
@ -1,21 +1,36 @@
|
|||
#include "adminpanel.h"
|
||||
#include "ui_adminpanel.h"
|
||||
#include <QStringListModel >
|
||||
|
||||
|
||||
AdminPanel::AdminPanel(QWidget *parent) : QMainWindow(parent), ui(new Ui::AdminPanel) {
|
||||
ui->setupUi(this);
|
||||
|
||||
|
||||
// connect(ui->pb_logout, &QPushButton::clicked, this, &AdminPanel::on_logout_requested);
|
||||
connect(ui->pb_logout, &QPushButton::clicked, this, &AdminPanel::on_logout_requested);
|
||||
|
||||
// connect(ui->pb_vessels_add, &QPushButton::clicked, this, &AdminPanel::on_vessel_add);
|
||||
// connect(ui->pb_vessels_remove, &QPushButton::clicked, this, &AdminPanel::on_vessel_remove);
|
||||
connect(ui->pb_vessels_add, &QPushButton::clicked, this, [this](){
|
||||
this->on_vessel_add_edit(false);
|
||||
});
|
||||
connect(ui->pb_vessels_edit, &QPushButton::clicked, this, [this](){
|
||||
this->on_vessel_add_edit(true);
|
||||
});
|
||||
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_users_remove, &QPushButton::clicked, this, &AdminPanel::on_user_remove);
|
||||
connect(ui->pb_users_add, &QPushButton::clicked, this, [this](){
|
||||
this->on_user_add_edit(false);
|
||||
});
|
||||
connect(ui->pb_users_edit, &QPushButton::clicked, this, [this](){
|
||||
this->on_user_add_edit(true);
|
||||
});
|
||||
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_dp_remove, &QPushButton::clicked, this, &AdminPanel::on_delivery_point_remove);
|
||||
connect(ui->pb_dp_add, &QPushButton::clicked, this, [this](){
|
||||
this->on_delivery_point_add_edit(false);
|
||||
});
|
||||
connect(ui->pb_dp_edit, &QPushButton::clicked, this, [this](){
|
||||
this->on_delivery_point_add_edit(true);
|
||||
});
|
||||
connect(ui->pb_dp_remove, &QPushButton::clicked, this, &AdminPanel::on_delivery_point_remove);
|
||||
|
||||
|
||||
uvm = new UsersViewModel(this);
|
||||
|
|
@ -27,48 +42,175 @@ AdminPanel::AdminPanel(QWidget *parent) : QMainWindow(parent), ui(new Ui::AdminP
|
|||
dpvm = new DeliveryPointsViewModel(this);
|
||||
ui->tv_dp->setModel(dpvm);
|
||||
|
||||
connect(ui->tv_users->selectionModel(), &QItemSelectionModel::selectionChanged, [this](const QItemSelection &selected) {
|
||||
ui->pb_users_remove->setEnabled(selected.length() > 0);
|
||||
ui->pb_users_edit->setEnabled(selected.length() == 1);
|
||||
});
|
||||
|
||||
uvm->update();
|
||||
vvm->update();
|
||||
dpvm->update();
|
||||
connect(ui->tv_vessels->selectionModel(), &QItemSelectionModel::selectionChanged, [this](const QItemSelection &selected) {
|
||||
ui->pb_vessels_remove->setEnabled(selected.length() > 0);
|
||||
ui->pb_vessels_edit->setEnabled(selected.length() == 1);
|
||||
});
|
||||
|
||||
connect(ui->tv_dp->selectionModel(), &QItemSelectionModel::selectionChanged, [this](const QItemSelection &selected) {
|
||||
ui->pb_dp_remove->setEnabled(selected.length() > 0);
|
||||
ui->pb_dp_edit->setEnabled(selected.length() == 1);
|
||||
});
|
||||
|
||||
ui->tw_tabs->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
AdminPanel::~AdminPanel() {
|
||||
delete ui;
|
||||
|
||||
delete uvm;
|
||||
delete vvm;
|
||||
delete dpvm;
|
||||
}
|
||||
|
||||
AdminPanel& AdminPanel::set_user(const user_entity &user) {
|
||||
this->user = user;
|
||||
ui->lab_user->setText(tr("Hello user %1").arg(user.login()));
|
||||
ui->lab_user->setText(tr("Hello, **%1**").arg(user.login()));
|
||||
return *this;
|
||||
}
|
||||
|
||||
void AdminPanel::on_logout_requested() {
|
||||
|
||||
this->close();
|
||||
}
|
||||
|
||||
void AdminPanel::on_vessel_add() {
|
||||
void AdminPanel::on_vessel_add_edit(bool edit) {
|
||||
|
||||
}
|
||||
|
||||
void AdminPanel::on_vessel_remove() {
|
||||
auto selected = ui->tv_vessels->selectionModel()->selectedRows();
|
||||
if (selected.length() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
QMessageBox delConf(this);
|
||||
delConf.setIcon(QMessageBox::Question);
|
||||
delConf.setWindowTitle(tr("Deletion confirmation"));
|
||||
delConf.setText(tr("Are you sure you want to delete these vessels?"));
|
||||
delConf.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||
delConf.setDefaultButton(QMessageBox::No);
|
||||
if (delConf.exec() == QMessageBox::No) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (auto mIdx, selected) {
|
||||
int idx = mIdx.row();
|
||||
qDebug() << idx << ' ' << mIdx.data() << '\n';
|
||||
}
|
||||
|
||||
vvm->update();
|
||||
}
|
||||
|
||||
void AdminPanel::on_user_add() {
|
||||
void AdminPanel::on_user_add_edit(bool edit) {
|
||||
auto selected = ui->tv_users->selectionModel()->selectedRows();
|
||||
if (edit && selected.length() != 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
user_entity usr;
|
||||
if (edit) {
|
||||
int idx = selected[0].row();
|
||||
usr = apparatus::instance()->get_auth_subsystem()->users()[idx];
|
||||
if (usr.id() == this->user.id()) {
|
||||
QMessageBox::critical(this, "Error", "You cannot edit yourself");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
UserEditDialog ued(this);
|
||||
ued.setWindowTitle(edit? "Edit user" : "New user");
|
||||
ued.set_user(&usr, edit);
|
||||
if (ued.exec() != UserEditDialog::Accepted) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto data = ued.user();
|
||||
if (edit) {
|
||||
bool success;
|
||||
auto user = apparatus::instance()->get_auth_subsystem()->get_user(usr.login(), success);
|
||||
if (success) {
|
||||
user->set_password(data->password);
|
||||
user->set_role(data->role);
|
||||
QMessageBox::information(this, "Info", "User edited successfully (note: you cannot change login)");
|
||||
}
|
||||
else {
|
||||
QMessageBox::critical(this, "Error", "Error while editing user");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
bool success = apparatus::instance()->get_auth_subsystem()->register_user(data->login, data->password, data->role);
|
||||
if (success) {
|
||||
QMessageBox::information(this, "Info", "User created successfully");
|
||||
}
|
||||
else {
|
||||
QMessageBox::critical(this, "Error", "Error while creating user");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
uvm->update();
|
||||
}
|
||||
|
||||
void AdminPanel::on_user_remove() {
|
||||
auto selected = ui->tv_users->selectionModel()->selectedRows();
|
||||
if (selected.length() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
QMessageBox delConf(this);
|
||||
delConf.setIcon(QMessageBox::Question);
|
||||
delConf.setWindowTitle(tr("Deletion confirmation"));
|
||||
delConf.setText(tr("Are you sure you want to delete these users?"));
|
||||
delConf.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||
delConf.setDefaultButton(QMessageBox::No);
|
||||
if (delConf.exec() == QMessageBox::No) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto _u = apparatus::instance()->get_auth_subsystem()->users();
|
||||
foreach (auto mIdx, selected) {
|
||||
int idx = mIdx.row();
|
||||
auto ent = _u[idx];
|
||||
if (ent.id() == user.id()) {
|
||||
QMessageBox::critical(this, "Error", "You cannot delete yourself!");
|
||||
break;
|
||||
}
|
||||
apparatus::instance()->get_auth_subsystem()->remove_user(ent.login());
|
||||
}
|
||||
|
||||
uvm->update();
|
||||
}
|
||||
|
||||
void AdminPanel::on_delivery_point_add() {
|
||||
void AdminPanel::on_delivery_point_add_edit(bool edit) {
|
||||
|
||||
}
|
||||
|
||||
void AdminPanel::on_delivery_point_remove() {
|
||||
auto selected = ui->tv_dp->selectionModel()->selectedRows();
|
||||
if (selected.length() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
QMessageBox delConf(this);
|
||||
delConf.setIcon(QMessageBox::Question);
|
||||
delConf.setWindowTitle(tr("Deletion confirmation"));
|
||||
delConf.setText(tr("Are you sure you want to delete these delivery points?"));
|
||||
delConf.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||
delConf.setDefaultButton(QMessageBox::No);
|
||||
if (delConf.exec() == QMessageBox::No) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (auto mIdx, selected) {
|
||||
int idx = mIdx.row();
|
||||
qDebug() << idx << ' ' << mIdx.data() << '\n';
|
||||
}
|
||||
|
||||
dpvm->update();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue