Подготовка мессенджера под юзеров

This commit is contained in:
2025-09-09 16:58:18 +03:00
parent e2f7ca88c1
commit 15325eb43a
8 changed files with 66 additions and 45 deletions

View File

@@ -3,7 +3,7 @@
#include "basicentity.h" #include "basicentity.h"
class User: public BasicEntity class DATABASELMS_EXPORT User: public BasicEntity
{ {
public: public:
User(); User();

View File

@@ -341,6 +341,13 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListInstructors(QList<Instructor> l
{ {
this->listInstructors = listInstructors; this->listInstructors = listInstructors;
emit signal_UpdateDB(true, false); emit signal_UpdateDB(true, false);
QList<User> listUsers;
for(Instructor instructor : listInstructors)
{
listUsers.append(instructor);
}
emit signal_reInitMessangerByUsers(listUsers);
} }
void ConnectorToServer::slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups) void ConnectorToServer::slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups)
@@ -353,7 +360,13 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTra
{ {
this->listTrainees = listTrainees; this->listTrainees = listTrainees;
emit signal_UpdateDB(false, true); emit signal_UpdateDB(false, true);
emit signal_InitMessanger(listTrainees);
QList<User> listUsers;
for(Trainee trainee : listTrainees)
{
listUsers.append(trainee);
}
emit signal_reInitMessangerByUsers(listUsers);
if (isLoggedIn) if (isLoggedIn)
{ {

View File

@@ -115,7 +115,7 @@ signals:
void signal_ConnectedToServer(bool state); void signal_ConnectedToServer(bool state);
void signal_InitMessanger(QList<Trainee> listTrainees); void signal_reInitMessangerByUsers(QList<User> listUsers);
void signal_receiveMessage(ClientMessage clientMessage); void signal_receiveMessage(ClientMessage clientMessage);
void sigSendAnswerToServer(QByteArray array); void sigSendAnswerToServer(QByteArray array);

View File

@@ -321,7 +321,7 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked()
{ {
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI); connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::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 else
ui->btnAuthorizationInstructor->setChecked(false); 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,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::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(); viewerTrainees->deactivate();
viewerInstructors->deactivate(); viewerInstructors->deactivate();

View File

@@ -13,7 +13,7 @@ MessangerController::~MessangerController()
deleteAllWidgets(); deleteAllWidgets();
} }
MessangerWidget *MessangerController::newWidget(QWidget *parent, Trainee* trainee, QVBoxLayout* boxLayout) MessangerWidget *MessangerController::newWidget(QWidget *parent, User* user, QVBoxLayout* boxLayout)
{ {
MessangerWidget *msgWdgt = new MessangerWidget(parent); MessangerWidget *msgWdgt = new MessangerWidget(parent);
@@ -24,12 +24,12 @@ MessangerWidget *MessangerController::newWidget(QWidget *parent, Trainee* traine
msgWdgt->initGUIclientId(GUIclientId); msgWdgt->initGUIclientId(GUIclientId);
if(trainee) if(user)
{ {
msgWdgt->setOneTrainee(*trainee); msgWdgt->initUserRemote(*user);
//Заполнение предыстории //Заполнение предыстории
int id_user = trainee->getID(); int id_user = user->getID();
QList<MessageOfMessanger>* list = nullptr; QList<MessageOfMessanger>* list = nullptr;
if(mapAlldialogsWithClients.contains(id_user)) if(mapAlldialogsWithClients.contains(id_user))
{//Уже есть {//Уже есть
@@ -70,9 +70,9 @@ void MessangerController::deleteAllWidgets()
listWidgets.clear(); listWidgets.clear();
} }
void MessangerController::setGUIclientId(QString id) void MessangerController::setGUIclientId(QString id_GUIclient)
{ {
GUIclientId = id; GUIclientId = id_GUIclient;
for(MessangerWidget* widget : listWidgets) for(MessangerWidget* widget : listWidgets)
{ {
@@ -130,10 +130,17 @@ void MessangerController::slot_receiveMessage(ClientMessage clientMessage)
} }
} }
void MessangerController::slot_reinitMessangers(QList<Trainee> listTrainees) void MessangerController::slot_reinitMessangers(QList<User> listUsers)
{ {
for(MessangerWidget* widget : listWidgets) for(MessangerWidget* widget : listWidgets)
{ {
widget->reinitMessangerWidget(listTrainees); for(User user : listUsers)
{
if(user.getID() == widget->getIDuserRemote())
{
widget->reinitMessangerWidget(user);
break;
}
}
} }
} }

View File

@@ -20,17 +20,17 @@ public:
~MessangerController(); ~MessangerController();
public: public:
MessangerWidget* newWidget(QWidget *parent, Trainee* trainee, QVBoxLayout* boxLayout); MessangerWidget* newWidget(QWidget *parent, User* user, QVBoxLayout* boxLayout);
void deleteWidget(MessangerWidget* msgWdgt); void deleteWidget(MessangerWidget* msgWdgt);
void deleteAllWidgets(); void deleteAllWidgets();
void setGUIclientId(QString id); void setGUIclientId(QString id_GUIclient);
public slots: public slots:
void slot_sendMessage(ClientMessage clientMessage); void slot_sendMessage(ClientMessage clientMessage);
void slot_receiveMessage(ClientMessage clientMessage); void slot_receiveMessage(ClientMessage clientMessage);
void slot_reinitMessangers(QList<Trainee> listTrainees); void slot_reinitMessangers(QList<User> listUsers);
private: private:
ConnectorToServer* connectorToServer; ConnectorToServer* connectorToServer;

View File

@@ -27,32 +27,32 @@ MessangerWidget::~MessangerWidget()
delete ui; 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<Trainee> listTrainees) void MessangerWidget::reinitMessangerWidget(User user)
{ {
for(Trainee traineeUpdate: listTrainees) if(userRemote.getID() == user.getID())
{ {
if(trainee.getID() == traineeUpdate.getID()) userRemote = user;
{
trainee = traineeUpdate;
//Обновляем статус залогинивания //Обновляем статус залогинивания
updateLoggedIn(trainee.getLoggedIn()); updateLoggedIn(userRemote.getLoggedIn());
break;
}
} }
} }
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) void MessangerWidget::showSendedMessage(ClientMessage clientMessage)
@@ -63,31 +63,31 @@ void MessangerWidget::showSendedMessage(ClientMessage clientMessage)
void MessangerWidget::showReceivedMessage(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); tabDialogMessenger->addMsgWidgetRemote(clientMessage.Text);
} }
void MessangerWidget::addTabDialogMessenger(Trainee trainee) void MessangerWidget::addTabDialogMessenger(User user)
{ {
if(!tabDialogMessenger) 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 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 text = ui->editMsg->toPlainText();
QString from = currGUIclientId; QString from = currGUIclientId;
QString to = QString::number(trainee.getID()); QString to = QString::number(userRemote.getID());
ClientMessage message = ClientMessage(from, to, text); ClientMessage message = ClientMessage(from, to, text);
emit signal_sendMessage(message); emit signal_sendMessage(message);

View File

@@ -3,7 +3,7 @@
#include <QWidget> #include <QWidget>
#include <QTranslator> #include <QTranslator>
#include <trainee.h> #include <user.h>
#include "Datas.h" #include "Datas.h"
#include "tabdialogmessenger.h" #include "tabdialogmessenger.h"
@@ -24,15 +24,16 @@ public:
~MessangerWidget(); ~MessangerWidget();
public: public:
void setOneTrainee(Trainee trainee); void initUserRemote(User user);
void reinitMessangerWidget(QList<Trainee> listTrainees); void reinitMessangerWidget(User user);
void initGUIclientId(QString id_client); void initGUIclientId(QString id_GUIclient);
int getIDuserRemote();
void showSendedMessage(ClientMessage clientMessage); void showSendedMessage(ClientMessage clientMessage);
void showReceivedMessage(ClientMessage clientMessage); void showReceivedMessage(ClientMessage clientMessage);
private: private:
void addTabDialogMessenger(Trainee trainee); void addTabDialogMessenger(User user);
void updateLoggedIn(bool loggedIn); void updateLoggedIn(bool loggedIn);
private slots: private slots:
@@ -50,7 +51,7 @@ protected:
private: private:
TabDialogMessenger* tabDialogMessenger; TabDialogMessenger* tabDialogMessenger;
Trainee trainee; User userRemote;
QString currGUIclientId; //id этого клиента QString currGUIclientId; //id этого клиента
QTranslator qtLanguageTranslator; QTranslator qtLanguageTranslator;