From 15325eb43a7903f632009b13051e7149207c71ca Mon Sep 17 00:00:00 2001 From: krivoshein Date: Tue, 9 Sep 2025 16:58:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=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=D0=BF=D0=BE=D0=B4=20=D1=8E=D0=B7?= =?UTF-8?q?=D0=B5=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataBaseLMS/user.h | 2 +- .../connectorToServer/connectortoserver.cpp | 15 +++++- .../connectorToServer/connectortoserver.h | 2 +- .../instructorsandtraineeswidget.cpp | 4 +- .../messanger/messangercontroller.cpp | 23 ++++++---- .../messanger/messangercontroller.h | 6 +-- .../messanger/messangerwidget.cpp | 46 +++++++++---------- .../messanger/messangerwidget.h | 13 +++--- 8 files changed, 66 insertions(+), 45 deletions(-) diff --git a/DataBaseLMS/user.h b/DataBaseLMS/user.h index 717d69a..38cb59a 100644 --- a/DataBaseLMS/user.h +++ b/DataBaseLMS/user.h @@ -3,7 +3,7 @@ #include "basicentity.h" -class User: public BasicEntity +class DATABASELMS_EXPORT User: public BasicEntity { public: User(); diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp index 44237e7..88977c3 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp @@ -341,6 +341,13 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListInstructors(QList l { this->listInstructors = listInstructors; emit signal_UpdateDB(true, false); + + QList listUsers; + for(Instructor instructor : listInstructors) + { + listUsers.append(instructor); + } + emit signal_reInitMessangerByUsers(listUsers); } void ConnectorToServer::slot_AnswerQueryToDB_ListGroups(QList listGroups) @@ -353,7 +360,13 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList listTra { this->listTrainees = listTrainees; emit signal_UpdateDB(false, true); - emit signal_InitMessanger(listTrainees); + + QList listUsers; + for(Trainee trainee : listTrainees) + { + listUsers.append(trainee); + } + emit signal_reInitMessangerByUsers(listUsers); if (isLoggedIn) { diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.h b/InstructorsAndTrainees/connectorToServer/connectortoserver.h index 14f55d0..fd576c6 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.h +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.h @@ -115,7 +115,7 @@ signals: void signal_ConnectedToServer(bool state); - void signal_InitMessanger(QList listTrainees); + void signal_reInitMessangerByUsers(QList listUsers); void signal_receiveMessage(ClientMessage clientMessage); void sigSendAnswerToServer(QByteArray array); diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index b1c50bd..8d8bd1c 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -321,7 +321,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::slot_reinitMessangers); + connect(connectorToServer,&ConnectorToServer::signal_reInitMessangerByUsers,messangerController,&MessangerController::slot_reinitMessangers); } else ui->btnAuthorizationInstructor->setChecked(false); @@ -334,7 +334,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::slot_reinitMessangers); + disconnect(connectorToServer,&ConnectorToServer::signal_reInitMessangerByUsers,messangerController,&MessangerController::slot_reinitMessangers); viewerTrainees->deactivate(); viewerInstructors->deactivate(); diff --git a/InstructorsAndTrainees/messanger/messangercontroller.cpp b/InstructorsAndTrainees/messanger/messangercontroller.cpp index bfebdf6..4c709c4 100644 --- a/InstructorsAndTrainees/messanger/messangercontroller.cpp +++ b/InstructorsAndTrainees/messanger/messangercontroller.cpp @@ -13,7 +13,7 @@ MessangerController::~MessangerController() deleteAllWidgets(); } -MessangerWidget *MessangerController::newWidget(QWidget *parent, Trainee* trainee, QVBoxLayout* boxLayout) +MessangerWidget *MessangerController::newWidget(QWidget *parent, User* user, QVBoxLayout* boxLayout) { MessangerWidget *msgWdgt = new MessangerWidget(parent); @@ -24,12 +24,12 @@ MessangerWidget *MessangerController::newWidget(QWidget *parent, Trainee* traine msgWdgt->initGUIclientId(GUIclientId); - if(trainee) + if(user) { - msgWdgt->setOneTrainee(*trainee); + msgWdgt->initUserRemote(*user); //Заполнение предыстории - int id_user = trainee->getID(); + int id_user = user->getID(); QList* list = nullptr; if(mapAlldialogsWithClients.contains(id_user)) {//Уже есть @@ -70,9 +70,9 @@ void MessangerController::deleteAllWidgets() listWidgets.clear(); } -void MessangerController::setGUIclientId(QString id) +void MessangerController::setGUIclientId(QString id_GUIclient) { - GUIclientId = id; + GUIclientId = id_GUIclient; for(MessangerWidget* widget : listWidgets) { @@ -130,10 +130,17 @@ void MessangerController::slot_receiveMessage(ClientMessage clientMessage) } } -void MessangerController::slot_reinitMessangers(QList listTrainees) +void MessangerController::slot_reinitMessangers(QList listUsers) { for(MessangerWidget* widget : listWidgets) { - widget->reinitMessangerWidget(listTrainees); + for(User user : listUsers) + { + if(user.getID() == widget->getIDuserRemote()) + { + widget->reinitMessangerWidget(user); + break; + } + } } } diff --git a/InstructorsAndTrainees/messanger/messangercontroller.h b/InstructorsAndTrainees/messanger/messangercontroller.h index 524338d..20099b3 100644 --- a/InstructorsAndTrainees/messanger/messangercontroller.h +++ b/InstructorsAndTrainees/messanger/messangercontroller.h @@ -20,17 +20,17 @@ public: ~MessangerController(); public: - MessangerWidget* newWidget(QWidget *parent, Trainee* trainee, QVBoxLayout* boxLayout); + MessangerWidget* newWidget(QWidget *parent, User* user, QVBoxLayout* boxLayout); void deleteWidget(MessangerWidget* msgWdgt); void deleteAllWidgets(); - void setGUIclientId(QString id); + void setGUIclientId(QString id_GUIclient); public slots: void slot_sendMessage(ClientMessage clientMessage); void slot_receiveMessage(ClientMessage clientMessage); - void slot_reinitMessangers(QList listTrainees); + void slot_reinitMessangers(QList listUsers); private: ConnectorToServer* connectorToServer; diff --git a/InstructorsAndTrainees/messanger/messangerwidget.cpp b/InstructorsAndTrainees/messanger/messangerwidget.cpp index 87e0966..9654468 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.cpp +++ b/InstructorsAndTrainees/messanger/messangerwidget.cpp @@ -27,32 +27,32 @@ MessangerWidget::~MessangerWidget() delete ui; } -void MessangerWidget::setOneTrainee(Trainee trainee) +void MessangerWidget::initUserRemote(User user) { - this->trainee = trainee; + userRemote = user; - addTabDialogMessenger(trainee); + addTabDialogMessenger(userRemote); } -void MessangerWidget::reinitMessangerWidget(QList listTrainees) +void MessangerWidget::reinitMessangerWidget(User user) { - for(Trainee traineeUpdate: listTrainees) + if(userRemote.getID() == user.getID()) { - if(trainee.getID() == traineeUpdate.getID()) - { - trainee = traineeUpdate; + userRemote = user; - //Обновляем статус залогинивания - updateLoggedIn(trainee.getLoggedIn()); - - break; - } + //Обновляем статус залогинивания + updateLoggedIn(userRemote.getLoggedIn()); } } -void MessangerWidget::initGUIclientId(QString id_client) +void MessangerWidget::initGUIclientId(QString id_GUIclient) { - currGUIclientId = id_client; + currGUIclientId = id_GUIclient; +} + +int MessangerWidget::getIDuserRemote() +{ + return userRemote.getID(); } void MessangerWidget::showSendedMessage(ClientMessage clientMessage) @@ -63,31 +63,31 @@ void MessangerWidget::showSendedMessage(ClientMessage clientMessage) void MessangerWidget::showReceivedMessage(ClientMessage clientMessage) { - if(QString::number(trainee.getID()) == clientMessage.fromId) + if(QString::number(userRemote.getID()) == clientMessage.fromId) tabDialogMessenger->addMsgWidgetRemote(clientMessage.Text); } -void MessangerWidget::addTabDialogMessenger(Trainee trainee) +void MessangerWidget::addTabDialogMessenger(User user) { if(!tabDialogMessenger) {//Диалога еще не существует - tabDialogMessenger = new TabDialogMessenger(trainee.getLogin(),QString::number(trainee.getID()), this); + tabDialogMessenger = new TabDialogMessenger(user.getLogin(), QString::number(user.getID()), this); //Добавляем новую вкладку диалога - int index = ui->tabWidget->addTab(tabDialogMessenger, tr("Trainee") + ": " + trainee.getName() + " (" + trainee.getLogin() + ")"); + int index = ui->tabWidget->addTab(tabDialogMessenger, tr("User") + ": " + user.getName() + " (" + user.getLogin() + ")"); //Обновляем статус залогинивания - updateLoggedIn(trainee.getLoggedIn()); + updateLoggedIn(user.getLoggedIn()); } else {//Диалог уже существует //Проверяем наличие диалога с этим клиентом - if(tabDialogMessenger->getUserLogin() == trainee.getLogin()) + if(tabDialogMessenger->getUserLogin() == user.getLogin()) { //Обновляем статус залогинивания - updateLoggedIn(trainee.getLoggedIn()); + updateLoggedIn(user.getLoggedIn()); } } } @@ -105,7 +105,7 @@ void MessangerWidget::on_btnSend_clicked() { QString text = ui->editMsg->toPlainText(); QString from = currGUIclientId; - QString to = QString::number(trainee.getID()); + QString to = QString::number(userRemote.getID()); ClientMessage message = ClientMessage(from, to, text); emit signal_sendMessage(message); diff --git a/InstructorsAndTrainees/messanger/messangerwidget.h b/InstructorsAndTrainees/messanger/messangerwidget.h index c9ce4ad..57e170a 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.h +++ b/InstructorsAndTrainees/messanger/messangerwidget.h @@ -3,7 +3,7 @@ #include #include -#include +#include #include "Datas.h" #include "tabdialogmessenger.h" @@ -24,15 +24,16 @@ public: ~MessangerWidget(); public: - void setOneTrainee(Trainee trainee); - void reinitMessangerWidget(QList listTrainees); - void initGUIclientId(QString id_client); + void initUserRemote(User user); + void reinitMessangerWidget(User user); + void initGUIclientId(QString id_GUIclient); + int getIDuserRemote(); void showSendedMessage(ClientMessage clientMessage); void showReceivedMessage(ClientMessage clientMessage); private: - void addTabDialogMessenger(Trainee trainee); + void addTabDialogMessenger(User user); void updateLoggedIn(bool loggedIn); private slots: @@ -50,7 +51,7 @@ protected: private: TabDialogMessenger* tabDialogMessenger; - Trainee trainee; + User userRemote; QString currGUIclientId; //id этого клиента QTranslator qtLanguageTranslator;