Завел контроллер Месанджера

This commit is contained in:
2025-09-03 17:24:36 +03:00
parent e9b571aa81
commit 5e834b582f
11 changed files with 178 additions and 60 deletions

View File

@@ -0,0 +1,76 @@
#include "messangercontroller.h"
MessangerController::MessangerController(ConnectorToServer* connectorToServer, QObject *parent) :
QObject(parent),
connectorToServer(connectorToServer),
currClientId("")
{
}
MessangerController::~MessangerController()
{
for(MessangerWidget* widget : listWidgets)
{
delete widget;
}
}
MessangerWidget *MessangerController::newWidget(QWidget *parent)
{
MessangerWidget *msgWdgt = new MessangerWidget(parent);
connect(msgWdgt, &MessangerWidget::signal_sendMessage, this, &MessangerController::slot_sendMessage);
connect(connectorToServer,&ConnectorToServer::signal_receiveMessage,msgWdgt,&MessangerWidget::slot_showMessage);
connect(this, &MessangerController::signal_traineeSelected, msgWdgt, &MessangerWidget::slot_traineeSelected);
connect(msgWdgt, &MessangerWidget::signal_tabMessengerChanged, this, &MessangerController::signal_tabMessengerChanged);
connect(this, &MessangerController::signal_InitMessanger, msgWdgt,&MessangerWidget::slot_InitMessanger);
msgWdgt->initialize(currClientId);
listWidgets.append(msgWdgt);
return msgWdgt;
}
void MessangerController::deleteWidget(MessangerWidget *msgWdgt)
{
for(int i = 0; i < listWidgets.count(); i++)
{
if(listWidgets.at(i) == msgWdgt)
{
delete msgWdgt;
listWidgets.removeAt(i);
}
}
}
void MessangerController::initialize(QString id)
{
currClientId = id;
for(MessangerWidget* widget : listWidgets)
{
widget->initialize(currClientId);
}
}
void MessangerController::clear()
{
for(MessangerWidget* widget : listWidgets)
{
widget->clear();
}
}
void MessangerController::slot_sendMessage(ClientMessage clientMessage)
{
connectorToServer->slot_sendMessage(clientMessage);
for(MessangerWidget* widget : listWidgets)
{
widget->addMsgWidgetLocal(clientMessage.Text);
}
}

View File

@@ -0,0 +1,39 @@
#ifndef MESSANGERCONTROLLER_H
#define MESSANGERCONTROLLER_H
#include <QObject>
#include "messangerwidget.h"
#include "connectortoserver.h"
class MessangerController : public QObject
{
Q_OBJECT
public:
explicit MessangerController(ConnectorToServer* connectorToServer, QObject *parent = nullptr);
~MessangerController();
public:
MessangerWidget* newWidget(QWidget *parent);
void deleteWidget(MessangerWidget* msgWdgt);
void initialize(QString id);
void clear();
signals:
void signal_tabMessengerChanged(QString login);
void signal_traineeSelected(QString login);
void signal_InitMessanger(QList<Trainee> listTrainees);
public slots:
void slot_sendMessage(ClientMessage clientMessage);
private:
ConnectorToServer* connectorToServer;
QList <MessangerWidget*> listWidgets;
QString currClientId; //id этого клиента
};
#endif // MESSANGERCONTROLLER_H

View File

@@ -150,17 +150,8 @@ void MessangerWidget::clear()
actualizationTabsDialogMessenger();
}
void MessangerWidget::on_btnSend_clicked()
void MessangerWidget::addMsgWidgetLocal(QString text)
{
QString text = ui->editMsg->toPlainText();
QString from = currClientId;
QString to = selectedUserId;
ClientMessage message = ClientMessage(from,to,text);
emit signal_sendMessage(message);
ui->editMsg->clear();
//Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
@@ -176,6 +167,33 @@ void MessangerWidget::on_btnSend_clicked()
}
}
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();
/*
//Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
if(tabDialog->getUserLogin() == selectedUserLogin)
{
//Добавляем в существующую вкладку
tabDialog->addMsgWidgetLocal(text);
//Делаем ее активной
ui->tabWidget->setCurrentIndex(getIndexTab(selectedUserLogin));
return;
}
}*/
}
void MessangerWidget::on_tabWidget_currentChanged(int index)
{
//Ищем нужный диалог

View File

@@ -40,6 +40,8 @@ public:
void clear();
void addMsgWidgetLocal(QString text);
private slots:
void on_btnSend_clicked();
void on_tabWidget_currentChanged(int index);