diff --git a/LibInstructorsAndTrainees/InstructorsAndTrainees.qrc b/LibInstructorsAndTrainees/InstructorsAndTrainees.qrc index d6bb16c..add8f75 100644 --- a/LibInstructorsAndTrainees/InstructorsAndTrainees.qrc +++ b/LibInstructorsAndTrainees/InstructorsAndTrainees.qrc @@ -52,5 +52,6 @@ resources/icons/new.png resources/icons/branch-closed.png resources/icons/save.png + resources/icons/lock.png diff --git a/LibInstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp b/LibInstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp index ae334ca..de7edb9 100644 --- a/LibInstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp +++ b/LibInstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp @@ -260,12 +260,12 @@ void RecognizeSystem::recognize(QTcpSocket *socket) if(packetType == PacketType::BUSY) { - //emit sigAnimationActivated(true); + signal_ServerBlockState(true); } if(packetType == PacketType::FREE) { - //emit sigAnimationActivated(false); + signal_ServerBlockState(false); } if(packetType == PacketType::HASH_READY) diff --git a/LibInstructorsAndTrainees/connectorToServer/Core/recognizesystem.h b/LibInstructorsAndTrainees/connectorToServer/Core/recognizesystem.h index dfc3351..56f1c6f 100644 --- a/LibInstructorsAndTrainees/connectorToServer/Core/recognizesystem.h +++ b/LibInstructorsAndTrainees/connectorToServer/Core/recognizesystem.h @@ -62,6 +62,8 @@ signals: void signal_AnswerDocsChanged(); + void signal_ServerBlockState(bool state); + private: QList *folderList; //MainWindow *mainWindow; diff --git a/LibInstructorsAndTrainees/connectorToServer/connectortoserver.cpp b/LibInstructorsAndTrainees/connectorToServer/connectortoserver.cpp index e5aeaf7..dec6cfa 100644 --- a/LibInstructorsAndTrainees/connectorToServer/connectortoserver.cpp +++ b/LibInstructorsAndTrainees/connectorToServer/connectortoserver.cpp @@ -9,7 +9,8 @@ ConnectorToServer::ConnectorToServer(QObject *parent) : sendSystem(nullptr), recognizeSystem(nullptr), fl_GetedOfflineMessages(false), - nameInstructorLoggedInLocal("") + nameInstructorLoggedInLocal(""), + serverBlockState(false) { initialize(); } @@ -38,6 +39,8 @@ bool ConnectorToServer::getIsConnected() void ConnectorToServer::SetConnectToServer() { + serverBlockState = false; + qDebug() << "connectorToServer::SetConnectToServer() thread ID " << QThread::currentThreadId(); serverSettings = *dataParser->getServerSettings(); emit sigSetConnect(dataParser->getServerSettings(),connectionThread); @@ -45,6 +48,8 @@ void ConnectorToServer::SetConnectToServer() void ConnectorToServer::StopConnectToServer() { + serverBlockState = false; + emit sigStopConnect(); clearListModelDB(); } @@ -117,6 +122,12 @@ void ConnectorToServer::slot_NotifyVersionControl(QString text) emit signal_NotifyVersionControl(text); } +void ConnectorToServer::slot_ServerBlockState(bool state) +{ + serverBlockState = state; + emit signal_ServerBlockState(state); +} + void ConnectorToServer::initialize() { createObjects(); @@ -169,6 +180,8 @@ void ConnectorToServer::bindConnection() connect(recognizeSystem, &RecognizeSystem::sigSetVersion, this, &ConnectorToServer::signal_SetVersion); + connect(recognizeSystem,&RecognizeSystem::signal_ServerBlockState,this,&ConnectorToServer::slot_ServerBlockState); + connect(this, &ConnectorToServer::signal_SendCopyVersion, sendSystem, &SendSystem::sendCopyVersion); connect(this, &ConnectorToServer::signal_SendDeleteVersion, sendSystem, &SendSystem::sendDeleteVersion); connect(this, &ConnectorToServer::signal_SendSwitchVersion, sendSystem, &SendSystem::sendChangeVersion); @@ -195,6 +208,11 @@ void ConnectorToServer::createObjects() connectionThread->setPriority(QThread::HighestPriority); } +bool ConnectorToServer::getServerBlockState() const +{ + return serverBlockState; +} + SendSystem *ConnectorToServer::getSendSystem() const { return sendSystem; diff --git a/LibInstructorsAndTrainees/connectorToServer/connectortoserver.h b/LibInstructorsAndTrainees/connectorToServer/connectortoserver.h index 29202b3..bbaa682 100644 --- a/LibInstructorsAndTrainees/connectorToServer/connectortoserver.h +++ b/LibInstructorsAndTrainees/connectorToServer/connectortoserver.h @@ -82,6 +82,8 @@ public: int getIdTraineeByLogin(QString login); int getIdInstructorByLogin(QString login); + bool getServerBlockState() const; + private: //Очистка списочной модели БД СУО void clearListModelDB(); @@ -117,6 +119,8 @@ public slots: void slot_NotifyVersionControl(QString text); + void slot_ServerBlockState(bool state); + signals: void sigSetConnect(ServerSettings* serverSettings,QThread *thread); void sigStopConnect(); @@ -159,6 +163,8 @@ signals: void signal_NotifyVersionControl(QString text); + void signal_ServerBlockState(bool state); + private: void initialize(); void bindConnection(); @@ -191,6 +197,8 @@ private: bool fl_GetedOfflineMessages; QString nameInstructorLoggedInLocal; + + bool serverBlockState; }; #endif // CONNECTORTOSERVER_H diff --git a/LibInstructorsAndTrainees/instructorsandtraineeswidget.cpp b/LibInstructorsAndTrainees/instructorsandtraineeswidget.cpp index 748837a..fddd8d9 100644 --- a/LibInstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/LibInstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -55,6 +55,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : 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); messangerController = new MessangerController(connectorToServer, this); @@ -337,8 +338,6 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state) ui->btnConnectionToServer->setEnabled(false); ui->btnAuthorizationInstructor->setEnabled(true); - ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png"))); - updateLabelLoggedInInstructor(instructorLoggedInLocal); flTryConnectToServer = false; @@ -354,7 +353,6 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state) //ui->btnConnectionToServer->setEnabled(true); ui->btnAuthorizationInstructor->setEnabled(false); ui->btnAuthorizationInstructor->setChecked(false); - ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png"))); viewerInstructors->setAuthComplited(false); viewerTrainees->setAuthComplited(false); @@ -475,6 +473,11 @@ void InstructorsAndTraineesWidget::slot_TryConnectToServer() connectorToServer->SetConnectToServer(); } +void InstructorsAndTraineesWidget::slot_ServerBlockState(bool state) +{ + updateLabelServer(); +} + bool InstructorsAndTraineesWidget::authorizationInstructorDialog(QWidget* parent) { dlgAuthorization = new DialogAuthorization(parent); @@ -622,11 +625,27 @@ void InstructorsAndTraineesWidget::updateLabelServer() { if(connectorToServer->getIsConnected()) { - ServerSettings serverSettings = connectorToServer->getServerSettings(); - ui->lblServer->setText(tr("connected") + " " + serverSettings.Address + " : " +serverSettings.Port); + 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"))); + } } } diff --git a/LibInstructorsAndTrainees/instructorsandtraineeswidget.h b/LibInstructorsAndTrainees/instructorsandtraineeswidget.h index a24c9bf..23d1bb4 100644 --- a/LibInstructorsAndTrainees/instructorsandtraineeswidget.h +++ b/LibInstructorsAndTrainees/instructorsandtraineeswidget.h @@ -68,6 +68,8 @@ public Q_SLOTS: void slot_TryConnectToServer(); + void slot_ServerBlockState(bool state); + Q_SIGNALS: //сигнал смены языка void signal_LanguageChanged(QString language); diff --git a/LibInstructorsAndTrainees/resources/icons/lock.png b/LibInstructorsAndTrainees/resources/icons/lock.png new file mode 100644 index 0000000..bf9e7b2 Binary files /dev/null and b/LibInstructorsAndTrainees/resources/icons/lock.png differ diff --git a/LibServer/multithreadserver/multithreadserver.cpp b/LibServer/multithreadserver/multithreadserver.cpp index 0e52572..1fb23e6 100644 --- a/LibServer/multithreadserver/multithreadserver.cpp +++ b/LibServer/multithreadserver/multithreadserver.cpp @@ -162,7 +162,12 @@ bool MultiThreadServer::slot_BlockAutorization(bool block, QString whoFullName, { blockersMap.take(whoFullName); if(!blockersMap.count()) + { this->unBlockAutorization(); + blockRes = false; + } + else + blockRes = true; } if(res)