diff --git a/InstructorsAndTrainees/messanger/messangerwidget.cpp b/InstructorsAndTrainees/messanger/messangerwidget.cpp index e1f19a9..9a84952 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.cpp +++ b/InstructorsAndTrainees/messanger/messangerwidget.cpp @@ -11,6 +11,7 @@ MessangerWidget::MessangerWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MessangerWidget), + tabDialogMessenger(nullptr), selectedUserLogin(""), selectedUserId("") { @@ -26,31 +27,30 @@ MessangerWidget::MessangerWidget(QWidget *parent) : MessangerWidget::~MessangerWidget() { + delete tabDialogMessenger; delete ui; } void MessangerWidget::addMsgFromClient(Trainee trainee, QString text) { //Пробуем добавить вкладку диалога с клиентом (если вдруг еще нет) - addTabDialogMessenger(trainee); + //addTabDialogMessenger(trainee); //Ищем нужный диалог QString login = trainee.getLogin(); - foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger) - { - if(tabDialog->getUserLogin() == trainee.getLogin()) - {//Есть такой - //Добавляем в существующую вкладку - ui->tabWidget->setCurrentIndex(getIndexTab(login)); - tabDialog->addMsgWidgetRemote(text); - //Делаем ее текущей - ui->tabWidget->setCurrentIndex(getIndexTab(login)); + if(tabDialogMessenger->getUserLogin() == trainee.getLogin()) + {//Есть такой - selectedUserLogin = login; - selectedUserId = QString::number(trainee.getID()); - return; - } + //Добавляем в существующую вкладку + ui->tabWidget->setCurrentIndex(getIndexTab(login)); + tabDialogMessenger->addMsgWidgetRemote(text); + //Делаем ее текущей + //ui->tabWidget->setCurrentIndex(getIndexTab(login)); + + selectedUserLogin = login; + selectedUserId = QString::number(trainee.getID()); + return; } } @@ -61,36 +61,34 @@ void MessangerWidget::initialize(QString id) void MessangerWidget::addTabDialogMessenger(Trainee trainee) { - if(listTabDialogMessenger.count() == 0) + if(!tabDialogMessenger) {//Самая первая вкладка, делаем ее активной selectedUserLogin = trainee.getLogin(); selectedUserId = QString::number(trainee.getID()); ui->btnSend->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()); 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) @@ -107,17 +105,14 @@ int MessangerWidget::getIndexTab(QString login) void MessangerWidget::showSendedMessage(QString text) { //Ищем нужный диалог - foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger) + if(tabDialogMessenger->getUserLogin() == selectedUserLogin) { - if(tabDialog->getUserLogin() == selectedUserLogin) - { - //Добавляем в существующую вкладку - tabDialog->addMsgWidgetLocal(text); - //Делаем ее активной - ui->tabWidget->setCurrentIndex(getIndexTab(selectedUserLogin)); + //Добавляем в существующую вкладку + tabDialogMessenger->addMsgWidgetLocal(text); + //Делаем ее активной + ui->tabWidget->setCurrentIndex(getIndexTab(selectedUserLogin)); - return; - } + return; } } @@ -144,17 +139,6 @@ void MessangerWidget::on_btnSend_clicked() ui->editMsg->clear(); } -void MessangerWidget::getTabDialogMessengerByID(QString id_user) -{ - //Ищем нужный диалог - foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger) - { - if(tabDialog->getUserId() == id_user) - { - } - } -} - void MessangerWidget::slot_LanguageChanged(QString language) { qtLanguageTranslator.load(QString("translationsMy/ServerLMS_") + language, "."); diff --git a/InstructorsAndTrainees/messanger/messangerwidget.h b/InstructorsAndTrainees/messanger/messangerwidget.h index d1e8b6a..81ded88 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.h +++ b/InstructorsAndTrainees/messanger/messangerwidget.h @@ -30,9 +30,7 @@ public: void addMsgFromClient(Trainee trainee, QString text); void initialize(QString id); - void addTabDialogMessenger(Trainee trainee); - int getIndexTab(QString login); void showSendedMessage(QString text); @@ -56,8 +54,6 @@ public: void initMessangerWidget(QList listTrainees); //? - void getTabDialogMessengerByID(QString id_user); - private: virtual void keyPressEvent(QKeyEvent *event) override; @@ -65,8 +61,8 @@ private: private: Ui::MessangerWidget *ui; - QList listTabDialogMessenger; - //QList listTrainees; //? + //QList listTabDialogMessenger; + TabDialogMessenger* tabDialogMessenger; Trainee trainee; QString selectedUserLogin; //Логин клиента текущего диалога QString selectedUserId; //id клиента текущего диалога