From 7a909d1ee5e9943a4b99760a69c4c96a25e833d9 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Wed, 3 Sep 2025 18:30:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D0=BB=D0=B5=D1=80=20=D0=BC=D0=B5=D1=81=D1=81=D0=B5=D0=BD=D0=B4?= =?UTF-8?q?=D0=B6=D0=B5=D1=80=D0=B0=20=D1=83=D0=BF=D1=80=D0=BE=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../instructorsandtraineeswidget.cpp | 4 +-- .../messanger/messangercontroller.cpp | 10 +++++- .../messanger/messangercontroller.h | 3 +- .../messanger/messangerwidget.cpp | 32 +++++++++++++++++-- .../messanger/messangerwidget.h | 4 +++ .../trainees/personalcardtrainee.cpp | 7 +++- 6 files changed, 52 insertions(+), 8 deletions(-) diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index 19f4412..a2da904 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -345,7 +345,7 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked() { connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI); connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI); - connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerController,&MessangerController::signal_InitMessanger); + connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerController,&MessangerController::slot_InitMessanger); } else ui->btnAuthorizationInstructor->setChecked(false); @@ -358,7 +358,7 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked() { disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI); disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI); - disconnect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerController,&MessangerController::signal_InitMessanger); + disconnect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerController,&MessangerController::slot_InitMessanger); viewerTrainees->deactivate(); viewerInstructors->deactivate(); diff --git a/InstructorsAndTrainees/messanger/messangercontroller.cpp b/InstructorsAndTrainees/messanger/messangercontroller.cpp index 00c931f..8d396ca 100644 --- a/InstructorsAndTrainees/messanger/messangercontroller.cpp +++ b/InstructorsAndTrainees/messanger/messangercontroller.cpp @@ -26,7 +26,7 @@ MessangerWidget *MessangerController::newWidget(QWidget *parent) connect(this, &MessangerController::signal_traineeSelected, msgWdgt, &MessangerWidget::slot_traineeSelected); connect(msgWdgt, &MessangerWidget::signal_tabMessengerChanged, this, &MessangerController::signal_tabMessengerChanged); - connect(this, &MessangerController::signal_InitMessanger, msgWdgt,&MessangerWidget::slot_InitMessanger); + //connect(this, &MessangerController::slot_InitMessanger, msgWdgt,&MessangerWidget::slot_InitMessanger); msgWdgt->initialize(currClientId); @@ -74,3 +74,11 @@ void MessangerController::slot_sendMessage(ClientMessage clientMessage) widget->addMsgWidgetLocal(clientMessage.Text); } } + +void MessangerController::slot_InitMessanger(QList listTrainees) +{ + for(MessangerWidget* widget : listWidgets) + { + widget->slot_InitMessanger(listTrainees); + } +} diff --git a/InstructorsAndTrainees/messanger/messangercontroller.h b/InstructorsAndTrainees/messanger/messangercontroller.h index 3c0c598..d4f759d 100644 --- a/InstructorsAndTrainees/messanger/messangercontroller.h +++ b/InstructorsAndTrainees/messanger/messangercontroller.h @@ -23,10 +23,11 @@ signals: void signal_tabMessengerChanged(QString login); void signal_traineeSelected(QString login); - void signal_InitMessanger(QList listTrainees); + public slots: void slot_sendMessage(ClientMessage clientMessage); + void slot_InitMessanger(QList listTrainees); private: diff --git a/InstructorsAndTrainees/messanger/messangerwidget.cpp b/InstructorsAndTrainees/messanger/messangerwidget.cpp index 2cd3cbb..48e7209 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.cpp +++ b/InstructorsAndTrainees/messanger/messangerwidget.cpp @@ -12,7 +12,8 @@ MessangerWidget::MessangerWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MessangerWidget), selectedUserLogin(""), - selectedUserId("") + selectedUserId(""), + flOneTrainee(false) { ui->setupUi(this); @@ -167,6 +168,16 @@ void MessangerWidget::addMsgWidgetLocal(QString text) } } +void MessangerWidget::setOneTrainee(Trainee trainee) +{ + flOneTrainee = true; + + listTrainees.clear(); + listTrainees.append(trainee); + + slot_InitMessanger(listTrainees); +} + void MessangerWidget::on_btnSend_clicked() { QString text = ui->editMsg->toPlainText(); @@ -236,11 +247,26 @@ void MessangerWidget::slot_LanguageChanged(QString language) void MessangerWidget::slot_InitMessanger(QList listTrainees) { - this->listTrainees = listTrainees; + if(flOneTrainee) + { + Trainee traineeOne = this->listTrainees.first(); + for(Trainee trainee: listTrainees) + { + if(traineeOne.getID() == trainee.getID()) + { + this->listTrainees.replace(0, trainee); + break; + } + } + } + else + { + this->listTrainees = listTrainees; + } actualizationTabsDialogMessenger(); - for(Trainee trainee: listTrainees) + for(Trainee trainee: this->listTrainees) { if(! trainee.getArchived()) addTabDialogMessenger(trainee); diff --git a/InstructorsAndTrainees/messanger/messangerwidget.h b/InstructorsAndTrainees/messanger/messangerwidget.h index 4e9826d..9a97ce9 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.h +++ b/InstructorsAndTrainees/messanger/messangerwidget.h @@ -42,6 +42,8 @@ public: void addMsgWidgetLocal(QString text); + void setOneTrainee(Trainee trainee); + private slots: void on_btnSend_clicked(); void on_tabWidget_currentChanged(int index); @@ -73,6 +75,8 @@ private: QString selectedUserId; //id клиента текущего диалога QString currClientId; //id этого клиента QTranslator qtLanguageTranslator; + + bool flOneTrainee; }; #endif // MESSANGERWIDGET_H diff --git a/InstructorsAndTrainees/trainees/personalcardtrainee.cpp b/InstructorsAndTrainees/trainees/personalcardtrainee.cpp index b80a988..7308f0e 100644 --- a/InstructorsAndTrainees/trainees/personalcardtrainee.cpp +++ b/InstructorsAndTrainees/trainees/personalcardtrainee.cpp @@ -37,10 +37,15 @@ PersonalCardTrainee::PersonalCardTrainee(ConnectorToServer* connectorToServer, M ui->verticalLayout_Messenger->addWidget(messangerWidget); - QList listTrainees; + + //QList listTrainees; Trainee trainee = connectorToServer->getTrainee(id_trainee); + /* listTrainees.append(trainee); messangerWidget->slot_InitMessanger(listTrainees); + */ + + messangerWidget->setOneTrainee(trainee); ui->groupBox_Messenger->setMaximumWidth(600); ui->groupBox_Messenger->setMinimumWidth(600);