This commit is contained in:
2025-12-05 12:20:47 +03:00
parent 57673d0ee4
commit 05fce073f1
450 changed files with 58 additions and 58 deletions

View File

@@ -0,0 +1,236 @@
#include "editortrainees.h"
#include "viewertrainees.h"
#include "personalcardtrainee.h"
#include "dialogcardtrainee.h"
#include "ui_viewertrainees.h"
ViewerTrainees::ViewerTrainees(ConnectorToServer* connectorToServer, MessangerController* messangerController, QWidget *parent) :
TraineesView(connectorToServer, CommonView::TypeView::onlyView, parent),
ammTasksWidgetCommon(nullptr),
fimTasksWidgetCommon(nullptr),
messangerController(messangerController),
dlgRedactor(nullptr),
dlgCardTrainee(nullptr),
ui(new Ui::ViewerTrainees)
{
ui->setupUi(this);
connect(treeWidget, &QTreeWidget::itemDoubleClicked, this, &ViewerTrainees::on_itemDoubleClicked);
connect(treeWidget, &QTreeWidget::itemClicked, this, &ViewerTrainees::on_treeWidgetItemClicked);
ui->horizontalLayout_1->addWidget(treeWidget);
ammTasksWidgetCommon = new AMMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listCommon, /*this*/nullptr);
fimTasksWidgetCommon = new FIMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listCommon, /*this*/nullptr);
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, fimTasksWidgetCommon, &FIMtasksWidget::slot_NeedUpdateUI);
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMM, ammTasksWidgetCommon, &AMMtasksWidget::slot_NeedUpdateUI);
connect(this, &ViewerTrainees::signal_traineeSelected, fimTasksWidgetCommon, &FIMtasksWidget::slot_traineeSelected);
connect(this, &ViewerTrainees::signal_traineeSelected, ammTasksWidgetCommon, &AMMtasksWidget::slot_traineeSelected);
preparationTreeWidget();
setNotLoggedInVisible(true);
ui->btnEditorTrainees->setVisible(false);
}
ViewerTrainees::~ViewerTrainees()
{
if(ammTasksWidgetCommon)
{
delete ammTasksWidgetCommon;
ammTasksWidgetCommon = nullptr;
}
if(fimTasksWidgetCommon)
{
delete fimTasksWidgetCommon;
fimTasksWidgetCommon = nullptr;
}
if(dlgRedactor)
{
dlgRedactor->close();
delete dlgRedactor;
dlgRedactor = nullptr;
}
if(dlgCardTrainee)
dlgCardTrainee->close();
delete ui;
}
void ViewerTrainees::setAuthComplited(bool authComplited)
{
this->authComplited = authComplited;
updateButtons();
}
void ViewerTrainees::deactivate()
{
if(dlgRedactor)
{
dlgRedactor->close();
delete dlgRedactor;
dlgRedactor = nullptr;
}
if(dlgCardTrainee)
dlgCardTrainee->close();
CommonView::deactivate();
ammTasksWidgetCommon->deactivate();
fimTasksWidgetCommon->deactivate();
updateButtons();
}
void ViewerTrainees::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения
if (event->type() == QEvent::LanguageChange)
{// переведём окно заново
ui->retranslateUi(this);
reSetHeadTreeWidget();
slot_NeedUpdateUI(false, true);
}
}
void ViewerTrainees::slot_receiveMessage(ClientMessage clientMessage)
{
int id_trainee = clientMessage.fromId.toInt();
mtxmapNewMsg.lock();
mapNewMsg.insert(id_trainee, true);
mtxmapNewMsg.unlock();
slot_NeedUpdateUI(false, true);
}
void ViewerTrainees::on_btnEditorTrainees_clicked()
{
connectorToServer->sendQueryBlockAuth(true);
dlgRedactor = new DialogRedactorTrainees(connectorToServer, adminMode, this);
dlgRedactor->exec();
if(dlgRedactor)
{
delete dlgRedactor;
dlgRedactor = nullptr;
}
if(authComplited)
loadTraineesFromDB();
connectorToServer->sendQueryBlockAuth(false);
}
void ViewerTrainees::on_btnPersonalCard_clicked()
{
if(lastCurrentID && typeObject == TypeObject::objTrainee)
{
dlgCardTrainee = new DialogCardTrainee(connectorToServer, messangerController, lastCurrentID, ammTasksWidgetCommon, fimTasksWidgetCommon, this);
dlgCardTrainee->exec();
ammTasksWidgetCommon->setParent(this);
fimTasksWidgetCommon->setParent(this);
if(dlgCardTrainee)
{
delete dlgCardTrainee;
dlgCardTrainee = nullptr;
}
}
}
void ViewerTrainees::on_itemDoubleClicked(QTreeWidgetItem *item, int column)
{
if(item == nullptr)
return;
if(item->childCount() == 0)
{//Выбран обучаемый
QString login = item->text(ColumnsTreeUsers::clmn_Login);
if(login != "")
{
int id_trainee = connectorToServer->getIdTraineeByLogin(login);
dlgCardTrainee = new DialogCardTrainee(connectorToServer, messangerController, id_trainee, ammTasksWidgetCommon, fimTasksWidgetCommon, this);
dlgCardTrainee->exec();
ammTasksWidgetCommon->setParent(this);
fimTasksWidgetCommon->setParent(this);
if(dlgCardTrainee)
{
delete dlgCardTrainee;
dlgCardTrainee = nullptr;
}
}
}
}
void ViewerTrainees::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
{
if(item == nullptr)
return;
if(item->childCount() == 0)
{//Выбран обучаемый
typeObject = TypeObject::objTrainee;
QString login = item->text(ColumnsTreeUsers::clmn_Login);
//if(login != "")
{
int newCurrentID = connectorToServer->getIdTraineeByLogin(login);
//if(newCurrentID == lastCurrentID)
//return;
lastCurrentID = newCurrentID;
mtxmapNewMsg.lock();
if(mapNewMsg.contains(newCurrentID))
{//Есть непрочитанные сообщения от него
if(mapNewMsg.value(newCurrentID))
{
for (int i = 0; i < ColumnsTreeUsers::clmn_count; i++)
{
item->setBackground(i, QBrush(Qt::GlobalColor::white));
}
mapNewMsg.take(newCurrentID);
}
}
mtxmapNewMsg.unlock();
Q_EMIT signal_traineeSelected(newCurrentID);
}
}
else
{//Выбрана группа
typeObject = TypeObject::objGroup;
int id_group = item->text(ColumnsTreeUsers::clmn_ID).toInt();
lastCurrentID = id_group;
typeObject = TypeObject::objGroup;
QString login = "";
Q_EMIT signal_traineeSelected(0);
}
}
void ViewerTrainees::updateButtons()
{
if(authComplited)
{
ui->btnEditorTrainees->setEnabled(true);
}
else
{
ui->btnEditorTrainees->setEnabled(false);
}
}