ref: segregate chat sytem

This commit is contained in:
semenov
2025-07-31 10:21:47 +03:00
parent 88239e8491
commit 5a07c144a1
24 changed files with 585 additions and 144 deletions

View File

@@ -11,8 +11,8 @@
MessangerWidget::MessangerWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MessangerWidget),
currLogin(""),
currId("")
selectedUserLogin(""),
selectedUserId("")
{
ui->setupUi(this);
@@ -38,7 +38,7 @@ void MessangerWidget::addMsgFromClient(Trainee trainee, QString text)
QString login = trainee.getLogin();
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{//Есть такой
if(tabDialog->getLogin() == trainee.getLogin())
if(tabDialog->getUserLogin() == trainee.getLogin())
{
//Добавляем в существующую вкладку
ui->tabWidget->setCurrentIndex(getIndexTab(login));
@@ -46,8 +46,8 @@ void MessangerWidget::addMsgFromClient(Trainee trainee, QString text)
//Делаем ее текущей
ui->tabWidget->setCurrentIndex(getIndexTab(login));
currLogin = login;
currId = QString::number(trainee.getID());
selectedUserLogin = login;
selectedUserId = QString::number(trainee.getID());
return;
}
}
@@ -62,9 +62,9 @@ void MessangerWidget::addTabDialogMessenger(Trainee trainee)
{
if(listTabDialogMessenger.count() == 0)
{//Самая первая вкладка, делаем ее активной
currLogin = trainee.getLogin();
currId = QString::number(trainee.getID());
emit signal_tabMessengerChanged(currLogin);
selectedUserLogin = trainee.getLogin();
selectedUserId = QString::number(trainee.getID());
emit signal_tabMessengerChanged(selectedUserLogin);
ui->btnSend->setEnabled(true);
ui->editMsg->setEnabled(true);
}
@@ -72,7 +72,7 @@ void MessangerWidget::addTabDialogMessenger(Trainee trainee)
//Проверяем наличие диалога с этим клиентом
foreach(TabDialogMessenger* dialogMsg, listTabDialogMessenger)
{
if(dialogMsg->getLogin() == trainee.getLogin())
if(dialogMsg->getUserLogin() == trainee.getLogin())
{//Диалог для этого клиента уже существует
//Обновляем статус залогинивания
if(trainee.getLoggedIn())
@@ -86,7 +86,7 @@ void MessangerWidget::addTabDialogMessenger(Trainee trainee)
//Диалога для этого клиента еще не существует
//Помещаем новый диалог в список диалогов
TabDialogMessenger* tabDialog = new TabDialogMessenger(0 /*TODO доделать передачу реального ID*/, trainee.getLogin(), this);
TabDialogMessenger* tabDialog = new TabDialogMessenger(trainee.getLogin(),QString::number(trainee.getID()), this);
listTabDialogMessenger.append(tabDialog);
//Добавляем новую вкладку диалога
@@ -103,7 +103,7 @@ void MessangerWidget::actualizationTabsDialogMessenger()
{
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
QString login = tabDialog->getLogin();
QString login = tabDialog->getUserLogin();
bool exist = false;
for(Trainee trainee : listTrainees)
@@ -136,7 +136,7 @@ int MessangerWidget::getIndexTab(QString login)
for(int index = 0; index < ui->tabWidget->count(); index++)
{
TabDialogMessenger* tabDialogMessenger = static_cast<TabDialogMessenger*>(ui->tabWidget->widget(index));
if(tabDialogMessenger->getLogin() == login)
if(tabDialogMessenger->getUserLogin() == login)
return index;
}
return -1;
@@ -154,19 +154,19 @@ void MessangerWidget::on_btnSend_clicked()
{
QString text = ui->editMsg->toPlainText();
emit signal_sendMessage(currClientId, currId, text);
emit signal_sendMessage(currClientId, selectedUserId, text);
ui->editMsg->clear();
//Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
if(tabDialog->getLogin() == currLogin)
if(tabDialog->getUserLogin() == selectedUserLogin)
{
//Добавляем в существующую вкладку
tabDialog->addMsgWidgetLocal(text);
//Делаем ее активной
ui->tabWidget->setCurrentIndex(getIndexTab(currLogin));
ui->tabWidget->setCurrentIndex(getIndexTab(selectedUserLogin));
return;
}
@@ -178,10 +178,12 @@ void MessangerWidget::on_tabWidget_currentChanged(int index)
//Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
if(getIndexTab(tabDialog->getLogin()) == index)
if(getIndexTab(tabDialog->getUserLogin()) == index)
{
currLogin = tabDialog->getLogin();
emit signal_tabMessengerChanged(currLogin);
selectedUserLogin = tabDialog->getUserLogin();
selectedUserId = tabDialog->getUserId();
emit signal_tabMessengerChanged(selectedUserLogin);
return;
}
}
@@ -192,7 +194,7 @@ void MessangerWidget::slot_traineeSelected(QString login)
//Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
if(tabDialog->getLogin() == login)
if(tabDialog->getUserLogin() == login)
{
//Активируем нужную вкладку
ui->tabWidget->setCurrentIndex(getIndexTab(login));