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:
@@ -76,18 +76,18 @@ QByteArray DataParser::createAuthMessage(ClientAutorization *auth)
|
||||
return array;
|
||||
}
|
||||
|
||||
QByteArray DataParser::createToClientMessage(ToClientMessage *toClientMessage)
|
||||
QByteArray DataParser::createMessage(ClientMessage *clientMessage)
|
||||
{
|
||||
QByteArray array;
|
||||
QXmlStreamWriter xmlWriter(&array);
|
||||
|
||||
xmlWriter.setAutoFormatting(true);
|
||||
xmlWriter.writeStartDocument();
|
||||
xmlWriter.writeStartElement("ToClientMessage");
|
||||
xmlWriter.writeStartElement("ClientMessage");
|
||||
|
||||
xmlWriter.writeAttribute("id", QString::number(toClientMessage->id));
|
||||
xmlWriter.writeAttribute("Login", toClientMessage->Login);
|
||||
xmlWriter.writeAttribute("Text", toClientMessage->Text);
|
||||
xmlWriter.writeAttribute("From",clientMessage->fromId);
|
||||
xmlWriter.writeAttribute("To", clientMessage->toId);
|
||||
xmlWriter.writeAttribute("Text", clientMessage->Text);
|
||||
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndElement();
|
||||
@@ -308,7 +308,7 @@ void DataParser::createAuthData(ServerAuthorization *serverAuth)
|
||||
xmlWriter.writeAttribute("InstructorName",serverAuth->InstructorName);
|
||||
xmlWriter.writeAttribute("ClientName",serverAuth->ClientName);
|
||||
xmlWriter.writeAttribute("AccessType",serverAuth->AccessType);
|
||||
|
||||
xmlWriter.writeAttribute("id_client",serverAuth->Id);
|
||||
xmlWriter.writeEndElement();
|
||||
file.close();
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ public:
|
||||
void createFileDataList(QList<FileData> fileDataList,QString filename);
|
||||
|
||||
QByteArray createAuthMessage(ClientAutorization *auth);
|
||||
QByteArray createToClientMessage(ToClientMessage *toClientMessage);
|
||||
QByteArray createMessage(ClientMessage *toClientMessage);
|
||||
QByteArray createQueryToDBMessage(ClientQueryToDB *queryToDB, int id = 0, void* data = nullptr);
|
||||
QByteArray createQueryTasksXMLMessage(QString type);
|
||||
QByteArray createDeAuthMessage(ClientDeAutorization *deAuth);
|
||||
|
||||
@@ -496,12 +496,17 @@ void RecognizeSystem::xmlParser(QByteArray array)
|
||||
if (name == "Login"){
|
||||
serverAuth->Login = value;
|
||||
}
|
||||
|
||||
if (name == "id_client")
|
||||
{
|
||||
serverAuth->Id = value;
|
||||
}
|
||||
}
|
||||
|
||||
emit sigAuth(serverAuth);
|
||||
}
|
||||
|
||||
if(xmlReader.name() == "ServerMessage"){
|
||||
if(xmlReader.name() == "ClientMessage"){
|
||||
|
||||
ClientMessage *clientMessage = new ClientMessage;
|
||||
|
||||
@@ -510,15 +515,20 @@ void RecognizeSystem::xmlParser(QByteArray array)
|
||||
QString name = attr.name().toString();
|
||||
QString value = attr.value().toString();
|
||||
|
||||
if (name == "Login"){
|
||||
clientMessage->Login = value;
|
||||
if (name == "From"){
|
||||
clientMessage->fromId = value;
|
||||
}
|
||||
|
||||
if (name == "To"){
|
||||
clientMessage->toId = value;
|
||||
}
|
||||
|
||||
if (name == "Text"){
|
||||
clientMessage->Text = value;
|
||||
}
|
||||
}
|
||||
|
||||
emit signal_MessageForGUI(clientMessage->Login, clientMessage->Text);
|
||||
emit signal_ReceiveMessage(clientMessage->fromId, clientMessage->toId,clientMessage->Text);
|
||||
}
|
||||
|
||||
if(xmlReader.name() == "ServerDeAuthorization"){
|
||||
|
||||
@@ -41,7 +41,7 @@ signals:
|
||||
void sigSocketWaitForReadyRead(int waitTime);
|
||||
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_ListGroups(QList<Group> listGroups);
|
||||
|
||||
@@ -19,6 +19,7 @@ public:
|
||||
bool Result;
|
||||
QString AccessType;
|
||||
QString Login;
|
||||
QString Id;
|
||||
};
|
||||
class ServerDeAuthorization{
|
||||
public:
|
||||
@@ -73,15 +74,8 @@ public:
|
||||
class ClientMessage
|
||||
{
|
||||
public:
|
||||
QString Login;
|
||||
QString Text;
|
||||
};
|
||||
|
||||
class ToClientMessage
|
||||
{
|
||||
public:
|
||||
int id;
|
||||
QString Login;
|
||||
QString fromId;
|
||||
QString toId;
|
||||
QString Text;
|
||||
};
|
||||
|
||||
|
||||
@@ -81,19 +81,19 @@ bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id, void* dat
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ConnectorToServer::sendMessageForClient(int id, QString login, QString text)
|
||||
bool ConnectorToServer::sendMessage(QString fromId, QString toId, QString text)
|
||||
{
|
||||
if (!client->getIsConnected())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
ToClientMessage *toClientMessage = new ToClientMessage;
|
||||
toClientMessage->id = id;
|
||||
toClientMessage->Login = login;
|
||||
toClientMessage->Text = text;
|
||||
ClientMessage *clientMessage = new ClientMessage;
|
||||
clientMessage->fromId = fromId;
|
||||
clientMessage->toId = toId;
|
||||
clientMessage->Text = text;
|
||||
|
||||
QByteArray array = dataParser->createToClientMessage(toClientMessage);
|
||||
QByteArray array = dataParser->createMessage(clientMessage);
|
||||
emit signal_sendXMLmsgGUItoServer(array);
|
||||
|
||||
return true;
|
||||
@@ -372,11 +372,9 @@ void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QByteArray array)
|
||||
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);
|
||||
if(id)
|
||||
sendMessageForClient(id, login, text);
|
||||
sendMessage(fromId, toId, text);
|
||||
}
|
||||
|
||||
void ConnectorToServer::showServerList(QList<StreamingVersionData *> *serverList)
|
||||
@@ -412,7 +410,7 @@ void ConnectorToServer::bindConnection()
|
||||
|
||||
connect(recognizeSystem,&RecognizeSystem::sigAuth,this,&ConnectorToServer::sigLoginResult);
|
||||
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::sigSetVersion,versionContainer,&VersionContainer::setServerVersionData);
|
||||
//connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB,this,&ConnectorToServer::slot_AnswerQueryToDB);
|
||||
|
||||
@@ -27,7 +27,7 @@ public:
|
||||
bool deAuthorizationInstructorLocal(QString login);
|
||||
|
||||
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);
|
||||
|
||||
@@ -79,7 +79,7 @@ public slots:
|
||||
void slot_AnswerQueryTasksXML_FIM(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 slot_HashReady();
|
||||
@@ -108,7 +108,7 @@ signals:
|
||||
|
||||
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);
|
||||
|
||||
private:
|
||||
|
||||
@@ -75,8 +75,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
||||
//connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
|
||||
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, messangerWidget, &MessangerWidget::slot_traineeSelected);
|
||||
connect(messangerWidget, &MessangerWidget::signal_tabMessengerChanged, viewerTrainees, &ViewerTrainees::slot_tabMessengerChanged);
|
||||
connect(messangerWidget, &MessangerWidget::signal_msgToClientReady, connectorToServer, &ConnectorToServer::slot_msgToClientReady);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_msgFromClientReady,messangerWidget,&MessangerWidget::slot_msgFromClientReady);
|
||||
connect(messangerWidget, &MessangerWidget::signal_sendMessage, connectorToServer, &ConnectorToServer::slot_sendMessage);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_receiveMessage,messangerWidget,&MessangerWidget::slot_showMessage);
|
||||
|
||||
connect(fimTasksWidget, &FIMtasksWidget::signal_AssignedTask, viewerTrainees, &ViewerTrainees::slot_waitAnimationWidgetShowWithPlayFIM);
|
||||
connect(ammTasksWidget, &AMMtasksWidget::signal_AssignedTask, viewerTrainees, &ViewerTrainees::slot_waitAnimationWidgetShowWithPlayAMM);
|
||||
@@ -193,6 +193,7 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA
|
||||
{
|
||||
loginInstructorLoggedInLocal = serverAuth->Login;
|
||||
nameInstructorLoggedInLocal = serverAuth->ClientName;
|
||||
idInstructorLoggedInLocal = serverAuth->Id;
|
||||
|
||||
if(loginInstructorLoggedInLocal == QStringLiteral("admin"))
|
||||
adminMode = true;
|
||||
@@ -217,7 +218,7 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA
|
||||
|
||||
connectorToServer->sendQueryTasksXML("fim");
|
||||
connectorToServer->sendQueryTasksXML("amm");
|
||||
|
||||
messangerWidget->initialize(idInstructorLoggedInLocal);
|
||||
//QMessageBox::information(this, tr("Instructor authorization"), tr("Successfully!"));
|
||||
}
|
||||
else
|
||||
|
||||
@@ -101,6 +101,7 @@ private:
|
||||
bool adminMode;
|
||||
QString loginInstructorLoggedInLocal;
|
||||
QString nameInstructorLoggedInLocal;
|
||||
QString idInstructorLoggedInLocal;
|
||||
|
||||
QTranslator qtLanguageTranslator;
|
||||
QString language;
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
MessangerWidget::MessangerWidget(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::MessangerWidget),
|
||||
currLogin("")
|
||||
currLogin(""),
|
||||
currId("")
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
@@ -37,7 +38,7 @@ void MessangerWidget::addMsgFromClient(Trainee trainee, QString text)
|
||||
QString login = trainee.getLogin();
|
||||
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
|
||||
{//Есть такой
|
||||
if(tabDialog->getLogin() == login)
|
||||
if(tabDialog->getLogin() == trainee.getLogin())
|
||||
{
|
||||
//Добавляем в существующую вкладку
|
||||
ui->tabWidget->setCurrentIndex(getIndexTab(login));
|
||||
@@ -46,16 +47,23 @@ void MessangerWidget::addMsgFromClient(Trainee trainee, QString text)
|
||||
ui->tabWidget->setCurrentIndex(getIndexTab(login));
|
||||
|
||||
currLogin = login;
|
||||
currId = QString::number(trainee.getID());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MessangerWidget::initialize(QString id)
|
||||
{
|
||||
currClientId = id;
|
||||
}
|
||||
|
||||
void MessangerWidget::addTabDialogMessenger(Trainee trainee)
|
||||
{
|
||||
if(listTabDialogMessenger.count() == 0)
|
||||
{//Самая первая вкладка, делаем ее активной
|
||||
currLogin = trainee.getLogin();
|
||||
currId = QString::number(trainee.getID());
|
||||
emit signal_tabMessengerChanged(currLogin);
|
||||
ui->btnSend->setEnabled(true);
|
||||
ui->editMsg->setEnabled(true);
|
||||
@@ -146,7 +154,7 @@ void MessangerWidget::on_btnSend_clicked()
|
||||
{
|
||||
QString text = ui->editMsg->toPlainText();
|
||||
|
||||
emit signal_msgToClientReady(currLogin, text);
|
||||
emit signal_sendMessage(currClientId, currId, text);
|
||||
|
||||
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)
|
||||
{
|
||||
if(trainee.getLogin() == login)
|
||||
if(QString::number(trainee.getID()) == fromId)
|
||||
{
|
||||
addMsgFromClient(trainee, text);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ public:
|
||||
enum ETypeMsg{fromClient, toClient};
|
||||
|
||||
void addMsgFromClient(Trainee trainee, QString text);
|
||||
void initialize(QString id);
|
||||
|
||||
void addTabDialogMessenger(Trainee trainee);
|
||||
void actualizationTabsDialogMessenger();
|
||||
@@ -45,7 +46,7 @@ private slots:
|
||||
|
||||
signals:
|
||||
//сигнал о готовности нового сообщения на отправку клиенту
|
||||
void signal_msgToClientReady(QString login, QString text);
|
||||
void signal_sendMessage(QString fromId, QString toId, QString text);
|
||||
//сигнал об изменении вкладки диалога с клиентом (TabDialogMessenger)
|
||||
void signal_tabMessengerChanged(QString login);
|
||||
|
||||
@@ -57,7 +58,7 @@ public slots:
|
||||
//слот обработки сигнала о выборе обучаемого
|
||||
void slot_traineeSelected(QString login);
|
||||
//слот о приходе нового сообщения от клиента
|
||||
void slot_msgFromClientReady(QString login, QString text);
|
||||
void slot_showMessage(QString fromId, QString toId, QString text);
|
||||
|
||||
private:
|
||||
virtual void keyPressEvent(QKeyEvent *event) override;
|
||||
@@ -67,6 +68,8 @@ private:
|
||||
QList <TabDialogMessenger*> listTabDialogMessenger;
|
||||
QList<Trainee> listTrainees;
|
||||
QString currLogin; //Логин клиента текущего диалога
|
||||
QString currId; //id клиента текущего диалога
|
||||
QString currClientId; //id этого клиента
|
||||
QTranslator qtLanguageTranslator;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user