Files
RRJServer/InstructorsAndTrainees/messanger/messangerwidget.cpp

132 lines
3.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <QListWidget>
#include <QKeyEvent>
#include <QAbstractScrollArea>
#include <QMessageBox>
#include <QLabel>
#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<Trainee> 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); // переведём окно заново
}
}