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:
@@ -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