#include #include #include #include #include #include "messangerwidget.h" #include "ui_messangerwidget.h" MessangerWidget::MessangerWidget(QWidget *parent) : QWidget(parent), tabDialogMessenger(nullptr), currGUIclientId(""), ui(new Ui::MessangerWidget) { ui->setupUi(this); ui->tabWidget->removeTab(1); ui->tabWidget->removeTab(0); ui->btnSend->setObjectName("btnSend"); } MessangerWidget::~MessangerWidget() { delete tabDialogMessenger; delete ui; } void MessangerWidget::setOneTrainee(Trainee trainee) { this->trainee = trainee; addTabDialogMessenger(trainee); } void MessangerWidget::reinitMessangerWidget(QList listTrainees) { for(Trainee traineeUpdate: listTrainees) { if(trainee.getID() == traineeUpdate.getID()) { trainee = traineeUpdate; //Обновляем статус залогинивания updateLoggedIn(trainee.getLoggedIn()); break; } } } void MessangerWidget::initGUIclientId(QString id_client) { 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) {//Диалога еще не существует 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(tabDialogMessenger->getUserLogin() == trainee.getLogin()) { //Обновляем статус залогинивания updateLoggedIn(trainee.getLoggedIn()); } } } void MessangerWidget::updateLoggedIn(bool loggedIn) { //Обновляем статус залогинивания if(loggedIn) ui->tabWidget->setTabIcon(0, QIcon(":/resources/icons/circleGreen.png")); else 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) { // В случае получения события изменения языка приложения if (event->type() == QEvent::LanguageChange) { ui->retranslateUi(this); // переведём окно заново } }