Мессенджер полностью работает

This commit is contained in:
krivoshein
2024-12-17 12:54:43 +03:00
parent e393244bf7
commit a839f964fe
69 changed files with 724 additions and 605 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-12-16T17:46:50. -->
<!-- Written by QtCreator 4.11.1, 2024-12-17T12:54:17. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@@ -519,12 +519,18 @@ QByteArray DataParser::xmlAnswer_ClientQueryToDB_ListTasks(bool result, QList<Ta
return QByteArray();
}
QByteArray DataParser::xmlAnswer_message(QString text)
QByteArray DataParser::xmlAnswer_message(QString text, QString login)
{
QList<SXmlAnswerTag> listTag;
SAttribute attribute2;
SAttribute attribute1 = {"Text", text};
QList<SAttribute> listAttr = {attribute1};
if(login != "")
{
attribute2 = {"Login", login};
listAttr.append(attribute2);
}
SXmlAnswerTag tag = {"ServerMessage", listAttr};
listTag.append(tag);

View File

@@ -38,7 +38,7 @@ public:
QByteArray xmlAnswer_ClientQueryToDB_ListClassrooms(bool result, QList<Classroom> *listClassrooms);
QByteArray xmlAnswer_ClientQueryToDB_ListTasks(bool result, QList<Task> *listTasks);
QByteArray xmlAnswer_message(QString text);
QByteArray xmlAnswer_message(QString text, QString login = "");
QByteArray xmlAnswer_task(QString text);
QByteArray xmlAnswer_notify(QString code);
QByteArray xmlAnswer_tasks(QStringList listTasks);

View File

@@ -224,15 +224,16 @@ void ProcessingSystem::processingToClientMessage(ClientHandler *client, ToClient
void ProcessingSystem::processingFromClientMessage(ClientHandler *client, ClientMessage clientMessage)
{
/*
QString peerAddress = client->getSocket()->peerAddress().toString();
QString peerPort = QString::number(client->getSocket()->peerPort());
QString str = "Msg From Client [" + peerAddress + ":" + peerPort + "] : " + clientMessage.Text;
emit sigLogMessage(str);
*/
//Здесь нужно оттранслировать на ГУИ!
//emit sigAddToMessanger(client->getClient()->getLogin(), clientMessage.Text);
signal_msgFromClientReady(client->getClient()->getLogin(), clientMessage.Text);
}
void ProcessingSystem::processingClientNotify(ClientHandler *client, ClientNotify clientNotify)

View File

@@ -37,6 +37,7 @@ signals:
void sigLogMessage(QString log);
void sigAddToMessanger(QString login,QString text);
void signal_msgToClientReady(QString login, QString text);
void signal_msgFromClientReady(QString login, QString text);
private:
ServerLMSWidget *server;

View File

@@ -42,7 +42,7 @@ public slots:
signals:
void sigLoadHash();
void sigSendToLogger(QString message);
QByteArray sigSendXMLmessage(QString message);
QByteArray sigSendXMLmessage(QString message, QString login = "");
QByteArray sigSendNotify(QString message);
private:

View File

@@ -32,6 +32,8 @@ enum PacketType
TYPE_DISABLE = 11,
TYPE_FILESIZE = 20,
TYPE_XMLANSWER_MESSAGE_FOR_GUI = 90,
//xml-ответы на запросы к БД
TYPE_XMLANSWER_QUERY_DB__LIST_INSTRUCTORS = 100,
TYPE_XMLANSWER_QUERY_DB__LIST_GROUPS = 101,

View File

@@ -73,6 +73,7 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
connect(processingSystem,&ProcessingSystem::sigAuthChanged,this, &ServerLMSWidget::slot_AuthChanged);
connect(processingSystem,&ProcessingSystem::signal_msgToClientReady,this, &ServerLMSWidget::slot_msgToClientFromGUI);
connect(processingSystem,&ProcessingSystem::signal_msgFromClientReady,this, &ServerLMSWidget::slot_msgToGUIfromClient);
on_btnStartServer_clicked();
@@ -258,7 +259,7 @@ void ServerLMSWidget::slot_msgToGUIfromClient(QString login, QString text)
{
QString textMsg = text;
QByteArray byteArrayMsg = dataParser->xmlAnswer_message(textMsg);
QByteArray byteArrayMsg = dataParser->xmlAnswer_message(textMsg, login);
//Проходим все открытые сокеты, ищем нужный
foreach(int idSocket, clientsMap.keys())
@@ -267,7 +268,7 @@ void ServerLMSWidget::slot_msgToGUIfromClient(QString login, QString text)
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
{//Отправляем GUI-клиенту для отображения в Мессенджере
handler->sendXmlAnswer(byteArrayMsg);
handler->sendXmlAnswer(byteArrayMsg, PacketType::TYPE_XMLANSWER);
QString peerAddress = clientsMap[idSocket]->getSocket()->peerAddress().toString();
QString peerPort = QString::number(clientsMap[idSocket]->getSocket()->peerPort());