mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
feat: add chatting by ID
This commit is contained in:
@@ -18,6 +18,7 @@ kanban-plugin: board
|
|||||||
- [ ] Подсчет учебного времени - дельта между включением и выключением
|
- [ ] Подсчет учебного времени - дельта между включением и выключением
|
||||||
- [ ] Сервер при сворачивании превращается в трей
|
- [ ] Сервер при сворачивании превращается в трей
|
||||||
- [ ] выдавать trainee_id при авторизации и вытащить передачу Trainee ID из тасок
|
- [ ] выдавать trainee_id при авторизации и вытащить передачу Trainee ID из тасок
|
||||||
|
- [ ] убрать clientMap из serverLMS Widget
|
||||||
|
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|||||||
@@ -76,18 +76,18 @@ QByteArray DataParser::createAuthMessage(ClientAutorization *auth)
|
|||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray DataParser::createToClientMessage(ToClientMessage *toClientMessage)
|
QByteArray DataParser::createMessage(ClientMessage *clientMessage)
|
||||||
{
|
{
|
||||||
QByteArray array;
|
QByteArray array;
|
||||||
QXmlStreamWriter xmlWriter(&array);
|
QXmlStreamWriter xmlWriter(&array);
|
||||||
|
|
||||||
xmlWriter.setAutoFormatting(true);
|
xmlWriter.setAutoFormatting(true);
|
||||||
xmlWriter.writeStartDocument();
|
xmlWriter.writeStartDocument();
|
||||||
xmlWriter.writeStartElement("ToClientMessage");
|
xmlWriter.writeStartElement("ClientMessage");
|
||||||
|
|
||||||
xmlWriter.writeAttribute("id", QString::number(toClientMessage->id));
|
xmlWriter.writeAttribute("From",clientMessage->fromId);
|
||||||
xmlWriter.writeAttribute("Login", toClientMessage->Login);
|
xmlWriter.writeAttribute("To", clientMessage->toId);
|
||||||
xmlWriter.writeAttribute("Text", toClientMessage->Text);
|
xmlWriter.writeAttribute("Text", clientMessage->Text);
|
||||||
|
|
||||||
xmlWriter.writeEndElement();
|
xmlWriter.writeEndElement();
|
||||||
xmlWriter.writeEndElement();
|
xmlWriter.writeEndElement();
|
||||||
@@ -308,7 +308,7 @@ void DataParser::createAuthData(ServerAuthorization *serverAuth)
|
|||||||
xmlWriter.writeAttribute("InstructorName",serverAuth->InstructorName);
|
xmlWriter.writeAttribute("InstructorName",serverAuth->InstructorName);
|
||||||
xmlWriter.writeAttribute("ClientName",serverAuth->ClientName);
|
xmlWriter.writeAttribute("ClientName",serverAuth->ClientName);
|
||||||
xmlWriter.writeAttribute("AccessType",serverAuth->AccessType);
|
xmlWriter.writeAttribute("AccessType",serverAuth->AccessType);
|
||||||
|
xmlWriter.writeAttribute("id_client",serverAuth->Id);
|
||||||
xmlWriter.writeEndElement();
|
xmlWriter.writeEndElement();
|
||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public:
|
|||||||
void createFileDataList(QList<FileData> fileDataList,QString filename);
|
void createFileDataList(QList<FileData> fileDataList,QString filename);
|
||||||
|
|
||||||
QByteArray createAuthMessage(ClientAutorization *auth);
|
QByteArray createAuthMessage(ClientAutorization *auth);
|
||||||
QByteArray createToClientMessage(ToClientMessage *toClientMessage);
|
QByteArray createMessage(ClientMessage *toClientMessage);
|
||||||
QByteArray createQueryToDBMessage(ClientQueryToDB *queryToDB, int id = 0, void* data = nullptr);
|
QByteArray createQueryToDBMessage(ClientQueryToDB *queryToDB, int id = 0, void* data = nullptr);
|
||||||
QByteArray createQueryTasksXMLMessage(QString type);
|
QByteArray createQueryTasksXMLMessage(QString type);
|
||||||
QByteArray createDeAuthMessage(ClientDeAutorization *deAuth);
|
QByteArray createDeAuthMessage(ClientDeAutorization *deAuth);
|
||||||
|
|||||||
@@ -496,12 +496,17 @@ void RecognizeSystem::xmlParser(QByteArray array)
|
|||||||
if (name == "Login"){
|
if (name == "Login"){
|
||||||
serverAuth->Login = value;
|
serverAuth->Login = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (name == "id_client")
|
||||||
|
{
|
||||||
|
serverAuth->Id = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
emit sigAuth(serverAuth);
|
emit sigAuth(serverAuth);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(xmlReader.name() == "ServerMessage"){
|
if(xmlReader.name() == "ClientMessage"){
|
||||||
|
|
||||||
ClientMessage *clientMessage = new ClientMessage;
|
ClientMessage *clientMessage = new ClientMessage;
|
||||||
|
|
||||||
@@ -510,15 +515,20 @@ void RecognizeSystem::xmlParser(QByteArray array)
|
|||||||
QString name = attr.name().toString();
|
QString name = attr.name().toString();
|
||||||
QString value = attr.value().toString();
|
QString value = attr.value().toString();
|
||||||
|
|
||||||
if (name == "Login"){
|
if (name == "From"){
|
||||||
clientMessage->Login = value;
|
clientMessage->fromId = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (name == "To"){
|
||||||
|
clientMessage->toId = value;
|
||||||
|
}
|
||||||
|
|
||||||
if (name == "Text"){
|
if (name == "Text"){
|
||||||
clientMessage->Text = value;
|
clientMessage->Text = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
emit signal_MessageForGUI(clientMessage->Login, clientMessage->Text);
|
emit signal_ReceiveMessage(clientMessage->fromId, clientMessage->toId,clientMessage->Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(xmlReader.name() == "ServerDeAuthorization"){
|
if(xmlReader.name() == "ServerDeAuthorization"){
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ signals:
|
|||||||
void sigSocketWaitForReadyRead(int waitTime);
|
void sigSocketWaitForReadyRead(int waitTime);
|
||||||
void sigStartCompare();
|
void sigStartCompare();
|
||||||
|
|
||||||
void signal_MessageForGUI(QString login, QString text);
|
void signal_ReceiveMessage(QString fromId,QString toId, QString text);
|
||||||
|
|
||||||
void sigAnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors);
|
void sigAnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors);
|
||||||
void sigAnswerQueryToDB_ListGroups(QList<Group> listGroups);
|
void sigAnswerQueryToDB_ListGroups(QList<Group> listGroups);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public:
|
|||||||
bool Result;
|
bool Result;
|
||||||
QString AccessType;
|
QString AccessType;
|
||||||
QString Login;
|
QString Login;
|
||||||
|
QString Id;
|
||||||
};
|
};
|
||||||
class ServerDeAuthorization{
|
class ServerDeAuthorization{
|
||||||
public:
|
public:
|
||||||
@@ -73,15 +74,8 @@ public:
|
|||||||
class ClientMessage
|
class ClientMessage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QString Login;
|
QString fromId;
|
||||||
QString Text;
|
QString toId;
|
||||||
};
|
|
||||||
|
|
||||||
class ToClientMessage
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
int id;
|
|
||||||
QString Login;
|
|
||||||
QString Text;
|
QString Text;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -81,19 +81,19 @@ bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id, void* dat
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ConnectorToServer::sendMessageForClient(int id, QString login, QString text)
|
bool ConnectorToServer::sendMessage(QString fromId, QString toId, QString text)
|
||||||
{
|
{
|
||||||
if (!client->getIsConnected())
|
if (!client->getIsConnected())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ToClientMessage *toClientMessage = new ToClientMessage;
|
ClientMessage *clientMessage = new ClientMessage;
|
||||||
toClientMessage->id = id;
|
clientMessage->fromId = fromId;
|
||||||
toClientMessage->Login = login;
|
clientMessage->toId = toId;
|
||||||
toClientMessage->Text = text;
|
clientMessage->Text = text;
|
||||||
|
|
||||||
QByteArray array = dataParser->createToClientMessage(toClientMessage);
|
QByteArray array = dataParser->createMessage(clientMessage);
|
||||||
emit signal_sendXMLmsgGUItoServer(array);
|
emit signal_sendXMLmsgGUItoServer(array);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -372,11 +372,9 @@ void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QByteArray array)
|
|||||||
emit signal_UpdateTasksAMM();
|
emit signal_UpdateTasksAMM();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConnectorToServer::slot_msgToClientReady(QString login, QString text)
|
void ConnectorToServer::slot_sendMessage(QString fromId, QString toId, QString text)
|
||||||
{
|
{
|
||||||
int id = getIdTraineeByLogin(login);
|
sendMessage(fromId, toId, text);
|
||||||
if(id)
|
|
||||||
sendMessageForClient(id, login, text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConnectorToServer::showServerList(QList<StreamingVersionData *> *serverList)
|
void ConnectorToServer::showServerList(QList<StreamingVersionData *> *serverList)
|
||||||
@@ -412,7 +410,7 @@ void ConnectorToServer::bindConnection()
|
|||||||
|
|
||||||
connect(recognizeSystem,&RecognizeSystem::sigAuth,this,&ConnectorToServer::sigLoginResult);
|
connect(recognizeSystem,&RecognizeSystem::sigAuth,this,&ConnectorToServer::sigLoginResult);
|
||||||
connect(recognizeSystem,&RecognizeSystem::sigDeAuth,this,&ConnectorToServer::sigDeLoginResult);
|
connect(recognizeSystem,&RecognizeSystem::sigDeAuth,this,&ConnectorToServer::sigDeLoginResult);
|
||||||
connect(recognizeSystem,&RecognizeSystem::signal_MessageForGUI,this,&ConnectorToServer::signal_msgFromClientReady);
|
connect(recognizeSystem,&RecognizeSystem::signal_ReceiveMessage,this,&ConnectorToServer::signal_receiveMessage);
|
||||||
connect(recognizeSystem,&RecognizeSystem::sigShowServerDataList,this,&ConnectorToServer::showServerList);
|
connect(recognizeSystem,&RecognizeSystem::sigShowServerDataList,this,&ConnectorToServer::showServerList);
|
||||||
connect (recognizeSystem,&RecognizeSystem::sigSetVersion,versionContainer,&VersionContainer::setServerVersionData);
|
connect (recognizeSystem,&RecognizeSystem::sigSetVersion,versionContainer,&VersionContainer::setServerVersionData);
|
||||||
//connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB,this,&ConnectorToServer::slot_AnswerQueryToDB);
|
//connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB,this,&ConnectorToServer::slot_AnswerQueryToDB);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public:
|
|||||||
bool deAuthorizationInstructorLocal(QString login);
|
bool deAuthorizationInstructorLocal(QString login);
|
||||||
|
|
||||||
bool sendQueryToDB(TypeQueryToDB typeQuery, int id = 0, void* data = nullptr);
|
bool sendQueryToDB(TypeQueryToDB typeQuery, int id = 0, void* data = nullptr);
|
||||||
bool sendMessageForClient(int id, QString login, QString text);
|
bool sendMessage(QString fromId, QString toId, QString text);
|
||||||
|
|
||||||
bool sendQueryTasksXML(QString type);
|
bool sendQueryTasksXML(QString type);
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ public slots:
|
|||||||
void slot_AnswerQueryTasksXML_FIM(QByteArray array);
|
void slot_AnswerQueryTasksXML_FIM(QByteArray array);
|
||||||
void slot_AnswerQueryTasksXML_AMM(QByteArray array);
|
void slot_AnswerQueryTasksXML_AMM(QByteArray array);
|
||||||
|
|
||||||
void slot_msgToClientReady(QString login, QString text);
|
void slot_sendMessage(QString fromId, QString toId, QString text);
|
||||||
void showServerList(QList<StreamingVersionData*> *serverList);
|
void showServerList(QList<StreamingVersionData*> *serverList);
|
||||||
|
|
||||||
void slot_HashReady();
|
void slot_HashReady();
|
||||||
@@ -108,7 +108,7 @@ signals:
|
|||||||
|
|
||||||
void signal_InitMessanger(QList<Trainee> listTrainees);
|
void signal_InitMessanger(QList<Trainee> listTrainees);
|
||||||
|
|
||||||
void signal_msgFromClientReady(QString login, QString text);
|
void signal_receiveMessage(QString fromId, QString toId, QString text);
|
||||||
void sigSendAnswerToServer(QByteArray array);
|
void sigSendAnswerToServer(QByteArray array);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -75,8 +75,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
|||||||
//connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
|
//connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
|
||||||
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, messangerWidget, &MessangerWidget::slot_traineeSelected);
|
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, messangerWidget, &MessangerWidget::slot_traineeSelected);
|
||||||
connect(messangerWidget, &MessangerWidget::signal_tabMessengerChanged, viewerTrainees, &ViewerTrainees::slot_tabMessengerChanged);
|
connect(messangerWidget, &MessangerWidget::signal_tabMessengerChanged, viewerTrainees, &ViewerTrainees::slot_tabMessengerChanged);
|
||||||
connect(messangerWidget, &MessangerWidget::signal_msgToClientReady, connectorToServer, &ConnectorToServer::slot_msgToClientReady);
|
connect(messangerWidget, &MessangerWidget::signal_sendMessage, connectorToServer, &ConnectorToServer::slot_sendMessage);
|
||||||
connect(connectorToServer,&ConnectorToServer::signal_msgFromClientReady,messangerWidget,&MessangerWidget::slot_msgFromClientReady);
|
connect(connectorToServer,&ConnectorToServer::signal_receiveMessage,messangerWidget,&MessangerWidget::slot_showMessage);
|
||||||
|
|
||||||
connect(fimTasksWidget, &FIMtasksWidget::signal_AssignedTask, viewerTrainees, &ViewerTrainees::slot_waitAnimationWidgetShowWithPlayFIM);
|
connect(fimTasksWidget, &FIMtasksWidget::signal_AssignedTask, viewerTrainees, &ViewerTrainees::slot_waitAnimationWidgetShowWithPlayFIM);
|
||||||
connect(ammTasksWidget, &AMMtasksWidget::signal_AssignedTask, viewerTrainees, &ViewerTrainees::slot_waitAnimationWidgetShowWithPlayAMM);
|
connect(ammTasksWidget, &AMMtasksWidget::signal_AssignedTask, viewerTrainees, &ViewerTrainees::slot_waitAnimationWidgetShowWithPlayAMM);
|
||||||
@@ -193,6 +193,7 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA
|
|||||||
{
|
{
|
||||||
loginInstructorLoggedInLocal = serverAuth->Login;
|
loginInstructorLoggedInLocal = serverAuth->Login;
|
||||||
nameInstructorLoggedInLocal = serverAuth->ClientName;
|
nameInstructorLoggedInLocal = serverAuth->ClientName;
|
||||||
|
idInstructorLoggedInLocal = serverAuth->Id;
|
||||||
|
|
||||||
if(loginInstructorLoggedInLocal == QStringLiteral("admin"))
|
if(loginInstructorLoggedInLocal == QStringLiteral("admin"))
|
||||||
adminMode = true;
|
adminMode = true;
|
||||||
@@ -217,7 +218,7 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA
|
|||||||
|
|
||||||
connectorToServer->sendQueryTasksXML("fim");
|
connectorToServer->sendQueryTasksXML("fim");
|
||||||
connectorToServer->sendQueryTasksXML("amm");
|
connectorToServer->sendQueryTasksXML("amm");
|
||||||
|
messangerWidget->initialize(idInstructorLoggedInLocal);
|
||||||
//QMessageBox::information(this, tr("Instructor authorization"), tr("Successfully!"));
|
//QMessageBox::information(this, tr("Instructor authorization"), tr("Successfully!"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ private:
|
|||||||
bool adminMode;
|
bool adminMode;
|
||||||
QString loginInstructorLoggedInLocal;
|
QString loginInstructorLoggedInLocal;
|
||||||
QString nameInstructorLoggedInLocal;
|
QString nameInstructorLoggedInLocal;
|
||||||
|
QString idInstructorLoggedInLocal;
|
||||||
|
|
||||||
QTranslator qtLanguageTranslator;
|
QTranslator qtLanguageTranslator;
|
||||||
QString language;
|
QString language;
|
||||||
|
|||||||
@@ -11,7 +11,8 @@
|
|||||||
MessangerWidget::MessangerWidget(QWidget *parent) :
|
MessangerWidget::MessangerWidget(QWidget *parent) :
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
ui(new Ui::MessangerWidget),
|
ui(new Ui::MessangerWidget),
|
||||||
currLogin("")
|
currLogin(""),
|
||||||
|
currId("")
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
@@ -37,7 +38,7 @@ void MessangerWidget::addMsgFromClient(Trainee trainee, QString text)
|
|||||||
QString login = trainee.getLogin();
|
QString login = trainee.getLogin();
|
||||||
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
|
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
|
||||||
{//Есть такой
|
{//Есть такой
|
||||||
if(tabDialog->getLogin() == login)
|
if(tabDialog->getLogin() == trainee.getLogin())
|
||||||
{
|
{
|
||||||
//Добавляем в существующую вкладку
|
//Добавляем в существующую вкладку
|
||||||
ui->tabWidget->setCurrentIndex(getIndexTab(login));
|
ui->tabWidget->setCurrentIndex(getIndexTab(login));
|
||||||
@@ -46,16 +47,23 @@ void MessangerWidget::addMsgFromClient(Trainee trainee, QString text)
|
|||||||
ui->tabWidget->setCurrentIndex(getIndexTab(login));
|
ui->tabWidget->setCurrentIndex(getIndexTab(login));
|
||||||
|
|
||||||
currLogin = login;
|
currLogin = login;
|
||||||
|
currId = QString::number(trainee.getID());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessangerWidget::initialize(QString id)
|
||||||
|
{
|
||||||
|
currClientId = id;
|
||||||
|
}
|
||||||
|
|
||||||
void MessangerWidget::addTabDialogMessenger(Trainee trainee)
|
void MessangerWidget::addTabDialogMessenger(Trainee trainee)
|
||||||
{
|
{
|
||||||
if(listTabDialogMessenger.count() == 0)
|
if(listTabDialogMessenger.count() == 0)
|
||||||
{//Самая первая вкладка, делаем ее активной
|
{//Самая первая вкладка, делаем ее активной
|
||||||
currLogin = trainee.getLogin();
|
currLogin = trainee.getLogin();
|
||||||
|
currId = QString::number(trainee.getID());
|
||||||
emit signal_tabMessengerChanged(currLogin);
|
emit signal_tabMessengerChanged(currLogin);
|
||||||
ui->btnSend->setEnabled(true);
|
ui->btnSend->setEnabled(true);
|
||||||
ui->editMsg->setEnabled(true);
|
ui->editMsg->setEnabled(true);
|
||||||
@@ -146,7 +154,7 @@ void MessangerWidget::on_btnSend_clicked()
|
|||||||
{
|
{
|
||||||
QString text = ui->editMsg->toPlainText();
|
QString text = ui->editMsg->toPlainText();
|
||||||
|
|
||||||
emit signal_msgToClientReady(currLogin, text);
|
emit signal_sendMessage(currClientId, currId, text);
|
||||||
|
|
||||||
ui->editMsg->clear();
|
ui->editMsg->clear();
|
||||||
|
|
||||||
@@ -216,12 +224,15 @@ void MessangerWidget::slot_InitMessanger(QList<Trainee> listTrainees)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessangerWidget::slot_msgFromClientReady(QString login, QString text)
|
void MessangerWidget::slot_showMessage(QString fromId, QString toId, QString text)
|
||||||
{
|
{
|
||||||
for(Trainee trainee: listTrainees)
|
for(Trainee trainee: listTrainees)
|
||||||
{
|
{
|
||||||
if(trainee.getLogin() == login)
|
if(QString::number(trainee.getID()) == fromId)
|
||||||
|
{
|
||||||
addMsgFromClient(trainee, text);
|
addMsgFromClient(trainee, text);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ public:
|
|||||||
enum ETypeMsg{fromClient, toClient};
|
enum ETypeMsg{fromClient, toClient};
|
||||||
|
|
||||||
void addMsgFromClient(Trainee trainee, QString text);
|
void addMsgFromClient(Trainee trainee, QString text);
|
||||||
|
void initialize(QString id);
|
||||||
|
|
||||||
void addTabDialogMessenger(Trainee trainee);
|
void addTabDialogMessenger(Trainee trainee);
|
||||||
void actualizationTabsDialogMessenger();
|
void actualizationTabsDialogMessenger();
|
||||||
@@ -45,7 +46,7 @@ private slots:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
//сигнал о готовности нового сообщения на отправку клиенту
|
//сигнал о готовности нового сообщения на отправку клиенту
|
||||||
void signal_msgToClientReady(QString login, QString text);
|
void signal_sendMessage(QString fromId, QString toId, QString text);
|
||||||
//сигнал об изменении вкладки диалога с клиентом (TabDialogMessenger)
|
//сигнал об изменении вкладки диалога с клиентом (TabDialogMessenger)
|
||||||
void signal_tabMessengerChanged(QString login);
|
void signal_tabMessengerChanged(QString login);
|
||||||
|
|
||||||
@@ -57,7 +58,7 @@ public slots:
|
|||||||
//слот обработки сигнала о выборе обучаемого
|
//слот обработки сигнала о выборе обучаемого
|
||||||
void slot_traineeSelected(QString login);
|
void slot_traineeSelected(QString login);
|
||||||
//слот о приходе нового сообщения от клиента
|
//слот о приходе нового сообщения от клиента
|
||||||
void slot_msgFromClientReady(QString login, QString text);
|
void slot_showMessage(QString fromId, QString toId, QString text);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void keyPressEvent(QKeyEvent *event) override;
|
virtual void keyPressEvent(QKeyEvent *event) override;
|
||||||
@@ -67,6 +68,8 @@ private:
|
|||||||
QList <TabDialogMessenger*> listTabDialogMessenger;
|
QList <TabDialogMessenger*> listTabDialogMessenger;
|
||||||
QList<Trainee> listTrainees;
|
QList<Trainee> listTrainees;
|
||||||
QString currLogin; //Логин клиента текущего диалога
|
QString currLogin; //Логин клиента текущего диалога
|
||||||
|
QString currId; //id клиента текущего диалога
|
||||||
|
QString currClientId; //id этого клиента
|
||||||
QTranslator qtLanguageTranslator;
|
QTranslator qtLanguageTranslator;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -97,11 +97,22 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString getId()
|
||||||
|
{
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setId(QString value)
|
||||||
|
{
|
||||||
|
id = value;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString name;
|
QString name;
|
||||||
QString address;
|
QString address;
|
||||||
QString port;
|
QString port;
|
||||||
QString fullName;
|
QString fullName;
|
||||||
|
QString id;
|
||||||
|
|
||||||
QString login;
|
QString login;
|
||||||
bool ready;
|
bool ready;
|
||||||
@@ -112,3 +123,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif // CLIENT_H
|
#endif // CLIENT_H
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -98,14 +98,8 @@ public:
|
|||||||
class ClientMessage
|
class ClientMessage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QString Text;
|
QString From;
|
||||||
};
|
QString To;
|
||||||
|
|
||||||
class ToClientMessage
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
int id;
|
|
||||||
QString Login;
|
|
||||||
QString Text;
|
QString Text;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -43,19 +43,19 @@ QByteArray ClientAnswerParser::deAuthorization(bool result, QString login)
|
|||||||
return dataParser->xmlAnswer(listTag);
|
return dataParser->xmlAnswer(listTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray ClientAnswerParser::message(QString text, QString login)
|
QByteArray ClientAnswerParser::message(QString loginFrom,QString loginTo,QString text)
|
||||||
{
|
{
|
||||||
QList<SXmlAnswerTag> listTag;
|
QList<SXmlAnswerTag> listTag;
|
||||||
SAttribute attribute2;
|
QList<SAttribute> listAttr;
|
||||||
|
SAttribute attribute1;
|
||||||
|
attribute1 = {"From",loginFrom};
|
||||||
|
listAttr.append(attribute1);
|
||||||
|
attribute1 = {"To",loginTo};
|
||||||
|
listAttr.append(attribute1);
|
||||||
|
attribute1 = {"Text",text};
|
||||||
|
listAttr.append(attribute1);
|
||||||
|
|
||||||
SAttribute attribute1 = {"Text", text};
|
SXmlAnswerTag tag = {"ClientMessage", listAttr};
|
||||||
QList<SAttribute> listAttr = {attribute1};
|
|
||||||
if(login != "")
|
|
||||||
{
|
|
||||||
attribute2 = {"Login", login};
|
|
||||||
listAttr.append(attribute2);
|
|
||||||
}
|
|
||||||
SXmlAnswerTag tag = {"ServerMessage", listAttr};
|
|
||||||
|
|
||||||
listTag.append(tag);
|
listTag.append(tag);
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ public:
|
|||||||
|
|
||||||
QByteArray authorization(bool result, QString instructorName, QString clientName, QString accessType, QString login, int id);
|
QByteArray authorization(bool result, QString instructorName, QString clientName, QString accessType, QString login, int id);
|
||||||
QByteArray deAuthorization(bool result, QString login);
|
QByteArray deAuthorization(bool result, QString login);
|
||||||
QByteArray message(QString text, QString login = "");
|
QByteArray message(QString loginFrom,QString loginTo,QString text);
|
||||||
QByteArray task(QString text);
|
QByteArray task(QString text);
|
||||||
QByteArray notify(QString code);
|
QByteArray notify(QString code);
|
||||||
QByteArray tasks(QStringList listTasks);
|
QByteArray tasks(QStringList listTasks);
|
||||||
|
|||||||
@@ -34,11 +34,6 @@ void ProcessParser::read(ClientHandler *client, QByteArray array)
|
|||||||
|
|
||||||
clientDeAuth(xmlReader,client);
|
clientDeAuth(xmlReader,client);
|
||||||
}
|
}
|
||||||
else if(xmlReader.name() == "ToClientMessage")
|
|
||||||
{//Отправка сообщения Клиенту
|
|
||||||
|
|
||||||
toClientMessage(xmlReader,client);
|
|
||||||
}
|
|
||||||
else if(xmlReader.name() == "QueryToDB")
|
else if(xmlReader.name() == "QueryToDB")
|
||||||
{//Запрос к базе данных от клиента
|
{//Запрос к базе данных от клиента
|
||||||
|
|
||||||
@@ -339,28 +334,6 @@ void ProcessParser::clientDeAuth(QXmlStreamReader &xmlReader,ClientHandler *clie
|
|||||||
processingSystem->processingClientDeAutorization(client, clientDeAutorization);
|
processingSystem->processingClientDeAutorization(client, clientDeAutorization);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessParser::toClientMessage(QXmlStreamReader &xmlReader,ClientHandler *client)
|
|
||||||
{
|
|
||||||
ToClientMessage toClientMessage;
|
|
||||||
|
|
||||||
/*Перебираем все атрибуты тега*/
|
|
||||||
foreach(const QXmlStreamAttribute &attr, xmlReader.attributes())
|
|
||||||
{
|
|
||||||
QString name = attr.name().toString();
|
|
||||||
QString value = attr.value().toString();
|
|
||||||
//addTextToLogger(name + ": " + value);
|
|
||||||
|
|
||||||
if(name == "id")
|
|
||||||
toClientMessage.id = value.toInt();
|
|
||||||
else if(name == "Text")
|
|
||||||
toClientMessage.Text = value;
|
|
||||||
else if(name == "Login")
|
|
||||||
toClientMessage.Login = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
processingSystem->processingToClientMessage(client, toClientMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client, QByteArray array)
|
void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client, QByteArray array)
|
||||||
{
|
{
|
||||||
ClientQueryToDB queryToDB;
|
ClientQueryToDB queryToDB;
|
||||||
@@ -521,9 +494,13 @@ void ProcessParser::clientMessage(QXmlStreamReader &xmlReader,ClientHandler *cli
|
|||||||
|
|
||||||
if (name == "Text")
|
if (name == "Text")
|
||||||
clientMessage.Text = value;
|
clientMessage.Text = value;
|
||||||
|
if (name == "From")
|
||||||
|
clientMessage.From = value;
|
||||||
|
if (name == "To")
|
||||||
|
clientMessage.To = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
processingSystem->processingFromClientMessage(client, clientMessage);
|
processingSystem->processingSendMessage(client, clientMessage);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -120,52 +120,20 @@ void CommonClientHandler::slot_sendPacketToAllClients(PacketType packetType)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CommonClientHandler::slot_msgToClientFromGUI(QString login, QString text)
|
void CommonClientHandler::slotSendMessage(QString idFrom, QString idTo, QString text)
|
||||||
{
|
{
|
||||||
QString textMsg = text;
|
QString textMsg = text;
|
||||||
|
|
||||||
QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(textMsg);
|
QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(idFrom,idTo,text);
|
||||||
|
|
||||||
//Проходим все открытые сокеты, ищем нужный
|
//Проходим все открытые сокеты, ищем нужный
|
||||||
foreach(int idSocket, clientsMap->keys())
|
foreach(int idSocket, clientsMap->keys())
|
||||||
{
|
{
|
||||||
ClientHandler *handler = clientsMap->value(idSocket);
|
ClientHandler *handler = clientsMap->value(idSocket);
|
||||||
if(handler->getClient()->getLogin() == login)
|
if(handler->getClient()->getId() == idTo)
|
||||||
{//Отправляем ему
|
|
||||||
|
|
||||||
handler->sendXmlAnswer(byteArrayMsg);
|
|
||||||
|
|
||||||
QString peerAddress = handler->getSocket()->peerAddress().toString();
|
|
||||||
QString peerPort = QString::number(handler->getSocket()->peerPort());
|
|
||||||
|
|
||||||
QString str = "Msg To Client [" + peerAddress + ":" + peerPort + "] : " + textMsg;
|
|
||||||
|
|
||||||
emit sigSendToLogger(str);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CommonClientHandler::slot_msgToGUIfromClient(QString login, QString text)
|
|
||||||
{
|
{
|
||||||
QString textMsg = text;
|
|
||||||
|
|
||||||
QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(textMsg, login);
|
|
||||||
|
|
||||||
//Проходим все открытые сокеты, ищем нужный
|
|
||||||
foreach(int idSocket, clientsMap->keys())
|
|
||||||
{
|
|
||||||
ClientHandler *handler = clientsMap->value(idSocket);;
|
|
||||||
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
|
|
||||||
{//Отправляем GUI-клиенту для отображения в Мессенджере
|
|
||||||
|
|
||||||
handler->sendXmlAnswer(byteArrayMsg, PacketType::TYPE_XMLANSWER);
|
handler->sendXmlAnswer(byteArrayMsg, PacketType::TYPE_XMLANSWER);
|
||||||
|
QString str = "Msg From Client [" + idFrom + " to " + idTo + "] : " + textMsg;
|
||||||
QString peerAddress = handler->getSocket()->peerAddress().toString();
|
|
||||||
QString peerPort = QString::number(handler->getSocket()->peerPort());
|
|
||||||
|
|
||||||
QString str = "Msg From Client [" + peerAddress + ":" + peerPort + "] : " + textMsg;
|
|
||||||
|
|
||||||
emit sigSendToLogger(str);
|
emit sigSendToLogger(str);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -24,9 +24,7 @@ public:
|
|||||||
void slot_StatusTasksAMMofTraineeChanged(int trainee_id);
|
void slot_StatusTasksAMMofTraineeChanged(int trainee_id);
|
||||||
void slot_StatusTasksFIMofTraineeChanged(int trainee_id);
|
void slot_StatusTasksFIMofTraineeChanged(int trainee_id);
|
||||||
void slot_sendPacketToAllClients(PacketType packetType);
|
void slot_sendPacketToAllClients(PacketType packetType);
|
||||||
//слот обработки сигнала о готовности нового сообщения на отправку клиенту от мессенджера
|
void slotSendMessage(QString loginFrom, QString loginTo, QString text);
|
||||||
void slot_msgToClientFromGUI(QString login, QString text);
|
|
||||||
void slot_msgToGUIfromClient(QString login, QString text);
|
|
||||||
void slot_sendTaskToClient(QString fullNameClient, QString textTask);
|
void slot_sendTaskToClient(QString fullNameClient, QString textTask);
|
||||||
signals:
|
signals:
|
||||||
void sigSendToLogger(QString text);
|
void sigSendToLogger(QString text);
|
||||||
|
|||||||
@@ -29,8 +29,7 @@ void ProcessingSystem::initialize(ServerLMSWidget *server,
|
|||||||
|
|
||||||
connect(this,&ProcessingSystem::sigUpdateListClients,server, &ServerLMSWidget::slotUpdateListClients,Qt::AutoConnection);
|
connect(this,&ProcessingSystem::sigUpdateListClients,server, &ServerLMSWidget::slotUpdateListClients,Qt::AutoConnection);
|
||||||
connect(this,&ProcessingSystem::sigSetData,updateController,&UpdateController::setDataInfo,Qt::AutoConnection);
|
connect(this,&ProcessingSystem::sigSetData,updateController,&UpdateController::setDataInfo,Qt::AutoConnection);
|
||||||
connect(this,&ProcessingSystem::signal_msgToClientReady,commonClientHandler, &CommonClientHandler::slot_msgToClientFromGUI);
|
connect(this,&ProcessingSystem::sigSendMessage,commonClientHandler, &CommonClientHandler::slotSendMessage,Qt::AutoConnection);
|
||||||
connect(this,&ProcessingSystem::signal_msgFromClientReady,commonClientHandler, &CommonClientHandler::slot_msgToGUIfromClient);
|
|
||||||
connect(this,&ProcessingSystem::sigLogMessage,logger,&Logger::addTextToLogger,Qt::QueuedConnection);
|
connect(this,&ProcessingSystem::sigLogMessage,logger,&Logger::addTextToLogger,Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,11 +58,12 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
|
|||||||
|
|
||||||
client->getClient()->setLogin(clientAutorization.Login);
|
client->getClient()->setLogin(clientAutorization.Login);
|
||||||
client->getClient()->setTypeClient(clientAutorization.TypeClient);
|
client->getClient()->setTypeClient(clientAutorization.TypeClient);
|
||||||
|
|
||||||
emit sigUpdateListClients();
|
emit sigUpdateListClients();
|
||||||
|
|
||||||
instructorName = providerDBLMS->getNameInstructorByLogin(clientAutorization.Login);
|
instructorName = providerDBLMS->getNameInstructorByLogin(clientAutorization.Login);
|
||||||
clientID = providerDBLMS->getIdInstructorByLogin(clientAutorization.Login);
|
clientID = providerDBLMS->getIdInstructorByLogin(clientAutorization.Login);
|
||||||
|
client->getClient()->setId(QString::number(clientID));
|
||||||
arrayAnswer = dataParser->ClientAnswer()->authorization(true, instructorName, instructorName, "instructor", clientAutorization.Login, clientID);
|
arrayAnswer = dataParser->ClientAnswer()->authorization(true, instructorName, instructorName, "instructor", clientAutorization.Login, clientID);
|
||||||
}
|
}
|
||||||
else if(clientAutorization.TypeClient != TypeClientAutorization::TYPE_GUI)
|
else if(clientAutorization.TypeClient != TypeClientAutorization::TYPE_GUI)
|
||||||
@@ -78,7 +78,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
|
|||||||
instructorName = providerDBLMS->getMainInstructorName();
|
instructorName = providerDBLMS->getMainInstructorName();
|
||||||
traineeName = providerDBLMS->getNameTraineeByLogin(clientAutorization.Login);
|
traineeName = providerDBLMS->getNameTraineeByLogin(clientAutorization.Login);
|
||||||
clientID = providerDBLMS->getIdTraineeByLogin(clientAutorization.Login);
|
clientID = providerDBLMS->getIdTraineeByLogin(clientAutorization.Login);
|
||||||
|
client->getClient()->setId(QString::number(clientID));
|
||||||
arrayAnswer = dataParser->ClientAnswer()->authorization(true, instructorName, traineeName, "trainee", clientAutorization.Login, clientID);
|
arrayAnswer = dataParser->ClientAnswer()->authorization(true, instructorName, traineeName, "trainee", clientAutorization.Login, clientID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -474,23 +474,9 @@ void ProcessingSystem::processingClientQueryTasksXML(ClientHandler *client, Clie
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessingSystem::processingToClientMessage(ClientHandler *client, ToClientMessage toClientMessage)
|
void ProcessingSystem::processingSendMessage(ClientHandler *client, ClientMessage clientMessage)
|
||||||
{
|
{
|
||||||
signal_msgToClientReady(toClientMessage.Login, toClientMessage.Text);
|
emit sigSendMessage(clientMessage.From, clientMessage.To, clientMessage.Text);
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
*/
|
|
||||||
|
|
||||||
signal_msgFromClientReady(client->getClient()->getLogin(), clientMessage.Text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessingSystem::processingClientNotify(ClientHandler *client, ClientNotify clientNotify)
|
void ProcessingSystem::processingClientNotify(ClientHandler *client, ClientNotify clientNotify)
|
||||||
|
|||||||
@@ -33,9 +33,8 @@ public:
|
|||||||
void processingClientDeAutorization(ClientHandler *client, ClientDeAutorization clientDeAutorization);
|
void processingClientDeAutorization(ClientHandler *client, ClientDeAutorization clientDeAutorization);
|
||||||
void processingClientQueryToDB(ClientHandler *client, ClientQueryToDB clientQueryToDB, int id = 0, void* data = nullptr);
|
void processingClientQueryToDB(ClientHandler *client, ClientQueryToDB clientQueryToDB, int id = 0, void* data = nullptr);
|
||||||
void processingClientQueryTasksXML(ClientHandler *client, ClientQueryTasksXML clientQueryTasksXML);
|
void processingClientQueryTasksXML(ClientHandler *client, ClientQueryTasksXML clientQueryTasksXML);
|
||||||
void processingToClientMessage(ClientHandler *client, ToClientMessage toClientMessage);
|
|
||||||
|
|
||||||
void processingFromClientMessage(ClientHandler *client, ClientMessage clientMessage);
|
void processingSendMessage(ClientHandler *client, ClientMessage clientMessage);
|
||||||
void processingClientNotify(ClientHandler *client, ClientNotify clientNotify);
|
void processingClientNotify(ClientHandler *client, ClientNotify clientNotify);
|
||||||
|
|
||||||
void setCurrentDataInfo(DataInfo *dataInfo);
|
void setCurrentDataInfo(DataInfo *dataInfo);
|
||||||
@@ -58,8 +57,7 @@ signals:
|
|||||||
void sigStatusTasksFIMofTraineeChanged(int trainee_id);
|
void sigStatusTasksFIMofTraineeChanged(int trainee_id);
|
||||||
void sigLogMessage(QString log);
|
void sigLogMessage(QString log);
|
||||||
void sigAddToMessanger(QString login,QString text);
|
void sigAddToMessanger(QString login,QString text);
|
||||||
void signal_msgToClientReady(QString login, QString text);
|
void sigSendMessage(QString loginFrom, QString loginTo, QString text);
|
||||||
void signal_msgFromClientReady(QString login, QString text);
|
|
||||||
void sigSetData(DataInfo *dataInfo);
|
void sigSetData(DataInfo *dataInfo);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ void SendSystem::setClient(Client *client,QTcpSocket *socket)
|
|||||||
|
|
||||||
void SendSystem::sendMessageBlock(QString message)
|
void SendSystem::sendMessageBlock(QString message)
|
||||||
{
|
{
|
||||||
auto messageBlock = emit sigSendXMLmessage(message);
|
auto messageBlock = emit sigSendNotify(message);
|
||||||
sendXmlAnswer(messageBlock);
|
sendXmlAnswer(messageBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public slots:
|
|||||||
signals:
|
signals:
|
||||||
void sigLoadHash();
|
void sigLoadHash();
|
||||||
void sigSendToLogger(QString message);
|
void sigSendToLogger(QString message);
|
||||||
QByteArray sigSendXMLmessage(QString message, QString login = "");
|
QByteArray sigSendXMLmessage(QString loginFrom, QString loginTo, QString text);
|
||||||
QByteArray sigSendNotify(QString message);
|
QByteArray sigSendNotify(QString message);
|
||||||
QByteArray sigSendVersion();
|
QByteArray sigSendVersion();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user