mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
822 lines
26 KiB
C++
822 lines
26 KiB
C++
#include <QMessageBox>
|
||
#include <QThread>
|
||
#include <QTimer>
|
||
#include "instructorsandtraineeswidget.h"
|
||
#include "ui_instructorsandtraineeswidget.h"
|
||
#include "dialogauthorization.h"
|
||
#include "dialogsettings.h"
|
||
#include "specialmessagebox.h"
|
||
#include "hashtools.h"
|
||
#include "widgettools.h"
|
||
|
||
|
||
const QString InstructorsAndTraineesWidget::languageENG = "en_EN";
|
||
const QString InstructorsAndTraineesWidget::languageRUS = "ru_RU";
|
||
|
||
|
||
InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
||
QWidget(parent),
|
||
connectorToServer(nullptr),
|
||
viewerTrainees(nullptr),
|
||
viewerInstructors(nullptr),
|
||
messangerWidget(nullptr),
|
||
messangerController(nullptr),
|
||
dlgTasksCommon(nullptr),
|
||
dlgSettings(nullptr),
|
||
dlgAuthorization(nullptr),
|
||
waitAnimationWidget(nullptr),
|
||
flSettingsServerIsChanged(false),
|
||
flTryConnectToServer(false),
|
||
cntTryConnectToServer(0),
|
||
flTryLogin(false),
|
||
flTryReceiveFIM(false),
|
||
flTryReceiveAMM(false),
|
||
language(languageENG),
|
||
versionStr("..."),
|
||
ui(new Ui::InstructorsAndTraineesWidget)
|
||
{
|
||
ui->setupUi(this);
|
||
|
||
//Пока не нужно
|
||
ui->btnTasksCommon->setVisible(false);
|
||
|
||
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();
|
||
|
||
ui->widget_Control->setObjectName("widgetControl");
|
||
|
||
registerMetaType();
|
||
|
||
updateMyStyleSheet();
|
||
|
||
setLanguageInterfase();
|
||
|
||
connectorToServer = new ConnectorToServer();
|
||
connect(connectorToServer, &ConnectorToServer::sigLoginResult, this, &InstructorsAndTraineesWidget::slot_checkLoginResult);
|
||
connect(connectorToServer, &ConnectorToServer::sigDeLoginResult, this, &InstructorsAndTraineesWidget::slot_checkDeLoginResult);
|
||
|
||
connect(connectorToServer, &ConnectorToServer::sigServerBlocked, this, &InstructorsAndTraineesWidget::slot_ServerBlocked);
|
||
connect(connectorToServer, &ConnectorToServer::sigErrorAuth, this, &InstructorsAndTraineesWidget::slot_ErrorAuth);
|
||
connect(connectorToServer, &ConnectorToServer::signal_SetVersion, this, &InstructorsAndTraineesWidget::slot_SetVersion);
|
||
connect(connectorToServer, &ConnectorToServer::signal_AnswerDocsChanged,this, &InstructorsAndTraineesWidget::slot_AnswerDocsChanged);
|
||
connect(connectorToServer, &ConnectorToServer::signal_ServerBlockState, this, &InstructorsAndTraineesWidget::slot_ServerBlockState);
|
||
|
||
|
||
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, this, &InstructorsAndTraineesWidget::slot_UpdateTasksFIM);
|
||
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMM, this, &InstructorsAndTraineesWidget::slot_UpdateTasksAMM);
|
||
|
||
messangerController = new MessangerController(connectorToServer, this);
|
||
|
||
viewerTrainees = new ViewerTrainees(connectorToServer, messangerController, 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(connectorToServer, &ConnectorToServer::signal_ConnectedToServer, this, &InstructorsAndTraineesWidget::slot_ConnectedToServer);
|
||
|
||
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, this, &InstructorsAndTraineesWidget::slot_traineeSelected);
|
||
connect(viewerTrainees, &ViewerTrainees::signal_needShowWait, this, &InstructorsAndTraineesWidget::slot_needShowWait);
|
||
connect(viewerInstructors, &ViewerInstructors::signal_instructorSelected, this, &InstructorsAndTraineesWidget::slot_instructorSelected);
|
||
connect(viewerInstructors, &ViewerInstructors::signal_needShowWait, this, &InstructorsAndTraineesWidget::slot_needShowWait);
|
||
|
||
connect(messangerController, &MessangerController::signal_receiveMessage_fromInstructor, viewerInstructors, &ViewerInstructors::slot_receiveMessage);
|
||
connect(messangerController, &MessangerController::signal_receiveMessage_fromTrainee, viewerTrainees, &ViewerTrainees::slot_receiveMessage);
|
||
|
||
viewerTrainees->clearSelection();
|
||
viewerInstructors->clearSelection();
|
||
|
||
//Размещение
|
||
ui->verticalLayout_Trainees->addWidget(viewerTrainees);
|
||
ui->verticalLayout_Instructors->addWidget(viewerInstructors);
|
||
|
||
ui->groupBox_Messenger->setMinimumHeight(600);
|
||
|
||
ui->groupBox_Messenger->setMaximumWidth(500);
|
||
ui->groupBox_Messenger->setMinimumWidth(500);
|
||
|
||
ui->groupBox_Instructors->setMinimumHeight(200);
|
||
ui->groupBox_Instructors->setMaximumHeight(300);
|
||
|
||
ui->groupBox_Trainees->setMinimumHeight(500);
|
||
|
||
ui->groupBox_Trainees->setMinimumWidth(1000);
|
||
ui->groupBox_Instructors->setMinimumWidth(1000);
|
||
|
||
|
||
//Доступность кнопок
|
||
ui->btnAuthorizationInstructor->setEnabled(false);
|
||
ui->btnEditorTrainees->setEnabled(false);
|
||
ui->btnEditorInstructors->setEnabled(false);
|
||
ui->btnPersonalCard->setEnabled(false);
|
||
|
||
waitAnimationWidget = new WaitAnimationWidget;
|
||
QMovie *movie = new QMovie(":/resources/icons/762.gif");
|
||
waitAnimationWidget->setParent(this);
|
||
waitAnimationWidget->initialize(movie,this);
|
||
|
||
ui->btnConnectionToServer->click();
|
||
}
|
||
|
||
InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget()
|
||
{
|
||
if(authorizationIsCompleted())
|
||
deAuthorizationInstructor(instructorLoggedInLocal.getLogin());
|
||
|
||
if(dlgTasksCommon)
|
||
{
|
||
dlgTasksCommon->close();
|
||
delete dlgTasksCommon;
|
||
dlgTasksCommon = nullptr;
|
||
}
|
||
|
||
if(dlgSettings)
|
||
{
|
||
dlgSettings->close();
|
||
delete dlgSettings;
|
||
dlgSettings = nullptr;
|
||
}
|
||
|
||
if(dlgAuthorization)
|
||
{
|
||
dlgAuthorization->close();
|
||
delete dlgAuthorization;
|
||
dlgAuthorization = nullptr;
|
||
}
|
||
|
||
delete messangerController;
|
||
delete viewerInstructors;
|
||
delete viewerTrainees;
|
||
delete connectorToServer;
|
||
|
||
waitAnimationWidget->hideWithStop();
|
||
delete waitAnimationWidget;
|
||
|
||
delete ui;
|
||
}
|
||
|
||
QString InstructorsAndTraineesWidget::getLanguage()
|
||
{
|
||
return language;
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::changeEvent(QEvent *event)
|
||
{
|
||
// В случае получения события изменения языка приложения
|
||
if (event->type() == QEvent::LanguageChange)
|
||
{// переведём окно заново
|
||
ui->retranslateUi(this);
|
||
|
||
updateLabelLoggedInInstructor(instructorLoggedInLocal);
|
||
updateLabelServer();
|
||
updateLabelVersion();
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::resizeEvent(QResizeEvent *event)
|
||
{
|
||
QSize size = event->size();
|
||
waitAnimationWidget->resize(size);
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::updateMyStyleSheet()
|
||
{
|
||
QString styleSheet = loadStyleSheet();
|
||
styleSheet = styleSheet.replace("\n", "");
|
||
|
||
this->setStyleSheet(styleSheet);
|
||
}
|
||
|
||
QString InstructorsAndTraineesWidget::loadStyleSheet()
|
||
{
|
||
QString fileName = "./resources/css/styleSheetMain.css";
|
||
QFile styleSheetFile(fileName);
|
||
if (!styleSheetFile.open(QFile::ReadOnly | QFile::Text))
|
||
{
|
||
SpecMsgBox::CriticalClose(this, 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/RRJServer_")) + language, QStringLiteral("."));
|
||
qApp->installTranslator(&qtLanguageTranslator);
|
||
|
||
emit signal_LanguageChanged(language);
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_UpdateStyleSheet()
|
||
{
|
||
updateMyStyleSheet();
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_checkLoginResult(ServerAuthorization *serverAuth)
|
||
{
|
||
if (serverAuth->Result)
|
||
{
|
||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
|
||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
|
||
connect(connectorToServer,&ConnectorToServer::signal_reInitMessangerByUsers,messangerController,&MessangerController::slot_reinitMessangers);
|
||
|
||
instructorLoggedInLocal.setLogin(serverAuth->Login);
|
||
instructorLoggedInLocal.setName(serverAuth->ClientName);
|
||
instructorLoggedInLocal.setID(serverAuth->Id.toInt());
|
||
|
||
if(serverAuth->Login == QStringLiteral("admin"))
|
||
instructorLoggedInLocal.setIsAdmin(true);
|
||
else
|
||
instructorLoggedInLocal.setIsAdmin(false);
|
||
|
||
viewerInstructors->setAdminMode(instructorLoggedInLocal.getIsAdmin());
|
||
viewerTrainees->setAdminMode(instructorLoggedInLocal.getIsAdmin());
|
||
viewerInstructors->setAuthComplited(true);
|
||
viewerTrainees->setAuthComplited(true);
|
||
|
||
ui->btnEditorTrainees->setEnabled(true);
|
||
if(instructorLoggedInLocal.getIsAdmin())
|
||
ui->btnEditorInstructors->setEnabled(true);
|
||
|
||
emit signal_NeedUpdateUI(true, true);
|
||
|
||
updateLabelLoggedInInstructor(instructorLoggedInLocal);
|
||
connectorToServer->setLoginName(instructorLoggedInLocal.getName());
|
||
|
||
messangerController->setUserLocalGUI_ID(serverAuth->Id.toInt());
|
||
|
||
/*
|
||
connectorToServer->sendQueryTasksXML("fim");
|
||
connectorToServer->sendQueryTasksXML("amm");
|
||
*/
|
||
|
||
viewerTrainees->activate();
|
||
viewerInstructors->activate();
|
||
|
||
//waitAnimationWidget->hideWithStop();
|
||
|
||
flTryLogin = false;
|
||
}
|
||
else
|
||
{
|
||
//waitAnimationWidget->hideWithStop();
|
||
//ui->btnAuthorizationInstructor->setChecked(false);
|
||
flTryReceiveFIM = false;
|
||
flTryReceiveAMM = false;
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_checkDeLoginResult(ServerDeAuthorization *serverDeAuth)
|
||
{
|
||
if (serverDeAuth->Result)
|
||
{
|
||
disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
|
||
disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
|
||
disconnect(connectorToServer,&ConnectorToServer::signal_reInitMessangerByUsers,messangerController,&MessangerController::slot_reinitMessangers);
|
||
|
||
instructorLoggedInLocal.setLogin(QStringLiteral(""));
|
||
instructorLoggedInLocal.setName(QStringLiteral(""));
|
||
instructorLoggedInLocal.setIsAdmin(false);
|
||
instructorLoggedInLocal.setID(0);
|
||
|
||
viewerInstructors->setAdminMode(instructorLoggedInLocal.getIsAdmin());
|
||
viewerTrainees->setAdminMode(instructorLoggedInLocal.getIsAdmin());
|
||
viewerInstructors->setAuthComplited(false);
|
||
viewerTrainees->setAuthComplited(false);
|
||
|
||
ui->btnEditorTrainees->setEnabled(false);
|
||
ui->btnEditorInstructors->setEnabled(false);
|
||
ui->btnPersonalCard->setEnabled(false);
|
||
|
||
updateLabelLoggedInInstructor(instructorLoggedInLocal);
|
||
|
||
waitAnimationWidget->hideWithStop();
|
||
}
|
||
else
|
||
{
|
||
ui->btnAuthorizationInstructor->setChecked(true);
|
||
waitAnimationWidget->hideWithStop();
|
||
SpecMsgBox::CriticalClose(this, tr("Instructor deauthorization") + "\n" + tr("Error!"));
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_ServerBlocked()
|
||
{
|
||
if(flTryLogin)
|
||
{
|
||
flTryLogin = false;
|
||
flTryReceiveFIM = false;
|
||
flTryReceiveAMM = false;
|
||
waitAnimationWidget->hideWithStop();
|
||
|
||
ui->btnAuthorizationInstructor->setChecked(false);
|
||
SpecMsgBox::WarningClose(this, tr("Instructor authorization is temporarily unavailable.") + "\n" + tr("Server blocked!") + "\n" + tr("Try again later."));
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_ErrorAuth(QString error)
|
||
{
|
||
if(flTryLogin)
|
||
{
|
||
flTryLogin = false;
|
||
flTryReceiveFIM = false;
|
||
flTryReceiveAMM = false;
|
||
waitAnimationWidget->hideWithStop();
|
||
|
||
ui->btnAuthorizationInstructor->setChecked(false);
|
||
|
||
QString errorTextMsg = "";
|
||
|
||
if(error == NOTIFY_ERROR_AUTH_DB)
|
||
{
|
||
errorTextMsg = tr("Database error!");
|
||
}
|
||
else if(error == NOTIFY_ERROR_AUTH_ARCHIVED)
|
||
{
|
||
errorTextMsg = tr("The user is archived!");
|
||
}
|
||
else if(error == NOTIFY_ERROR_AUTH_ALREADYLOGIN)
|
||
{
|
||
errorTextMsg = tr("The user is already logged in!");
|
||
}
|
||
else if(error == NOTIFY_ERROR_AUTH_LOGINORPASSWORD)
|
||
{
|
||
errorTextMsg = tr("Login or password error!");
|
||
}
|
||
|
||
SpecMsgBox::WarningClose(this, tr("Instructor authorization.") + "\n" + errorTextMsg);
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_SetVersion(StreamingVersionData *serverVersion)
|
||
{
|
||
versionStr = serverVersion->getViewName();
|
||
ui->lblVersionText->setText(versionStr);
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state)
|
||
{
|
||
if(state)
|
||
{//Сервер подключен
|
||
ui->btnConnectionToServer->setEnabled(false);
|
||
ui->btnAuthorizationInstructor->setEnabled(true);
|
||
|
||
updateLabelLoggedInInstructor(instructorLoggedInLocal);
|
||
|
||
flTryConnectToServer = false;
|
||
cntTryConnectToServer = 0;
|
||
waitAnimationWidget->hideWithStop();
|
||
|
||
updateLabelServer();
|
||
|
||
ui->btnAuthorizationInstructor->click();
|
||
}
|
||
else
|
||
{//Сервер отключен
|
||
//ui->btnConnectionToServer->setEnabled(true);
|
||
ui->btnAuthorizationInstructor->setEnabled(false);
|
||
ui->btnAuthorizationInstructor->setChecked(false);
|
||
|
||
viewerInstructors->setAuthComplited(false);
|
||
viewerTrainees->setAuthComplited(false);
|
||
|
||
ui->btnEditorTrainees->setEnabled(false);
|
||
ui->btnEditorInstructors->setEnabled(false);
|
||
ui->btnPersonalCard->setEnabled(false);
|
||
|
||
viewerTrainees->deactivate();
|
||
viewerInstructors->deactivate();
|
||
|
||
if(dlgSettings)
|
||
{
|
||
//dlgSettings->deactivate();
|
||
dlgSettings->close();
|
||
delete dlgSettings;
|
||
dlgSettings = nullptr;
|
||
}
|
||
|
||
if(dlgAuthorization)
|
||
{
|
||
dlgAuthorization->close();
|
||
delete dlgAuthorization;
|
||
dlgAuthorization = nullptr;
|
||
}
|
||
|
||
messangerController->deleteAllWidgets();
|
||
|
||
instructorLoggedInLocal.setLogin(QStringLiteral(""));
|
||
instructorLoggedInLocal.setName(QStringLiteral(""));
|
||
instructorLoggedInLocal.setIsAdmin(false);
|
||
instructorLoggedInLocal.setID(0);
|
||
|
||
updateLabelLoggedInInstructor(instructorLoggedInLocal);
|
||
|
||
|
||
if(flTryConnectToServer)
|
||
{
|
||
if(cntTryConnectToServer < 10)
|
||
{
|
||
cntTryConnectToServer++;
|
||
QTimer::singleShot(1000, this, SLOT(slot_TryConnectToServer()));
|
||
}
|
||
else
|
||
{
|
||
flTryConnectToServer = false;
|
||
cntTryConnectToServer = 0;
|
||
ui->btnConnectionToServer->setEnabled(true);
|
||
waitAnimationWidget->hideWithStop();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
flTryConnectToServer = false;
|
||
cntTryConnectToServer = 0;
|
||
ui->btnConnectionToServer->setEnabled(true);
|
||
}
|
||
|
||
if(!flSettingsServerIsChanged)
|
||
{
|
||
if(!flTryConnectToServer)
|
||
{
|
||
WidgetTools::closeAllChildWidgets(this, "SpecMsgBox");
|
||
waitAnimationWidget->hideWithStop();
|
||
SpecMsgBox::WarningClose(this, tr("The server is not available!"));
|
||
}
|
||
}
|
||
else
|
||
flSettingsServerIsChanged = false;
|
||
|
||
|
||
updateLabelServer();
|
||
|
||
flTryLogin = false;
|
||
flTryReceiveFIM = false;
|
||
flTryReceiveAMM = false;
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_traineeSelected(int id_trainee)
|
||
{
|
||
ui->btnPersonalCard->setEnabled(false);
|
||
viewerInstructors->clearSelection();
|
||
|
||
/*Messanger*/
|
||
messangerController->deleteWidget(messangerWidget);
|
||
if(id_trainee)
|
||
{
|
||
Trainee trainee = connectorToServer->getTrainee(id_trainee);
|
||
if(trainee.getID())
|
||
{
|
||
messangerWidget = messangerController->newWidget(this, &trainee, ui->verticalLayout_Messenger);
|
||
ui->btnPersonalCard->setEnabled(true);
|
||
}
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_instructorSelected(int id_instructor)
|
||
{
|
||
ui->btnPersonalCard->setEnabled(false);
|
||
viewerTrainees->clearSelection();
|
||
|
||
/*Messanger*/
|
||
messangerController->deleteWidget(messangerWidget);
|
||
if(id_instructor && id_instructor != instructorLoggedInLocal.getID())
|
||
{
|
||
Instructor instructor = connectorToServer->getInstructor(id_instructor);
|
||
if(instructor.getID())
|
||
messangerWidget = messangerController->newWidget(this, &instructor, ui->verticalLayout_Messenger);
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_AnswerDocsChanged()
|
||
{
|
||
viewerTrainees->getAmmTasksWidgetCommon()->setDocsActualed(false);
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_TryConnectToServer()
|
||
{
|
||
updateLabelServer();
|
||
connectorToServer->SetConnectToServer();
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_ServerBlockState(bool state)
|
||
{
|
||
updateLabelServer();
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_needShowWait(bool flNeed)
|
||
{
|
||
if(flNeed)
|
||
waitAnimationWidget->showWithPlay();
|
||
else
|
||
waitAnimationWidget->hideWithStop();
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_UpdateTasksAMM()
|
||
{
|
||
if(flTryReceiveAMM)
|
||
{
|
||
flTryReceiveAMM = false;
|
||
if(!flTryReceiveAMM && !flTryReceiveFIM)
|
||
waitAnimationWidget->hideWithStop();
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::slot_UpdateTasksFIM()
|
||
{
|
||
if(flTryReceiveFIM)
|
||
{
|
||
flTryReceiveFIM = false;
|
||
if(!flTryReceiveAMM && !flTryReceiveFIM)
|
||
waitAnimationWidget->hideWithStop();
|
||
}
|
||
}
|
||
|
||
bool InstructorsAndTraineesWidget::authorizationInstructorDialog(QWidget* parent)
|
||
{
|
||
dlgAuthorization = new DialogAuthorization(parent);
|
||
|
||
dlgAuthorization->setWindowTitle(tr("Instructor authorization"));
|
||
dlgAuthorization->setWindowFlags(dlgAuthorization->windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||
dlgAuthorization->setStyleSheet(this->styleSheet());
|
||
#ifdef PROJECT_TYPE_DEBUG
|
||
dlgAuthorization->setLogin("admin");
|
||
dlgAuthorization->setPassword("admin");
|
||
#endif
|
||
|
||
do
|
||
{
|
||
switch( dlgAuthorization->exec() )
|
||
{
|
||
case QDialog::Accepted:
|
||
{
|
||
QString login = dlgAuthorization->getLogin();
|
||
QString password = dlgAuthorization->getPassword();
|
||
|
||
// Вычисление MD5 хэша
|
||
password = HashTools::hashingMD5string(password);
|
||
|
||
waitAnimationWidget->showWithPlay();
|
||
|
||
flTryLogin = true;
|
||
flTryReceiveFIM = true;
|
||
flTryReceiveAMM = true;
|
||
|
||
connectorToServer->sendAuthorizationInstructorLocal(login, password);
|
||
|
||
return true;
|
||
}
|
||
case QDialog::Rejected:
|
||
return false;
|
||
default:
|
||
return false;
|
||
}
|
||
}
|
||
while(true);
|
||
|
||
if(dlgAuthorization)
|
||
{
|
||
delete dlgAuthorization;
|
||
dlgAuthorization = nullptr;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
bool InstructorsAndTraineesWidget::deAuthorizationInstructor(QString login)
|
||
{
|
||
connectorToServer->sendDeAuthorizationInstructorLocal(login);
|
||
return true;
|
||
}
|
||
|
||
bool InstructorsAndTraineesWidget::authorizationIsCompleted()
|
||
{
|
||
if(instructorLoggedInLocal.getLogin() == QStringLiteral(""))
|
||
return false;
|
||
else
|
||
return true;
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::on_btnConnectionToServer_clicked()
|
||
{
|
||
waitAnimationWidget->showWithPlay();
|
||
|
||
ui->btnConnectionToServer->setEnabled(false);
|
||
|
||
flTryConnectToServer = true;
|
||
cntTryConnectToServer = 1;
|
||
|
||
updateLabelServer();
|
||
|
||
QTimer::singleShot(1000, this, SLOT(slot_TryConnectToServer()));
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked()
|
||
{
|
||
bool stateIsChecked = ui->btnAuthorizationInstructor->isChecked();
|
||
|
||
if(stateIsChecked)
|
||
{//Авторизация Инструктора локальная (Администратора)
|
||
if(authorizationInstructorDialog(this))
|
||
{
|
||
/*
|
||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
|
||
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
|
||
connect(connectorToServer,&ConnectorToServer::signal_reInitMessangerByUsers,messangerController,&MessangerController::slot_reinitMessangers);
|
||
*/
|
||
}
|
||
else
|
||
ui->btnAuthorizationInstructor->setChecked(false);
|
||
}
|
||
else
|
||
{//ДеАвторизация Инструктора локальная (Администратора)
|
||
if(authorizationIsCompleted())
|
||
{
|
||
waitAnimationWidget->showWithPlay();
|
||
|
||
if(deAuthorizationInstructor(instructorLoggedInLocal.getLogin()))
|
||
{
|
||
/*
|
||
disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
|
||
disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
|
||
disconnect(connectorToServer,&ConnectorToServer::signal_reInitMessangerByUsers,messangerController,&MessangerController::slot_reinitMessangers);
|
||
*/
|
||
|
||
viewerTrainees->deactivate();
|
||
viewerInstructors->deactivate();
|
||
|
||
if(dlgSettings)
|
||
dlgSettings->deactivate();
|
||
|
||
messangerController->deleteAllWidgets();
|
||
}
|
||
else
|
||
ui->btnAuthorizationInstructor->setChecked(true);
|
||
}
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::updateLabelLoggedInInstructor(Instructor& instructor)
|
||
{
|
||
if(authorizationIsCompleted())
|
||
{
|
||
QString nameLoggedInInstructor = QString("%1 (%2)").arg(instructor.getName(), instructor.getLogin());
|
||
ui->lblLoggedInInstructor->setText(nameLoggedInInstructor);
|
||
if(instructor.getIsAdmin())
|
||
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::updateLabelServer()
|
||
{
|
||
if(!connectorToServer)
|
||
return;
|
||
|
||
if(flTryConnectToServer)
|
||
{
|
||
ui->lblServer->setText(tr("Connection attempt") + QString(" %1 ").arg(cntTryConnectToServer) + "...");
|
||
}
|
||
else
|
||
{
|
||
if(connectorToServer->getIsConnected())
|
||
{
|
||
if(connectorToServer->getServerBlockState())
|
||
{//Заблокирован!
|
||
ServerSettings serverSettings = connectorToServer->getServerSettings();
|
||
ui->lblServer->setText(tr("connected") + " " + serverSettings.Address + " : " +serverSettings.Port + ", " + tr("blocked"));
|
||
|
||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/lock.png")));
|
||
}
|
||
else
|
||
{
|
||
ServerSettings serverSettings = connectorToServer->getServerSettings();
|
||
ui->lblServer->setText(tr("connected") + " " + serverSettings.Address + " : " +serverSettings.Port);
|
||
|
||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png")));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ui->lblServer->setText(tr("not connected"));
|
||
|
||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png")));
|
||
}
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::updateLabelVersion()
|
||
{
|
||
ui->lblVersionText->setText(versionStr);
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::setLanguageInterfase()
|
||
{
|
||
ServerSettings settings;
|
||
DialogSettings::loadSettings(&settings);
|
||
|
||
if(settings.Language == "ENG")
|
||
{
|
||
qtLanguageTranslator.load(QString("translations/RRJServer_") + languageENG, ".");
|
||
language = languageENG;
|
||
}
|
||
else
|
||
{
|
||
qtLanguageTranslator.load(QString("translations/RRJServer_") + languageRUS, ".");
|
||
language = languageRUS;
|
||
}
|
||
|
||
qApp->installTranslator(&qtLanguageTranslator);
|
||
|
||
emit signal_LanguageChanged(language);
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::on_btnSettings_clicked()
|
||
{
|
||
dlgSettings = new DialogSettings(connectorToServer, authorizationIsCompleted(), this);
|
||
dlgSettings->setWindowFlags(dlgSettings->windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||
|
||
connect(dlgSettings, &DialogSettings::signal_LanguageChanged, this, &InstructorsAndTraineesWidget::slot_LanguageChanged);
|
||
connect(dlgSettings, &DialogSettings::signal_UpdateStyleSheet, this, &InstructorsAndTraineesWidget::slot_UpdateStyleSheet);
|
||
//connect(dlgSettings, &DialogSettings::signal_needShowWait, this, &InstructorsAndTraineesWidget::slot_needShowWait);
|
||
|
||
switch( dlgSettings->exec() )
|
||
{
|
||
case QDialog::Accepted:
|
||
{
|
||
language = dlgSettings->getSettings().Language;
|
||
|
||
if(dlgSettings->settingsServerIsChanged())
|
||
{
|
||
SpecMsgBox::WarningClose(this, tr("Server settings have been changed.\nPlease reconnect to the server."));
|
||
|
||
flSettingsServerIsChanged = true;
|
||
|
||
if(authorizationIsCompleted())
|
||
deAuthorizationInstructor(instructorLoggedInLocal.getLogin());
|
||
|
||
connectorToServer->StopConnectToServer();
|
||
}
|
||
|
||
break;
|
||
}
|
||
case QDialog::Rejected:
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
if(dlgSettings)
|
||
{
|
||
delete dlgSettings;
|
||
dlgSettings = nullptr;
|
||
}
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::on_btnEditorTrainees_clicked()
|
||
{
|
||
this->viewerTrainees->on_btnEditorTrainees_clicked();
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::on_btnEditorInstructors_clicked()
|
||
{
|
||
this->viewerInstructors->on_btnEditorInstructors_clicked();
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::on_btnPersonalCard_clicked()
|
||
{
|
||
this->viewerTrainees->on_btnPersonalCard_clicked();
|
||
}
|
||
|
||
void InstructorsAndTraineesWidget::on_btnTasksCommon_clicked()
|
||
{
|
||
AMMtasksWidget* ammTasksWidgetCommon = viewerTrainees->getAmmTasksWidgetCommon();
|
||
FIMtasksWidget* fimTasksWidgetCommon = viewerTrainees->getFimTasksWidgetCommon();
|
||
|
||
if(!ammTasksWidgetCommon || !fimTasksWidgetCommon)
|
||
return;
|
||
|
||
dlgTasksCommon = new DialogTasksCommon(connectorToServer, ammTasksWidgetCommon, fimTasksWidgetCommon, this);
|
||
dlgTasksCommon->exec();
|
||
|
||
ammTasksWidgetCommon->setParent(this);
|
||
fimTasksWidgetCommon->setParent(this);
|
||
|
||
if(dlgTasksCommon)
|
||
{
|
||
delete dlgTasksCommon;
|
||
dlgTasksCommon = nullptr;
|
||
}
|
||
}
|