mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
Корректное переподключение к серверу
This commit is contained in:
@@ -56,7 +56,13 @@ void TCPClient::setConnect(ServerSettings *serverSettings)
|
||||
|
||||
void TCPClient::setDisconnect()
|
||||
{
|
||||
QDataStream stream(socket);
|
||||
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
|
||||
stream << PacketType::TYPE_DISABLE;
|
||||
|
||||
|
||||
socket->disconnect();
|
||||
|
||||
isConnected = false;
|
||||
emit sigServerDisconnect();
|
||||
emit sigSendDebugLog("Server disabled");
|
||||
|
||||
@@ -26,6 +26,7 @@ public:
|
||||
explicit TCPClient(QObject *parent = 0);
|
||||
void initialize(RecognizeSystem *recognize,SendSystem *sendSystem);
|
||||
void setConnect(ServerSettings *serverSettings);
|
||||
void setDisconnect();
|
||||
|
||||
void waitRead(int time);
|
||||
QTcpSocket* getSocket();
|
||||
@@ -54,9 +55,7 @@ private:
|
||||
SendSystem *sendSystem;
|
||||
QTcpSocket *socket;
|
||||
RecognizeSystem *recognizeSystem;
|
||||
bool isConnected;
|
||||
|
||||
void setDisconnect();
|
||||
bool isConnected;
|
||||
};
|
||||
|
||||
#endif // TCPCLIENT_H
|
||||
|
||||
@@ -119,6 +119,12 @@ void ConnectorToServer::SetConnectToServer()
|
||||
emit sigSetConnect(dataParser->getServerSettings(),connectionThread);
|
||||
}
|
||||
|
||||
void ConnectorToServer::StopConnectToServer()
|
||||
{
|
||||
emit sigStopConnect();
|
||||
clearListModelDB();
|
||||
}
|
||||
|
||||
QByteArray ConnectorToServer::getListTaskFimArray()
|
||||
{
|
||||
return listTaskFimArray;
|
||||
@@ -287,17 +293,6 @@ void ConnectorToServer::showVersionSelect()
|
||||
emit sigSendAnswerToServer(answer);
|
||||
}
|
||||
|
||||
/*
|
||||
void ConnectorToServer::slot_AnswerQueryToDB(QList<Instructor>* listInstructors,
|
||||
QList<Trainee>* listTrainees,
|
||||
QList<Group>* listGroups)
|
||||
{
|
||||
this->listInstructors = *listInstructors;
|
||||
this->listTrainees = *listTrainees;
|
||||
this->listGroups = *listGroups;
|
||||
emit signal_UpdateDB(true, true);
|
||||
}*/
|
||||
|
||||
void ConnectorToServer::slot_AnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors)
|
||||
{
|
||||
this->listInstructors = listInstructors;
|
||||
@@ -320,13 +315,13 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTra
|
||||
void ConnectorToServer::slot_AnswerQueryToDB_ListComputers(QList<Computer> listComputers)
|
||||
{
|
||||
this->listComputers = listComputers;
|
||||
//emit signal_UpdateDB(false, true);
|
||||
//emit signal_UpdateDB(false, true); //TODO
|
||||
}
|
||||
|
||||
void ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms)
|
||||
{
|
||||
this->listClassrooms = listClassrooms;
|
||||
//emit signal_UpdateDB(false, true);
|
||||
//emit signal_UpdateDB(false, true); //TODO
|
||||
}
|
||||
|
||||
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
|
||||
@@ -384,11 +379,6 @@ void ConnectorToServer::initialize()
|
||||
emit sigInitializeClient(recognizeSystem,sendSystem,connectionThread);
|
||||
|
||||
SetConnectToServer();
|
||||
//emit sigSetConnect(dataParser->getServerSettings(),connectionThread);
|
||||
|
||||
// QByteArray answer = dataParser->xmlAnswer_notify()
|
||||
// sendSystem->sendXMLAnswer()
|
||||
|
||||
}
|
||||
|
||||
void ConnectorToServer::activateLoadAnimation(bool flag)
|
||||
@@ -407,6 +397,8 @@ void ConnectorToServer::bindConnection()
|
||||
{
|
||||
connect(this,&ConnectorToServer::sigInitializeClient,client,&TCPClient::initialize,Qt::AutoConnection);
|
||||
connect(this,&ConnectorToServer::sigSetConnect,client,&TCPClient::setConnect,Qt::AutoConnection);
|
||||
connect(this,&ConnectorToServer::sigStopConnect,client,&TCPClient::setDisconnect,Qt::AutoConnection);
|
||||
|
||||
connect(this,&ConnectorToServer::signal_sendXMLmsgGUItoServer,sendSystem,&SendSystem::sendXMLmsgGUItoServer);
|
||||
connect(this,&ConnectorToServer::sigSendAnswerToServer,sendSystem,&SendSystem::sendXMLAnswer,Qt::AutoConnection);
|
||||
|
||||
@@ -466,3 +458,17 @@ void ConnectorToServer::createObjects()
|
||||
connectionThread->start();
|
||||
connectionThread->setPriority(QThread::HighestPriority);
|
||||
}
|
||||
|
||||
void ConnectorToServer::clearListModelDB()
|
||||
{
|
||||
listInstructors.clear();
|
||||
listGroups.clear();
|
||||
listTrainees.clear();
|
||||
listComputers.clear();
|
||||
listClassrooms.clear();
|
||||
mapTasksAMM.clear();
|
||||
mapTasksFIM.clear();
|
||||
|
||||
listTaskFimArray.clear();
|
||||
listTaskAmmArray.clear();
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ public:
|
||||
bool sendQueryTasksXML(QString type);
|
||||
|
||||
void SetConnectToServer();
|
||||
void StopConnectToServer();
|
||||
|
||||
public:
|
||||
QByteArray getListTaskFimArray();
|
||||
@@ -66,11 +67,8 @@ public:
|
||||
|
||||
ServerSettings getServerSettings();
|
||||
bool getIsConnected();
|
||||
public slots:
|
||||
/*void slot_AnswerQueryToDB(QList<Instructor>* listInstructors,
|
||||
QList<Trainee>* listTrainees,
|
||||
QList<Group>* listGroups);*/
|
||||
|
||||
public slots:
|
||||
void slot_AnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors);
|
||||
void slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups);
|
||||
void slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTrainees);
|
||||
@@ -87,6 +85,7 @@ public slots:
|
||||
|
||||
signals:
|
||||
void sigSetConnect(ServerSettings* serverSettings,QThread *thread);
|
||||
void sigStopConnect();
|
||||
void sigInitializeClient(RecognizeSystem *recognizeSystem,
|
||||
SendSystem *sendSystem,
|
||||
QThread *thread);
|
||||
@@ -116,6 +115,9 @@ private:
|
||||
void bindConnection();
|
||||
void createObjects();
|
||||
|
||||
//Очистка списочной модели БД СУО
|
||||
void clearListModelDB();
|
||||
|
||||
private:
|
||||
QWidget* parentWidget;
|
||||
QThread *connectionThread;
|
||||
|
||||
@@ -9,7 +9,8 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru
|
||||
QDialog(parent),
|
||||
ui(new Ui::DialogSettings),
|
||||
settings(nullptr),
|
||||
connectorToServer(nullptr)
|
||||
connectorToServer(nullptr),
|
||||
flSettingsServerChanged(false)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->btnUpdateStyle->setObjectName("btnUpdateStyle");
|
||||
@@ -41,7 +42,7 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru
|
||||
//Задаём два пункта с текстом локалей в комбобоксе
|
||||
ui->cmbLanguage->addItems(QStringList() << "English" << "Русский");
|
||||
|
||||
if(loadSettings())
|
||||
if(loadSettings(settings))
|
||||
{
|
||||
if(settings->Language == "ENG")
|
||||
ui->cmbLanguage->setCurrentText("English");
|
||||
@@ -57,9 +58,11 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru
|
||||
if(connectorToServer)
|
||||
if(connectorToServer->getIsConnected())
|
||||
{
|
||||
/*
|
||||
ui->editAddress->setEnabled(false);
|
||||
ui->editPort->setEnabled(false);
|
||||
ui->checkAutoStart->setEnabled(false);
|
||||
*/
|
||||
|
||||
if(instructorIsLogged)
|
||||
ui->btnSetVersion->setEnabled(true);
|
||||
@@ -68,11 +71,16 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru
|
||||
ui->label_AutoStart->setVisible(false);
|
||||
ui->checkAutoStart->setVisible(false);
|
||||
|
||||
ui->btnSave->setEnabled(false);
|
||||
flSettingsServerChanged = false;
|
||||
|
||||
/*
|
||||
if(settings->Language == "ENG")
|
||||
qtLanguageTranslator.load(QString("translations/InstructorsAndTraineesWidget_") + "en_EN", ".");
|
||||
else
|
||||
qtLanguageTranslator.load(QString("translations/InstructorsAndTraineesWidget_") + "ru_RU", ".");
|
||||
qApp->installTranslator(&qtLanguageTranslator);
|
||||
*/
|
||||
}
|
||||
|
||||
DialogSettings::~DialogSettings()
|
||||
@@ -105,7 +113,7 @@ void DialogSettings::on_btnUpdateStyle_clicked()
|
||||
emit signal_UpdateStyleSheet();
|
||||
}
|
||||
|
||||
bool DialogSettings::loadSettings()
|
||||
bool DialogSettings::loadSettings(ServerSettings *settings)
|
||||
{
|
||||
QFile file(settingsName);
|
||||
if(! file.open(QIODevice::ReadOnly))
|
||||
@@ -199,6 +207,7 @@ void DialogSettings::on_btnSave_clicked()
|
||||
|
||||
saveSettings();
|
||||
|
||||
/*
|
||||
QString language;
|
||||
|
||||
if(settings->Language == "ENG")
|
||||
@@ -207,21 +216,12 @@ void DialogSettings::on_btnSave_clicked()
|
||||
language = QString("ru_RU");
|
||||
|
||||
emit signal_LanguageChanged(language);
|
||||
*/
|
||||
|
||||
this->close();
|
||||
this->accept();
|
||||
}
|
||||
|
||||
void DialogSettings::on_DialogSettings_rejected()
|
||||
{
|
||||
QString language;
|
||||
|
||||
if(settings->Language == "ENG")
|
||||
language = QString("en_EN");
|
||||
else
|
||||
language = QString("ru_RU");
|
||||
|
||||
emit signal_LanguageChanged(language);
|
||||
}
|
||||
|
||||
void DialogSettings::on_btnSetVersion_clicked()
|
||||
{
|
||||
@@ -229,3 +229,37 @@ void DialogSettings::on_btnSetVersion_clicked()
|
||||
if(connectorToServer->getIsConnected())
|
||||
connectorToServer->showVersionSelect();
|
||||
}
|
||||
|
||||
void DialogSettings::on_cmbLanguage_currentIndexChanged(int index)
|
||||
{
|
||||
ui->btnSave->setEnabled(true);
|
||||
}
|
||||
|
||||
void DialogSettings::on_editAddress_textChanged(const QString &arg1)
|
||||
{
|
||||
ui->btnSave->setEnabled(true);
|
||||
flSettingsServerChanged = true;
|
||||
}
|
||||
|
||||
void DialogSettings::on_editPort_textChanged(const QString &arg1)
|
||||
{
|
||||
ui->btnSave->setEnabled(true);
|
||||
flSettingsServerChanged = true;
|
||||
}
|
||||
|
||||
void DialogSettings::on_DialogSettings_rejected()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DialogSettings::on_DialogSettings_accepted()
|
||||
{
|
||||
QString language;
|
||||
|
||||
if(settings->Language == "ENG")
|
||||
language = QString("en_EN");
|
||||
else
|
||||
language = QString("ru_RU");
|
||||
|
||||
emit signal_LanguageChanged(language);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,10 @@ public:
|
||||
|
||||
ServerSettings getSettings();
|
||||
|
||||
bool settingsServerIsChanged(){ return flSettingsServerChanged;}
|
||||
|
||||
static bool loadSettings(ServerSettings *settings);
|
||||
|
||||
protected:
|
||||
void changeEvent(QEvent * event) override;
|
||||
|
||||
@@ -40,8 +44,15 @@ private slots:
|
||||
|
||||
void on_btnSetVersion_clicked();
|
||||
|
||||
private:
|
||||
bool loadSettings();
|
||||
void on_cmbLanguage_currentIndexChanged(int index);
|
||||
|
||||
void on_editAddress_textChanged(const QString &arg1);
|
||||
|
||||
void on_editPort_textChanged(const QString &arg1);
|
||||
|
||||
void on_DialogSettings_accepted();
|
||||
|
||||
private:
|
||||
bool saveSettings();
|
||||
|
||||
private:
|
||||
@@ -50,6 +61,8 @@ private:
|
||||
|
||||
ServerSettings *settings;
|
||||
ConnectorToServer* connectorToServer;
|
||||
|
||||
bool flSettingsServerChanged;
|
||||
};
|
||||
|
||||
#endif // DIALOGSETTINGS_H
|
||||
|
||||
@@ -45,7 +45,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
||||
|
||||
updateMyStyleSheet();
|
||||
|
||||
on_btnSettings_clicked();
|
||||
setLanguageInterfase();
|
||||
|
||||
connectorToServer = new ConnectorToServer(this);
|
||||
connect(connectorToServer,&ConnectorToServer::sigLoginResult,this,&InstructorsAndTraineesWidget::checkLoginResult);
|
||||
@@ -93,46 +93,6 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
||||
ui->verticalLayout_Instructors->addWidget(viewerInstructors);
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
QWidget* wGB2 = new QWidget(this);
|
||||
QHBoxLayout* lGB2 = new QHBoxLayout(this);
|
||||
wGB2->setLayout(lGB2);
|
||||
lGB2->addWidget(ui->groupBox_Tasks);
|
||||
ui->horizontalLayout_3->addWidget(wGB2);
|
||||
|
||||
ui->verticalLayout_41->addWidget(ammTasksWidget);
|
||||
ui->verticalLayout_42->addWidget(fimTasksWidget);
|
||||
|
||||
ui->verticalLayout_2->addWidget(messangerWidget);
|
||||
|
||||
ui->verticalLayout_2->addWidget(viewerInstructors);
|
||||
*/
|
||||
|
||||
|
||||
//viewerTrainees->setMinimumSize(900, 500);
|
||||
//viewerTrainees->setMaximumWidth(1050);
|
||||
|
||||
|
||||
/*wGB2->setMinimumSize(500, 500);*/
|
||||
//wGB2->setMaximumWidth(1050);
|
||||
|
||||
//ammTasksWidget->setMinimumSize(1000, 500);
|
||||
//ammTasksWidget->setMaximumWidth(2000);
|
||||
//fimTasksWidget->setMinimumSize(1000, 500);
|
||||
//fimTasksWidget->setMaximumWidth(2000);
|
||||
//ui->tabWidget_Tasks->setMaximumWidth(2000);
|
||||
//ui->groupBox_Tasks->setMaximumWidth(2000);
|
||||
|
||||
//viewerInstructors->setMinimumSize(450, 400);
|
||||
//viewerInstructors->setMaximumWidth(500);
|
||||
//viewerInstructors->setMaximumHeight(400);
|
||||
|
||||
//messangerWidget->setMinimumSize(450, 700);
|
||||
//messangerWidget->setMaximumWidth(500);
|
||||
|
||||
ui->groupBox_Messenger->setMaximumWidth(500);
|
||||
ui->groupBox_Instructors->setMaximumWidth(500);
|
||||
|
||||
@@ -176,20 +136,6 @@ void InstructorsAndTraineesWidget::changeEvent(QEvent *event)
|
||||
{// переведём окно заново
|
||||
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);
|
||||
updateLabelServer();
|
||||
}
|
||||
@@ -320,8 +266,11 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state)
|
||||
|
||||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png")));
|
||||
|
||||
ServerSettings serverSettings = connectorToServer->getServerSettings();
|
||||
ui->lblServer->setText(serverSettings.Address + ":" +serverSettings.Port);
|
||||
//ServerSettings serverSettings = connectorToServer->getServerSettings();
|
||||
//ui->lblServer->setText(serverSettings.Address + ":" +serverSettings.Port);
|
||||
|
||||
updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, nameInstructorLoggedInLocal);
|
||||
updateLabelServer();
|
||||
}
|
||||
else
|
||||
{//Сервер отключен
|
||||
@@ -331,7 +280,7 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state)
|
||||
ui->btnAuthorizationInstructor->setChecked(false);
|
||||
//ui->btnSetVersion->hide();
|
||||
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png")));
|
||||
ui->lblServer->setText(tr("none"));
|
||||
//ui->lblServer->setText(tr("none"));
|
||||
|
||||
viewerInstructors->setAuthComplited(false);
|
||||
viewerTrainees->setAuthComplited(false);
|
||||
@@ -347,8 +296,14 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state)
|
||||
|
||||
messangerWidget->clear();
|
||||
|
||||
loginInstructorLoggedInLocal = "";
|
||||
nameInstructorLoggedInLocal = "";
|
||||
|
||||
updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, nameInstructorLoggedInLocal);
|
||||
updateLabelServer();
|
||||
|
||||
QMessageBox::warning(this, tr("Warning!"), tr("The server is disabled"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool InstructorsAndTraineesWidget::authorizationInstructorDialog(QWidget* parent)
|
||||
@@ -470,6 +425,18 @@ void InstructorsAndTraineesWidget::updateLabelServer()
|
||||
ui->lblServer->setText(tr("none"));
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::setLanguageInterfase()
|
||||
{
|
||||
ServerSettings settings;
|
||||
DialogSettings::loadSettings(&settings);
|
||||
|
||||
if(settings.Language == "ENG")
|
||||
qtLanguageTranslator.load(QString("translations/InstructorsAndTraineesWidget_") + "en_EN", ".");
|
||||
else
|
||||
qtLanguageTranslator.load(QString("translations/InstructorsAndTraineesWidget_") + "ru_RU", ".");
|
||||
qApp->installTranslator(&qtLanguageTranslator);
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::on_btnSetVersion_clicked()
|
||||
{
|
||||
connectorToServer->showVersionSelect();
|
||||
@@ -488,15 +455,24 @@ void InstructorsAndTraineesWidget::on_btnSettings_clicked()
|
||||
case QDialog::Accepted:
|
||||
{
|
||||
language = dlg.getSettings().Language;
|
||||
|
||||
if(dlg.settingsServerIsChanged())
|
||||
{
|
||||
QMessageBox::warning(this, tr("Attention!"), tr("Server settings have been changed. Please reconnect to the server."));
|
||||
|
||||
if(authorizationIsCompleted())
|
||||
deAuthorizationInstructor(loginInstructorLoggedInLocal);
|
||||
|
||||
connectorToServer->StopConnectToServer();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case QDialog::Rejected:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
language = dlg.getSettings().Language;
|
||||
}
|
||||
}
|
||||
|
||||
void InstructorsAndTraineesWidget::on_btnEditorTrainees_clicked()
|
||||
|
||||
@@ -85,6 +85,8 @@ private:
|
||||
void updateLabelLoggedInInstructor(QString login, QString name);
|
||||
void updateLabelServer();
|
||||
|
||||
void setLanguageInterfase();
|
||||
|
||||
private:
|
||||
Ui::InstructorsAndTraineesWidget *ui;
|
||||
|
||||
|
||||
@@ -433,6 +433,11 @@ void RecognizeSystem::recognize()
|
||||
|
||||
}
|
||||
|
||||
if(packetType == PacketType::TYPE_DISABLE)
|
||||
{
|
||||
clientHandler->sendDisable();
|
||||
}
|
||||
|
||||
packetType = PacketType::TYPE_NONE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user