feat: add chatting by ID

This commit is contained in:
semenov
2025-07-30 11:30:55 +03:00
parent 5076da14e0
commit 88239e8491
23 changed files with 113 additions and 160 deletions

View File

@@ -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;
}
}
}

View File

@@ -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;
};