mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Переделано под один мега-проект LMS с общим CMakeLists.txt
This commit is contained in:
377
InstructorsAndTrainees/instructorsandtraineeswidget.cpp
Normal file
377
InstructorsAndTrainees/instructorsandtraineeswidget.cpp
Normal file
@@ -0,0 +1,377 @@
|
||||
#include <QMessageBox>
|
||||
#include "instructorsandtraineeswidget.h"
|
||||
#include "ui_instructorsandtraineeswidget.h"
|
||||
#include "dialogauthorizationinstructor.h"
|
||||
#include "doctaskswidget.h"
|
||||
|
||||
InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::InstructorsAndTraineesWidget),
|
||||
connectorToServer(nullptr),
|
||||
viewerTrainees(nullptr),
|
||||
viewerInstructors(nullptr),
|
||||
messangerWidget(nullptr),
|
||||
docTasksWidget(nullptr),
|
||||
fIMtasksWidget(nullptr),
|
||||
adminMode(false),
|
||||
loginInstructorLoggedInLocal(QStringLiteral("")),
|
||||
nameInstructorLoggedInLocal(QStringLiteral(""))
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
ui->btnUpdateStyleSheet->setObjectName("btnUpdateStyleSheet");
|
||||
|
||||
qRegisterMetaType<PacketType>("PacketType");
|
||||
qRegisterMetaType<QList<Instructor>>("QList<Instructor>");
|
||||
qRegisterMetaType<QList<Trainee>>("QList<Trainee>");
|
||||
qRegisterMetaType<QList<Group>>("QList<Group>");
|
||||
qRegisterMetaType<QList<Computer>>("QList<Computer>");
|
||||
qRegisterMetaType<QList<Classroom>>("QList<Classroom>");
|
||||
qRegisterMetaType<QList<Task>>("QList<Task>");
|
||||
|
||||
connectorToServer = new ConnectorToServer(this);
|
||||
connect(connectorToServer,&ConnectorToServer::sigLoginResult,this,&InstructorsAndTraineesWidget::checkLoginResult);
|
||||
connect(connectorToServer,&ConnectorToServer::sigDeLoginResult,this,&InstructorsAndTraineesWidget::checkDeLoginResult);
|
||||
|
||||
viewerTrainees = new ViewerTrainees(connectorToServer, this);
|
||||
viewerInstructors = new ViewerInstructors(connectorToServer, this);
|
||||
connect(this, &InstructorsAndTraineesWidget::signal_NeedUpdateUI, viewerTrainees, &ViewerTrainees::slot_NeedUpdateUI);
|
||||
connect(this, &InstructorsAndTraineesWidget::signal_NeedUpdateUI, viewerInstructors, &ViewerInstructors::slot_NeedUpdateUI);
|
||||
connect(viewerInstructors, &ViewerInstructors::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization);
|
||||
connect(viewerTrainees, &ViewerTrainees::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization);
|
||||
|
||||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
|
||||
|
||||
connect(connectorToServer,&ConnectorToServer::signal_ConnectedToServer,this,&InstructorsAndTraineesWidget::slot_ConnectedToServer);
|
||||
|
||||
|
||||
messangerWidget = new MessangerWidget(this);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
|
||||
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, messangerWidget, &MessangerWidget::slot_traineeSelected);
|
||||
connect(messangerWidget, &MessangerWidget::signal_tabMessengerChanged, viewerTrainees, &ViewerTrainees::slot_tabMessengerChanged);
|
||||
connect(messangerWidget, &MessangerWidget::signal_msgToClientReady, connectorToServer, &ConnectorToServer::slot_msgToClientReady);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_msgFromClientReady,messangerWidget,&MessangerWidget::slot_msgFromClientReady);
|
||||
|
||||
|
||||
docTasksWidget = new DocTasksWidget(this);
|
||||
fIMtasksWidget = new FIMtasksWidget(this);
|
||||
|
||||
ui->horizontalLayout_3->addWidget(viewerTrainees);
|
||||
ui->horizontalLayout_3->addWidget(messangerWidget);
|
||||
|
||||
ui->verticalLayout_1->addWidget(viewerInstructors);
|
||||
ui->verticalLayout_2->addWidget(docTasksWidget);
|
||||
ui->verticalLayout_2->addWidget(fIMtasksWidget);
|
||||
|
||||
viewerTrainees->setMinimumHeight(800);
|
||||
viewerInstructors->setMinimumSize(1800, 300);
|
||||
messangerWidget->setMinimumSize(500, 600);
|
||||
messangerWidget->setMaximumWidth(500);
|
||||
|
||||
//ui->btnAuthorizationInstructor->setEnabled(false);
|
||||
|
||||
updateMyStyleSheet();
|
||||
}
|
||||
|
||||
InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget()
|
||||
{
|
||||
if(authorizationIsCompleted())
|
||||
deAuthorizationInstructor(loginInstructorLoggedInLocal);
|
||||
|
||||
delete docTasksWidget;
|
||||
delete fIMtasksWidget;
|
||||
delete messangerWidget;
|
||||
delete viewerInstructors;
|
||||
delete viewerTrainees;
|
||||
delete connectorToServer;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::changeEvent(QEvent *event)
|
||||
{
|
||||
// В случае получения события изменения языка приложения
|
||||
if (event->type() == QEvent::LanguageChange)
|
||||
{// переведём окно заново
|
||||
ui->retranslateUi(this);
|
||||
|
||||
if(ui->btnAuthorizationInstructor->isChecked())
|
||||
ui->btnAuthorizationInstructor->setText(tr("Deauthorization Instructor"));
|
||||
else
|
||||
ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor"));
|
||||
|
||||
/*
|
||||
if(ui->btnConnectionToDB->isChecked())
|
||||
ui->btnConnectionToDB->setText(tr("Disconnection DB"));
|
||||
else
|
||||
ui->btnConnectionToDB->setText(tr("Connection DB"));
|
||||
*/
|
||||
|
||||
updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, nameInstructorLoggedInLocal);
|
||||
}
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::updateMyStyleSheet()
|
||||
{
|
||||
QString styleSheet = loadStyleSheet();
|
||||
styleSheet = styleSheet.replace("\n", "");
|
||||
|
||||
this->setStyleSheet(styleSheet);
|
||||
}
|
||||
|
||||
QString InstructorsAndTraineesWidget::loadStyleSheet()
|
||||
{
|
||||
//QString fileName = ":/resources/css/styleSheetMain.css";
|
||||
QString fileName = "./resources/css/styleSheetMain.css";
|
||||
QFile styleSheetFile(fileName);
|
||||
if (!styleSheetFile.open(QFile::ReadOnly | QFile::Text))
|
||||
{
|
||||
QMessageBox::critical(this, tr("Attention!"), tr("The file could not be opened ") + fileName);
|
||||
return QStringLiteral("");
|
||||
}
|
||||
else
|
||||
{
|
||||
QByteArray byteArray = styleSheetFile.readAll();
|
||||
styleSheetFile.close();
|
||||
|
||||
QString style = byteArray;
|
||||
return style;
|
||||
}
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::slot_LanguageChanged(QString language)
|
||||
{
|
||||
qtLanguageTranslator.load(QString(QStringLiteral("translations/InstructorsAndTraineesWidget_")) + language, QStringLiteral("."));
|
||||
qApp->installTranslator(&qtLanguageTranslator);
|
||||
|
||||
Q_EMIT signal_LanguageChanged(language);
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverAuth)
|
||||
{
|
||||
if (serverAuth->Result)
|
||||
{
|
||||
loginInstructorLoggedInLocal = serverAuth->Login;
|
||||
nameInstructorLoggedInLocal = serverAuth->ClientName;
|
||||
|
||||
if(loginInstructorLoggedInLocal == QStringLiteral("admin"))
|
||||
adminMode = true;
|
||||
else
|
||||
adminMode = false;
|
||||
|
||||
viewerInstructors->setAdminMode(adminMode);
|
||||
viewerTrainees->setAdminMode(adminMode);
|
||||
viewerInstructors->setAuthComplited(true);
|
||||
viewerTrainees->setAuthComplited(true);
|
||||
|
||||
Q_EMIT signal_NeedUpdateUI(true, true);
|
||||
|
||||
ui->btnAuthorizationInstructor->setText(tr("Deauthorization Instructor"));
|
||||
|
||||
updateLabelLoggedInInstructor(serverAuth->Login, serverAuth->ClientName);
|
||||
|
||||
QMessageBox::information(this, tr("Instructor authorization"), tr("Successfully!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->btnAuthorizationInstructor->setChecked(false);
|
||||
QMessageBox::warning(this, tr("Instructor authorization"), tr("Invalid login or password!"));
|
||||
}
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::checkDeLoginResult(ServerDeAuthorization *serverDeAuth)
|
||||
{
|
||||
if (serverDeAuth->Result)
|
||||
{
|
||||
loginInstructorLoggedInLocal = QStringLiteral("");
|
||||
nameInstructorLoggedInLocal = QStringLiteral("");
|
||||
adminMode = false;
|
||||
|
||||
viewerInstructors->setAdminMode(adminMode);
|
||||
viewerTrainees->setAdminMode(adminMode);
|
||||
viewerInstructors->setAuthComplited(false);
|
||||
viewerTrainees->setAuthComplited(false);
|
||||
|
||||
Q_EMIT signal_NeedUpdateUI(true, false);
|
||||
|
||||
ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor"));
|
||||
|
||||
updateLabelLoggedInInstructor("","");
|
||||
|
||||
QMessageBox::information(this, tr("Instructor deauthorization"), tr("Successfully!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->btnAuthorizationInstructor->setChecked(true);
|
||||
QMessageBox::warning(this, tr("Instructor deauthorization"), tr("Error!"));
|
||||
}
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state)
|
||||
{
|
||||
if(state)
|
||||
{//Сервер подключен
|
||||
|
||||
//ui->btnConnectionToDB->setText(tr("Disconnection DB"));
|
||||
ui->btnConnectionToServer->setEnabled(false);
|
||||
ui->btnAuthorizationInstructor->setEnabled(true);
|
||||
|
||||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png")));
|
||||
}
|
||||
else
|
||||
{//Сервер отключен
|
||||
|
||||
//ui->btnConnectionToDB->setText(tr("Connection DB"));
|
||||
ui->btnConnectionToServer->setEnabled(true);
|
||||
ui->btnAuthorizationInstructor->setEnabled(false);
|
||||
|
||||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png")));
|
||||
}
|
||||
}
|
||||
|
||||
bool InstructorsAndTraineesWidget::authorizationInstructorDialog(QWidget* parent)
|
||||
{
|
||||
DialogAuthorizationInstructor dlg(parent);
|
||||
dlg.setWindowTitle(tr("Instructor authorization"));
|
||||
|
||||
do
|
||||
{
|
||||
switch( dlg.exec() )
|
||||
{
|
||||
case QDialog::Accepted:
|
||||
{
|
||||
QString login = dlg.getLogin();
|
||||
QString password = dlg.getPassword();
|
||||
|
||||
connectorToServer->authorizationInstructorLocal(login, password);
|
||||
|
||||
return true;
|
||||
}
|
||||
case QDialog::Rejected:
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
while(true);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InstructorsAndTraineesWidget::deAuthorizationInstructor(QString login)
|
||||
{
|
||||
connectorToServer->deAuthorizationInstructorLocal(login);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool InstructorsAndTraineesWidget::authorizationIsCompleted()
|
||||
{
|
||||
if(loginInstructorLoggedInLocal == QStringLiteral(""))
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::on_btnConnectionToServer_clicked()
|
||||
{
|
||||
connectorToServer->SetConnectToServer();
|
||||
|
||||
if(true)
|
||||
{//Подключение к БД
|
||||
/*
|
||||
connectorToServer->SetConnectToServer();
|
||||
|
||||
|
||||
if(! dbLMS->DBisConnected())
|
||||
{
|
||||
if(dbLMS->ConnectionToDB())
|
||||
{
|
||||
ui->btnConnectionToDB->setText(tr("Disconnection DB"));
|
||||
ui->btnAuthorizationInstructor->setEnabled(true);
|
||||
|
||||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/icons/circleGreen.png")));
|
||||
|
||||
Q_EMIT signal_NeedUpdateUI(true, true);
|
||||
|
||||
Q_EMIT signal_BlockAutorization(false);
|
||||
|
||||
Q_EMIT signal_InitMessanger(dbLMS->getListTrainees());
|
||||
}
|
||||
}*/
|
||||
}
|
||||
else
|
||||
{//Отключение от БД
|
||||
/*
|
||||
bool stateIsCheckedAuthorization = ui->btnAuthorizationInstructor->isChecked();
|
||||
if(stateIsCheckedAuthorization)
|
||||
ui->btnAuthorizationInstructor->click();
|
||||
|
||||
if(dbLMS->DBisConnected())
|
||||
{
|
||||
Q_EMIT signal_BlockAutorization(true);
|
||||
|
||||
dbLMS->DisConnectionFromDB();
|
||||
|
||||
ui->btnConnectionToDB->setText(tr("Connection DB"));
|
||||
ui->btnAuthorizationInstructor->setEnabled(false);
|
||||
|
||||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/icons/circleGray.png")));
|
||||
|
||||
Q_EMIT signal_NeedUpdateUI(true, true);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked()
|
||||
{
|
||||
bool stateIsChecked = ui->btnAuthorizationInstructor->isChecked();
|
||||
|
||||
if(stateIsChecked)
|
||||
{//Авторизация Инструктора локальная (Администратора)
|
||||
if(authorizationInstructorDialog(this))
|
||||
{
|
||||
}
|
||||
else
|
||||
ui->btnAuthorizationInstructor->setChecked(false);
|
||||
}
|
||||
else
|
||||
{//ДеАвторизация Инструктора локальная (Администратора)
|
||||
if(authorizationIsCompleted())
|
||||
{
|
||||
if(deAuthorizationInstructor(loginInstructorLoggedInLocal))
|
||||
{
|
||||
}
|
||||
else
|
||||
ui->btnAuthorizationInstructor->setChecked(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::updateLabelLoggedInInstructor(QString login, QString name)
|
||||
{
|
||||
if(authorizationIsCompleted())
|
||||
{
|
||||
QString nameLoggedInInstructor = QString("%1 (%2)").arg(name, login);
|
||||
ui->lblLoggedInInstructor->setText(nameLoggedInInstructor);
|
||||
if(loginInstructorLoggedInLocal == QStringLiteral("admin"))
|
||||
ui->lblLoggedIn->setPixmap(QPixmap(QStringLiteral(":/resources/icons/admin.png")));
|
||||
else
|
||||
ui->lblLoggedIn->setPixmap(QPixmap(QStringLiteral(":/resources/icons/instructor.png")));
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->lblLoggedInInstructor->setText(tr("none"));
|
||||
ui->lblLoggedIn->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png")));
|
||||
}
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::on_btnUpdateStyleSheet_clicked()
|
||||
{
|
||||
/*
|
||||
viewerTrainees->updateMyStyleSheet();
|
||||
viewerInstructors->updateMyStyleSheet();
|
||||
messangerWidget->updateMyStyleSheet();
|
||||
*/
|
||||
|
||||
updateMyStyleSheet();
|
||||
}
|
||||
Reference in New Issue
Block a user