diff --git a/InstructorsAndTrainees/messanger/messangercontroller.cpp b/InstructorsAndTrainees/messanger/messangercontroller.cpp index e701a0d..bfebdf6 100644 --- a/InstructorsAndTrainees/messanger/messangercontroller.cpp +++ b/InstructorsAndTrainees/messanger/messangercontroller.cpp @@ -22,7 +22,7 @@ MessangerWidget *MessangerController::newWidget(QWidget *parent, Trainee* traine connect(msgWdgt, &MessangerWidget::signal_sendMessage, this, &MessangerController::slot_sendMessage); - msgWdgt->initialize(GUIclientId); + msgWdgt->initGUIclientId(GUIclientId); if(trainee) { @@ -38,7 +38,7 @@ MessangerWidget *MessangerController::newWidget(QWidget *parent, Trainee* traine for(MessageOfMessanger msg : *list) { if(msg.flLocal) - msgWdgt->showSendedMessage(msg.text); + msgWdgt->showSendedMessage(ClientMessage(GUIclientId, QString::number(id_user), msg.text)); else msgWdgt->showReceivedMessage(ClientMessage(QString::number(id_user), GUIclientId, msg.text)); } @@ -76,7 +76,7 @@ void MessangerController::setGUIclientId(QString id) for(MessangerWidget* widget : listWidgets) { - widget->initialize(GUIclientId); + widget->initGUIclientId(GUIclientId); } } @@ -102,7 +102,7 @@ void MessangerController::slot_sendMessage(ClientMessage clientMessage) for(MessangerWidget* widget : listWidgets) { - widget->showSendedMessage(clientMessage.Text); + widget->showSendedMessage(clientMessage); } } @@ -134,6 +134,6 @@ void MessangerController::slot_reinitMessangers(QList listTrainees) { for(MessangerWidget* widget : listWidgets) { - widget->initMessangerWidget(listTrainees); + widget->reinitMessangerWidget(listTrainees); } } diff --git a/InstructorsAndTrainees/messanger/messangerwidget.cpp b/InstructorsAndTrainees/messanger/messangerwidget.cpp index 9a84952..87e0966 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.cpp +++ b/InstructorsAndTrainees/messanger/messangerwidget.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -9,11 +8,10 @@ MessangerWidget::MessangerWidget(QWidget *parent) : - QWidget(parent), - ui(new Ui::MessangerWidget), + QWidget(parent), tabDialogMessenger(nullptr), - selectedUserLogin(""), - selectedUserId("") + currGUIclientId(""), + ui(new Ui::MessangerWidget) { ui->setupUi(this); @@ -21,8 +19,6 @@ MessangerWidget::MessangerWidget(QWidget *parent) : ui->tabWidget->removeTab(0); ui->btnSend->setObjectName("btnSend"); - ui->btnSend->setEnabled(false); - ui->editMsg->setEnabled(false); } MessangerWidget::~MessangerWidget() @@ -31,46 +27,51 @@ MessangerWidget::~MessangerWidget() delete ui; } -void MessangerWidget::addMsgFromClient(Trainee trainee, QString text) +void MessangerWidget::setOneTrainee(Trainee trainee) { - //Пробуем добавить вкладку диалога с клиентом (если вдруг еще нет) - //addTabDialogMessenger(trainee); + this->trainee = trainee; - //Ищем нужный диалог - QString login = trainee.getLogin(); + addTabDialogMessenger(trainee); +} - if(tabDialogMessenger->getUserLogin() == trainee.getLogin()) - {//Есть такой +void MessangerWidget::reinitMessangerWidget(QList listTrainees) +{ + for(Trainee traineeUpdate: listTrainees) + { + if(trainee.getID() == traineeUpdate.getID()) + { + trainee = traineeUpdate; - //Добавляем в существующую вкладку - ui->tabWidget->setCurrentIndex(getIndexTab(login)); - tabDialogMessenger->addMsgWidgetRemote(text); - //Делаем ее текущей - //ui->tabWidget->setCurrentIndex(getIndexTab(login)); + //Обновляем статус залогинивания + updateLoggedIn(trainee.getLoggedIn()); - selectedUserLogin = login; - selectedUserId = QString::number(trainee.getID()); - return; + break; + } } } -void MessangerWidget::initialize(QString id) +void MessangerWidget::initGUIclientId(QString id_client) { - currClientId = id; + currGUIclientId = id_client; +} + +void MessangerWidget::showSendedMessage(ClientMessage clientMessage) +{ + if(currGUIclientId == clientMessage.fromId) + tabDialogMessenger->addMsgWidgetLocal(clientMessage.Text); +} + +void MessangerWidget::showReceivedMessage(ClientMessage clientMessage) +{ + if(QString::number(trainee.getID()) == clientMessage.fromId) + tabDialogMessenger->addMsgWidgetRemote(clientMessage.Text); } void MessangerWidget::addTabDialogMessenger(Trainee trainee) { if(!tabDialogMessenger) - {//Самая первая вкладка, делаем ее активной - selectedUserLogin = trainee.getLogin(); - selectedUserId = QString::number(trainee.getID()); - ui->btnSend->setEnabled(true); - ui->editMsg->setEnabled(true); + {//Диалога еще не существует - //Диалога для этого клиента еще не существует - - //Помещаем новый диалог в список диалогов tabDialogMessenger = new TabDialogMessenger(trainee.getLogin(),QString::number(trainee.getID()), this); //Добавляем новую вкладку диалога @@ -80,99 +81,17 @@ void MessangerWidget::addTabDialogMessenger(Trainee trainee) updateLoggedIn(trainee.getLoggedIn()); } else - { + {//Диалог уже существует + //Проверяем наличие диалога с этим клиентом if(tabDialogMessenger->getUserLogin() == trainee.getLogin()) - {//Диалог для этого клиента уже существует + { //Обновляем статус залогинивания updateLoggedIn(trainee.getLoggedIn()); - return; } } } -int MessangerWidget::getIndexTab(QString login) -{ - for(int index = 0; index < ui->tabWidget->count(); index++) - { - TabDialogMessenger* tabDialogMessenger = static_cast(ui->tabWidget->widget(index)); - if(tabDialogMessenger->getUserLogin() == login) - return index; - } - return -1; -} - -void MessangerWidget::showSendedMessage(QString text) -{ - //Ищем нужный диалог - if(tabDialogMessenger->getUserLogin() == selectedUserLogin) - { - //Добавляем в существующую вкладку - tabDialogMessenger->addMsgWidgetLocal(text); - //Делаем ее активной - ui->tabWidget->setCurrentIndex(getIndexTab(selectedUserLogin)); - - return; - } -} - -void MessangerWidget::setOneTrainee(Trainee trainee) -{ - this->trainee = trainee; - - QList listTrainees; - - listTrainees.append(trainee); - - initMessangerWidget(listTrainees); -} - -void MessangerWidget::on_btnSend_clicked() -{ - QString text = ui->editMsg->toPlainText(); - QString from = currClientId; - QString to = selectedUserId; - - ClientMessage message = ClientMessage(from,to,text); - emit signal_sendMessage(message); - - ui->editMsg->clear(); -} - -void MessangerWidget::slot_LanguageChanged(QString language) -{ - qtLanguageTranslator.load(QString("translationsMy/ServerLMS_") + language, "."); - qApp->installTranslator(&qtLanguageTranslator); -} - -void MessangerWidget::initMessangerWidget(QList listTrainees) -{ - for(Trainee traineeUpdate: listTrainees) - { - if(trainee.getID() == traineeUpdate.getID()) - { - trainee = traineeUpdate; - break; - } - } - - addTabDialogMessenger(trainee); -} - -void MessangerWidget::showReceivedMessage(ClientMessage clientMessage) -{ - if(QString::number(trainee.getID()) == clientMessage.fromId) - addMsgFromClient(trainee, clientMessage.Text); -} - -void MessangerWidget::keyPressEvent(QKeyEvent *event) -{ - if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) - { - ui->btnSend->click(); - } -} - void MessangerWidget::updateLoggedIn(bool loggedIn) { //Обновляем статус залогинивания @@ -182,6 +101,26 @@ void MessangerWidget::updateLoggedIn(bool loggedIn) ui->tabWidget->setTabIcon(0, QIcon(":/resources/icons/circleGray.png")); } +void MessangerWidget::on_btnSend_clicked() +{ + QString text = ui->editMsg->toPlainText(); + QString from = currGUIclientId; + QString to = QString::number(trainee.getID()); + + ClientMessage message = ClientMessage(from, to, text); + emit signal_sendMessage(message); + + ui->editMsg->clear(); +} + +void MessangerWidget::keyPressEvent(QKeyEvent *event) +{ + if (event->key() == Qt::Key_Return) + { + ui->btnSend->click(); + } +} + void MessangerWidget::changeEvent(QEvent *event) { // В случае получения события изменения языка приложения diff --git a/InstructorsAndTrainees/messanger/messangerwidget.h b/InstructorsAndTrainees/messanger/messangerwidget.h index 81ded88..c9ce4ad 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.h +++ b/InstructorsAndTrainees/messanger/messangerwidget.h @@ -16,30 +16,24 @@ class MessangerWidget : public QWidget { Q_OBJECT +public: + enum ETypeMsg{fromClient, toClient}; + public: explicit MessangerWidget(QWidget *parent = nullptr); ~MessangerWidget(); -protected: - // Метод получения событий - // В нём будет производиться проверка события смены перевода приложения - void changeEvent(QEvent * event) override; - public: - enum ETypeMsg{fromClient, toClient}; - - void addMsgFromClient(Trainee trainee, QString text); - void initialize(QString id); - void addTabDialogMessenger(Trainee trainee); - int getIndexTab(QString login); - - void showSendedMessage(QString text); - void setOneTrainee(Trainee trainee); + void reinitMessangerWidget(QList listTrainees); + void initGUIclientId(QString id_client); -public slots: - //слот обработки сигнала о смене языка - void slot_LanguageChanged(QString language); + void showSendedMessage(ClientMessage clientMessage); + void showReceivedMessage(ClientMessage clientMessage); + +private: + void addTabDialogMessenger(Trainee trainee); + void updateLoggedIn(bool loggedIn); private slots: void on_btnSend_clicked(); @@ -48,26 +42,21 @@ signals: //сигнал о готовности нового сообщения на отправку клиенту void signal_sendMessage(ClientMessage clientMessage); -public: - void showReceivedMessage(ClientMessage clientMessage); - - - void initMessangerWidget(QList listTrainees); //? - private: virtual void keyPressEvent(QKeyEvent *event) override; - void updateLoggedIn(bool loggedIn); +protected: + void changeEvent(QEvent * event) override; private: - Ui::MessangerWidget *ui; - //QList listTabDialogMessenger; TabDialogMessenger* tabDialogMessenger; Trainee trainee; - QString selectedUserLogin; //Логин клиента текущего диалога - QString selectedUserId; //id клиента текущего диалога - QString currClientId; //id этого клиента + QString currGUIclientId; //id этого клиента + QTranslator qtLanguageTranslator; + +private: + Ui::MessangerWidget *ui; }; #endif // MESSANGERWIDGET_H