MessangerWidget переехал в InstrucorsAndTraineesWidget

This commit is contained in:
krivoshein
2024-12-04 10:25:33 +03:00
parent a310c687e6
commit 56eff211ce
65 changed files with 915 additions and 826 deletions

View File

@@ -0,0 +1,162 @@
#include <QListWidget>
#include <QBrush>
#include <QKeyEvent>
#include "messangerwidget.h"
#include "ui_messangerwidget.h"
MessangerWidget::MessangerWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MessangerWidget)
{
ui->setupUi(this);
ui->tabWidget->removeTab(1);
ui->tabWidget->removeTab(0);
ui->tabWidget->setStyleSheet("QTabBar::tab:selected "
"{background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6ea1f1, stop: 1 #567dbc);"
"color: #ffffff;}");
}
MessangerWidget::~MessangerWidget()
{
delete ui;
}
void MessangerWidget::addMsg(QString login, QString name, QString text, MessangerWidget::ETypeMsg typeMsg)
{
addDialogTab(login, name);
QString prefix = (typeMsg == MessangerWidget::ETypeMsg::fromClient)? ">> " : "<< ";
//Ищем нужный диалог
foreach(DialogMsg dialogMsg, listDialogMsg)
{
if(dialogMsg.getLogin() == login)
{
//Добавляем в существующую вкладку
ui->tabWidget->setCurrentIndex(dialogMsg.getIndexTab());
QListWidgetItem* item = new QListWidgetItem(QIcon(":/icons/trainee.png"), prefix + text);
item->setBackground(QBrush(QColor(200, 200, 255)));
dialogMsg.getListWidget()->addItem(item);
currLogin = login;
return;
}
}
}
void MessangerWidget::addDialogTab(QString login, QString name)
{
if(listDialogMsg.count() == 0)
{
currLogin = login;
emit signal_tabMessengerChanged(currLogin);
}
//Проверяем наличие диалога с этим клиентом
foreach(DialogMsg dialogMsg, listDialogMsg)
{
if(dialogMsg.getLogin() == login)
{//Диалог для этого клиента уже существует
return;
}
}
//Добавляем новую вкладку диалога
QListWidget* listWidget = new QListWidget();
int index = ui->tabWidget->addTab(listWidget, /*login + ": " +*/ name);
//Помещаем новый диалог в список диалогов
DialogMsg dialogMsg(index, listWidget, login);
listDialogMsg.append(dialogMsg);
}
void MessangerWidget::on_btnSend_clicked()
{
QString text = ui->editMsg->text();
emit signal_msgToClientReady(currLogin, text);
ui->editMsg->clear();
QString prefix = "<< ";
//Ищем нужный диалог
foreach(DialogMsg dialogMsg, listDialogMsg)
{
if(dialogMsg.getLogin() == currLogin)
{
//Добавляем в существующую вкладку
ui->tabWidget->setCurrentIndex(dialogMsg.getIndexTab());
QListWidgetItem* item = new QListWidgetItem(QIcon(":/icons/instructor.png"), prefix + text);
item->setBackground(QBrush(QColor(200, 255, 200)));
dialogMsg.getListWidget()->addItem(item);
return;
}
}
}
void MessangerWidget::on_tabWidget_currentChanged(int index)
{
//Ищем нужный диалог
foreach(DialogMsg dialogMsg, listDialogMsg)
{
if(dialogMsg.getIndexTab() == index)
{
currLogin = dialogMsg.getLogin();
emit signal_tabMessengerChanged(currLogin);
return;
}
}
}
void MessangerWidget::slot_traineeSelected(QString login)
{
//Ищем нужный диалог
foreach(DialogMsg dialogMsg, listDialogMsg)
{
if(dialogMsg.getLogin() == login)
{
//Активируем нужную вкладку
ui->tabWidget->setCurrentIndex(dialogMsg.getIndexTab());
return;
}
}
}
void MessangerWidget::slot_LanguageChanged(QString language)
{
qtLanguageTranslator.load(QString("translationsMy/ServerLMS_") + language, ".");
qApp->installTranslator(&qtLanguageTranslator);
}
void MessangerWidget::slot_InitMessanger(QList<Trainee> listTrainees)
{
for(Trainee trainee: listTrainees)
{
if(! trainee.getArchived())
this->addDialogTab(trainee.getLogin(), trainee.getName());
}
}
void MessangerWidget::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)
{
ui->btnSend->click();
}
}
void MessangerWidget::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения
if (event->type() == QEvent::LanguageChange)
{
ui->retranslateUi(this); // переведём окно заново
}
}