mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Рефакт7 Мессенджера
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
#include <QListWidget>
|
||||
#include <QBrush>
|
||||
#include <QKeyEvent>
|
||||
#include <QAbstractScrollArea>
|
||||
#include <QMessageBox>
|
||||
@@ -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<Trainee> 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<TabDialogMessenger*>(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<Trainee> 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<Trainee> 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)
|
||||
{
|
||||
// В случае получения события изменения языка приложения
|
||||
|
||||
Reference in New Issue
Block a user