mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
280 lines
8.4 KiB
C++
280 lines
8.4 KiB
C++
#include <QMessageBox>
|
||
#include "editortrainees.h"
|
||
#include "ui_editortrainees.h"
|
||
#include "dialogeditgroup.h"
|
||
#include "dialogedittrainee.h"
|
||
|
||
EditorTrainees::EditorTrainees(DataBaseTrainees* db, bool adminMode, QWidget *parent) :
|
||
//QDialog(parent),
|
||
TraineesView(db, CommonView::TypeView::control, parent),
|
||
ui(new Ui::EditorTrainees)
|
||
{
|
||
ui->setupUi((QDialog*)this);
|
||
|
||
preparationTreeWidget(ui->treeWidget);
|
||
setNotLoggedInVisible(true);
|
||
loadTraineesFromDB();
|
||
}
|
||
|
||
EditorTrainees::~EditorTrainees()
|
||
{
|
||
delete ui;
|
||
}
|
||
|
||
void EditorTrainees::on_btnNewGroup_clicked()
|
||
{
|
||
QString nameGroup = dbTrainees->newGroup();
|
||
loadTraineesFromDB();
|
||
setCurrentGroup(nameGroup);
|
||
}
|
||
|
||
void EditorTrainees::on_btnDeleteGroup_clicked()
|
||
{
|
||
QTreeWidgetItem *treeItemCurrent = ui->treeWidget->currentItem();
|
||
|
||
if(treeItemCurrent != nullptr)
|
||
{
|
||
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
|
||
if(treeItemParent == nullptr)
|
||
{//Выбрана группа
|
||
QString name = treeItemCurrent->text(0);
|
||
if(dbTrainees->deleteGroup(name))
|
||
{//Удалено
|
||
loadTraineesFromDB();
|
||
}
|
||
else
|
||
QMessageBox::critical(this, tr("Editing error!"), tr("The group is not empty.\nIt is not possible to delete a non-empty group."));
|
||
}
|
||
}
|
||
}
|
||
|
||
void EditorTrainees::on_btnNewTrainee_clicked()
|
||
{
|
||
QTreeWidgetItem *treeItemCurrent = ui->treeWidget->currentItem();
|
||
|
||
if(treeItemCurrent != nullptr)
|
||
{
|
||
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
|
||
if(treeItemParent == nullptr)
|
||
{//Выбрана группа. Можно добавить Обучаемого
|
||
QString nameGroup = treeItemCurrent->text(0);
|
||
dbTrainees->newTrainee(nameGroup);
|
||
loadTraineesFromDB();
|
||
setCurrentGroup(nameGroup);
|
||
}
|
||
}
|
||
}
|
||
|
||
void EditorTrainees::on_btnDeleteTrainee_clicked()
|
||
{
|
||
QTreeWidgetItem *treeItemCurrent = ui->treeWidget->currentItem();
|
||
|
||
if(treeItemCurrent != nullptr)
|
||
{
|
||
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
|
||
if(treeItemParent != nullptr)
|
||
{//Выбран обучаемый
|
||
|
||
QString name = treeItemCurrent->text(0);
|
||
QString nameGroup = treeItemParent->text(0);
|
||
|
||
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
|
||
{
|
||
dbTrainees->deleteTrainee(name);
|
||
loadTraineesFromDB();
|
||
setCurrentGroup(nameGroup);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void EditorTrainees::on_btnToOrFromArchiveTrainee_clicked()
|
||
{
|
||
QTreeWidgetItem *treeItemCurrent = ui->treeWidget->currentItem();
|
||
|
||
if(treeItemCurrent != nullptr)
|
||
{
|
||
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
|
||
if(treeItemParent != nullptr)
|
||
{//Выбран обучаемый
|
||
|
||
QString name = treeItemCurrent->text(0);
|
||
|
||
if(dbTrainees->isArchived(name))
|
||
{//Архивный
|
||
dbTrainees->fromeArchiveTrainee(name);
|
||
loadTraineesFromDB();
|
||
setCurrentTrainee(name);
|
||
}
|
||
else
|
||
{//Не Архивный
|
||
dbTrainees->toArchiveTrainee(name);
|
||
|
||
if(!archiveVisible)
|
||
ui->btnArchive->click();
|
||
|
||
loadTraineesFromDB();
|
||
setCurrentTrainee(name);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void EditorTrainees::on_btnEdit_clicked()
|
||
{
|
||
QTreeWidgetItem *treeItemCurrent = ui->treeWidget->currentItem();
|
||
|
||
if(treeItemCurrent == nullptr)
|
||
return;
|
||
|
||
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
|
||
if(treeItemParent == nullptr)
|
||
{//Выбрана группа
|
||
|
||
QString nameGroup = treeItemCurrent->text(0);
|
||
|
||
DialogEditGroup dlg(this);
|
||
dlg.setName(nameGroup);
|
||
switch( dlg.exec() )
|
||
{
|
||
case QDialog::Accepted:
|
||
{
|
||
if(dbTrainees->editGroup(nameGroup, dlg.getName()))
|
||
{
|
||
loadTraineesFromDB();
|
||
setCurrentGroup(dlg.getName());
|
||
}
|
||
else
|
||
QMessageBox::critical(this, tr("Editing error!"),
|
||
tr("An existing group name has been entered.\nThe changes will not be accepted."));
|
||
break;
|
||
}
|
||
case QDialog::Rejected:
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{//Выбран обучаемый
|
||
|
||
QString name = treeItemCurrent->text(0);
|
||
|
||
DialogEditTrainee dlg(this);
|
||
dlg.setTrainee(dbTrainees->getTrainee(name));
|
||
|
||
switch( dlg.exec() )
|
||
{
|
||
case QDialog::Accepted:
|
||
{
|
||
if(dbTrainees->editTrainee(name, dlg.getTrainee()))
|
||
{
|
||
loadTraineesFromDB();
|
||
setCurrentTrainee(dlg.getTrainee().getName());
|
||
}
|
||
else
|
||
QMessageBox::critical(this, tr("Editing error!"),
|
||
tr("An existing trainee's name or login has been entered.\nThe changes will not be accepted."));
|
||
break;
|
||
}
|
||
case QDialog::Rejected:
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
void EditorTrainees::on_btnArchive_clicked()
|
||
{
|
||
bool state = ui->btnArchive->isChecked();
|
||
setArchiveVisible(state);
|
||
loadTraineesFromDB();
|
||
}
|
||
|
||
void EditorTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
|
||
{
|
||
//Определяем доступность и функционал кнопок для выбранного элемента
|
||
|
||
if(current == nullptr)
|
||
return;
|
||
|
||
QTreeWidgetItem *treeItemParent = current->parent();
|
||
if(treeItemParent == nullptr)
|
||
{//Выбрана группа
|
||
ui->btnNewGroup->setEnabled(true);
|
||
ui->btnDeleteGroup->setEnabled(true);
|
||
ui->btnNewTrainee->setEnabled(true);
|
||
ui->btnDeleteTrainee->setEnabled(false);
|
||
ui->btnToOrFromArchiveTrainee->setEnabled(false);
|
||
ui->btnEdit->setEnabled(true);
|
||
ui->btnArchive->setEnabled(true);
|
||
|
||
ui->btnToOrFromArchiveTrainee->setText(tr("To archive"));
|
||
ui->btnToOrFromArchiveTrainee->setIcon(QIcon(QStringLiteral(":/icons/traineeArchive.png")));
|
||
}
|
||
else
|
||
{//Выбран обучаемый
|
||
QString name = current->text(0);
|
||
|
||
ui->btnNewGroup->setEnabled(false);
|
||
ui->btnDeleteGroup->setEnabled(false);
|
||
ui->btnNewTrainee->setEnabled(false);
|
||
|
||
if(dbTrainees->isArchived(name))
|
||
{//Архивный
|
||
ui->btnDeleteTrainee->setEnabled(true);
|
||
|
||
ui->btnToOrFromArchiveTrainee->setText(tr("From archive"));
|
||
ui->btnToOrFromArchiveTrainee->setIcon(QIcon(QStringLiteral(":/icons/traineeFromArchive.png")));
|
||
}
|
||
else
|
||
{//Не Архивный
|
||
ui->btnDeleteTrainee->setEnabled(false);
|
||
|
||
ui->btnToOrFromArchiveTrainee->setText(tr("To archive"));
|
||
ui->btnToOrFromArchiveTrainee->setIcon(QIcon(QStringLiteral(":/icons/traineeArchive.png")));
|
||
}
|
||
|
||
ui->btnToOrFromArchiveTrainee->setEnabled(true);
|
||
|
||
ui->btnEdit->setEnabled(true);
|
||
ui->btnArchive->setEnabled(true);
|
||
}
|
||
}
|
||
|
||
void EditorTrainees::setCurrentGroup(QString nameGroup)
|
||
{
|
||
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
|
||
{
|
||
QTreeWidgetItem * item = treeWidget->topLevelItem(i);
|
||
if(item != nullptr)
|
||
if(item->text(0) == nameGroup)
|
||
{
|
||
treeWidget->setCurrentItem(item);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
void EditorTrainees::setCurrentTrainee(QString name)
|
||
{
|
||
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
|
||
{
|
||
QTreeWidgetItem * item = treeWidget->topLevelItem(i);
|
||
if(item != nullptr)
|
||
{
|
||
for (int j = 0; j < item->childCount(); j++)
|
||
{
|
||
QTreeWidgetItem * itemChild = item->child(j);
|
||
if(itemChild != nullptr)
|
||
if(itemChild->text(0) == name)
|
||
{
|
||
treeWidget->setCurrentItem(itemChild);
|
||
break;
|
||
}
|
||
}//for (int j = 0; j < item->childCount(); j++)
|
||
}
|
||
}//for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
|
||
}
|