Рефакт6 Мессенджера

This commit is contained in:
2025-09-09 14:45:50 +03:00
parent 588f921a73
commit deb7938ff8
2 changed files with 39 additions and 59 deletions

View File

@@ -11,6 +11,7 @@
MessangerWidget::MessangerWidget(QWidget *parent) : MessangerWidget::MessangerWidget(QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::MessangerWidget), ui(new Ui::MessangerWidget),
tabDialogMessenger(nullptr),
selectedUserLogin(""), selectedUserLogin(""),
selectedUserId("") selectedUserId("")
{ {
@@ -26,33 +27,32 @@ MessangerWidget::MessangerWidget(QWidget *parent) :
MessangerWidget::~MessangerWidget() MessangerWidget::~MessangerWidget()
{ {
delete tabDialogMessenger;
delete ui; delete ui;
} }
void MessangerWidget::addMsgFromClient(Trainee trainee, QString text) void MessangerWidget::addMsgFromClient(Trainee trainee, QString text)
{ {
//Пробуем добавить вкладку диалога с клиентом (если вдруг еще нет) //Пробуем добавить вкладку диалога с клиентом (если вдруг еще нет)
addTabDialogMessenger(trainee); //addTabDialogMessenger(trainee);
//Ищем нужный диалог //Ищем нужный диалог
QString login = trainee.getLogin(); QString login = trainee.getLogin();
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{ if(tabDialogMessenger->getUserLogin() == trainee.getLogin())
if(tabDialog->getUserLogin() == trainee.getLogin())
{//Есть такой {//Есть такой
//Добавляем в существующую вкладку //Добавляем в существующую вкладку
ui->tabWidget->setCurrentIndex(getIndexTab(login)); ui->tabWidget->setCurrentIndex(getIndexTab(login));
tabDialog->addMsgWidgetRemote(text); tabDialogMessenger->addMsgWidgetRemote(text);
//Делаем ее текущей //Делаем ее текущей
ui->tabWidget->setCurrentIndex(getIndexTab(login)); //ui->tabWidget->setCurrentIndex(getIndexTab(login));
selectedUserLogin = login; selectedUserLogin = login;
selectedUserId = QString::number(trainee.getID()); selectedUserId = QString::number(trainee.getID());
return; return;
} }
} }
}
void MessangerWidget::initialize(QString id) void MessangerWidget::initialize(QString id)
{ {
@@ -61,36 +61,34 @@ void MessangerWidget::initialize(QString id)
void MessangerWidget::addTabDialogMessenger(Trainee trainee) void MessangerWidget::addTabDialogMessenger(Trainee trainee)
{ {
if(listTabDialogMessenger.count() == 0) if(!tabDialogMessenger)
{//Самая первая вкладка, делаем ее активной {//Самая первая вкладка, делаем ее активной
selectedUserLogin = trainee.getLogin(); selectedUserLogin = trainee.getLogin();
selectedUserId = QString::number(trainee.getID()); selectedUserId = QString::number(trainee.getID());
ui->btnSend->setEnabled(true); ui->btnSend->setEnabled(true);
ui->editMsg->setEnabled(true); ui->editMsg->setEnabled(true);
}
//Проверяем наличие диалога с этим клиентом //Диалога для этого клиента еще не существует
foreach(TabDialogMessenger* dialogMsg, listTabDialogMessenger)
//Помещаем новый диалог в список диалогов
tabDialogMessenger = new TabDialogMessenger(trainee.getLogin(),QString::number(trainee.getID()), this);
//Добавляем новую вкладку диалога
int index = ui->tabWidget->addTab(tabDialogMessenger, tr("Trainee") + ": " + trainee.getName() + " (" + trainee.getLogin() + ")");
//Обновляем статус залогинивания
updateLoggedIn(trainee.getLoggedIn());
}
else
{ {
if(dialogMsg->getUserLogin() == trainee.getLogin()) //Проверяем наличие диалога с этим клиентом
if(tabDialogMessenger->getUserLogin() == trainee.getLogin())
{//Диалог для этого клиента уже существует {//Диалог для этого клиента уже существует
//Обновляем статус залогинивания //Обновляем статус залогинивания
updateLoggedIn(trainee.getLoggedIn()); updateLoggedIn(trainee.getLoggedIn());
return; return;
} }
} }
//Диалога для этого клиента еще не существует
//Помещаем новый диалог в список диалогов
TabDialogMessenger* tabDialog = new TabDialogMessenger(trainee.getLogin(),QString::number(trainee.getID()), this);
listTabDialogMessenger.append(tabDialog);
//Добавляем новую вкладку диалога
int index = ui->tabWidget->addTab(tabDialog, tr("Trainee") + ": " + trainee.getName() + " (" + trainee.getLogin() + ")");
//Обновляем статус залогинивания
updateLoggedIn(trainee.getLoggedIn());
} }
int MessangerWidget::getIndexTab(QString login) int MessangerWidget::getIndexTab(QString login)
@@ -107,19 +105,16 @@ int MessangerWidget::getIndexTab(QString login)
void MessangerWidget::showSendedMessage(QString text) void MessangerWidget::showSendedMessage(QString text)
{ {
//Ищем нужный диалог //Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger) if(tabDialogMessenger->getUserLogin() == selectedUserLogin)
{
if(tabDialog->getUserLogin() == selectedUserLogin)
{ {
//Добавляем в существующую вкладку //Добавляем в существующую вкладку
tabDialog->addMsgWidgetLocal(text); tabDialogMessenger->addMsgWidgetLocal(text);
//Делаем ее активной //Делаем ее активной
ui->tabWidget->setCurrentIndex(getIndexTab(selectedUserLogin)); ui->tabWidget->setCurrentIndex(getIndexTab(selectedUserLogin));
return; return;
} }
} }
}
void MessangerWidget::setOneTrainee(Trainee trainee) void MessangerWidget::setOneTrainee(Trainee trainee)
{ {
@@ -144,17 +139,6 @@ void MessangerWidget::on_btnSend_clicked()
ui->editMsg->clear(); ui->editMsg->clear();
} }
void MessangerWidget::getTabDialogMessengerByID(QString id_user)
{
//Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
if(tabDialog->getUserId() == id_user)
{
}
}
}
void MessangerWidget::slot_LanguageChanged(QString language) void MessangerWidget::slot_LanguageChanged(QString language)
{ {
qtLanguageTranslator.load(QString("translationsMy/ServerLMS_") + language, "."); qtLanguageTranslator.load(QString("translationsMy/ServerLMS_") + language, ".");

View File

@@ -30,9 +30,7 @@ public:
void addMsgFromClient(Trainee trainee, QString text); void addMsgFromClient(Trainee trainee, QString text);
void initialize(QString id); void initialize(QString id);
void addTabDialogMessenger(Trainee trainee); void addTabDialogMessenger(Trainee trainee);
int getIndexTab(QString login); int getIndexTab(QString login);
void showSendedMessage(QString text); void showSendedMessage(QString text);
@@ -56,8 +54,6 @@ public:
void initMessangerWidget(QList<Trainee> listTrainees); //? void initMessangerWidget(QList<Trainee> listTrainees); //?
void getTabDialogMessengerByID(QString id_user);
private: private:
virtual void keyPressEvent(QKeyEvent *event) override; virtual void keyPressEvent(QKeyEvent *event) override;
@@ -65,8 +61,8 @@ private:
private: private:
Ui::MessangerWidget *ui; Ui::MessangerWidget *ui;
QList <TabDialogMessenger*> listTabDialogMessenger; //QList <TabDialogMessenger*> listTabDialogMessenger;
//QList<Trainee> listTrainees; //? TabDialogMessenger* tabDialogMessenger;
Trainee trainee; Trainee trainee;
QString selectedUserLogin; //Логин клиента текущего диалога QString selectedUserLogin; //Логин клиента текущего диалога
QString selectedUserId; //id клиента текущего диалога QString selectedUserId; //id клиента текущего диалога