#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"); ui->editMsg->setObjectName("editMsg"); } MessangerWidget::~MessangerWidget() { delete tabDialogMessenger; delete ui; } void MessangerWidget::initUserRemote(User user) { userRemote = user; addTabDialogMessenger(userRemote); } void MessangerWidget::reinitMessangerWidget(User user) { if(userRemote.getID() == user.getID()) { userRemote = user; //Обновляем статус залогинивания updateLoggedIn(userRemote.getLoggedIn()); } } void MessangerWidget::initGUIclientId(QString id_GUIclient) { currGUIclientId = id_GUIclient; } int MessangerWidget::getIDuserRemote() { return userRemote.getID(); } void MessangerWidget::showSendedMessage(ClientMessage clientMessage) { if(currGUIclientId == clientMessage.fromId) tabDialogMessenger->addMsgWidgetLocal(clientMessage.Text, clientMessage.timeStr); } void MessangerWidget::showReceivedMessage(ClientMessage clientMessage) { if(QString::number(userRemote.getID()) == clientMessage.fromId) tabDialogMessenger->addMsgWidgetRemote(clientMessage.Text, clientMessage.timeStr); } void MessangerWidget::addTabDialogMessenger(User user) { if(!tabDialogMessenger) {//Диалога еще не существует tabDialogMessenger = new OneDialogMessenger(QString::number(user.getID()), user.getTypeUserDB(), this); //Добавляем новую вкладку диалога QString typeUserStr = ""; if(user.getTypeUserDB() == User::TypeUserDBTrainee) typeUserStr = tr("Trainee"); else if(user.getTypeUserDB() == User::TypeUserDBInstructor) typeUserStr = tr("Instructor"); int index = ui->tabWidget->addTab(tabDialogMessenger, typeUserStr + ": " + user.getName() + " (" + user.getLogin() + ")"); //Обновляем статус залогинивания updateLoggedIn(user.getLoggedIn()); } else {//Диалог уже существует //Проверяем наличие диалога именно с этим клиентом if(tabDialogMessenger->getUserId() == user.getID()) { //Обновляем статус залогинивания updateLoggedIn(user.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(userRemote.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); // переведём окно заново } }