mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
138 lines
3.8 KiB
C++
138 lines
3.8 KiB
C++
#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");
|
||
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 TabDialogMessenger(user.getLogin(), QString::number(user.getID()), 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->getUserLogin() == user.getLogin())
|
||
{
|
||
//Обновляем статус залогинивания
|
||
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); // переведём окно заново
|
||
}
|
||
}
|