mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Контроллер мессенджера доработанный
This commit is contained in:
@@ -3,32 +3,49 @@
|
||||
MessangerController::MessangerController(ConnectorToServer* connectorToServer, QObject *parent) :
|
||||
QObject(parent),
|
||||
connectorToServer(connectorToServer),
|
||||
currClientId("")
|
||||
GUIclientId("")
|
||||
{
|
||||
|
||||
connect(connectorToServer, &ConnectorToServer::signal_receiveMessage, this, &MessangerController::slot_receiveMessage);
|
||||
}
|
||||
|
||||
MessangerController::~MessangerController()
|
||||
{
|
||||
for(MessangerWidget* widget : listWidgets)
|
||||
{
|
||||
delete widget;
|
||||
}
|
||||
}
|
||||
|
||||
MessangerWidget *MessangerController::newWidget(QWidget *parent)
|
||||
MessangerWidget *MessangerController::newWidget(QWidget *parent, Trainee* trainee, QVBoxLayout* boxLayout)
|
||||
{
|
||||
MessangerWidget *msgWdgt = new MessangerWidget(parent);
|
||||
|
||||
if(boxLayout)
|
||||
boxLayout->addWidget(msgWdgt);
|
||||
|
||||
connect(msgWdgt, &MessangerWidget::signal_sendMessage, this, &MessangerController::slot_sendMessage);
|
||||
connect(connectorToServer,&ConnectorToServer::signal_receiveMessage,msgWdgt,&MessangerWidget::slot_showMessage);
|
||||
connect(msgWdgt, &MessangerWidget::signal_tabMessengerChanged, this, &MessangerController::slot_tabMessengerChanged);
|
||||
|
||||
connect(this, &MessangerController::signal_traineeSelected, msgWdgt, &MessangerWidget::slot_traineeSelected);
|
||||
connect(msgWdgt, &MessangerWidget::signal_tabMessengerChanged, this, &MessangerController::signal_tabMessengerChanged);
|
||||
msgWdgt->initialize(GUIclientId);
|
||||
|
||||
//connect(this, &MessangerController::slot_InitMessanger, msgWdgt,&MessangerWidget::slot_InitMessanger);
|
||||
if(trainee)
|
||||
{
|
||||
msgWdgt->setOneTrainee(*trainee);
|
||||
|
||||
msgWdgt->initialize(currClientId);
|
||||
//Заполнение предыстории
|
||||
int id_user = trainee->getID();
|
||||
QList<MessageOfMessanger>* list = nullptr;
|
||||
if(mapAlldialogsWithClients.contains(id_user))
|
||||
{//Уже есть
|
||||
list = mapAlldialogsWithClients.value(id_user);
|
||||
|
||||
for(MessageOfMessanger msg : *list)
|
||||
{
|
||||
if(msg.flLocal)
|
||||
msgWdgt->showSendedMessage(msg.text);
|
||||
else
|
||||
msgWdgt->showReceivedMessage(ClientMessage(QString::number(id_user), GUIclientId, msg.text));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
listWidgets.append(msgWdgt);
|
||||
|
||||
@@ -43,21 +60,22 @@ void MessangerController::deleteWidget(MessangerWidget *msgWdgt)
|
||||
{
|
||||
delete msgWdgt;
|
||||
listWidgets.removeAt(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MessangerController::initialize(QString id)
|
||||
void MessangerController::setGUIclientId(QString id)
|
||||
{
|
||||
currClientId = id;
|
||||
GUIclientId = id;
|
||||
|
||||
for(MessangerWidget* widget : listWidgets)
|
||||
{
|
||||
widget->initialize(currClientId);
|
||||
widget->initialize(GUIclientId);
|
||||
}
|
||||
}
|
||||
|
||||
void MessangerController::clear()
|
||||
void MessangerController::clearAllWidgets()
|
||||
{
|
||||
for(MessangerWidget* widget : listWidgets)
|
||||
{
|
||||
@@ -65,20 +83,74 @@ void MessangerController::clear()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void MessangerController::slot_sendMessage(ClientMessage clientMessage)
|
||||
{
|
||||
connectorToServer->slot_sendMessage(clientMessage);
|
||||
|
||||
int id_user = clientMessage.toId.toInt();
|
||||
QList<MessageOfMessanger>* list = nullptr;
|
||||
if(mapAlldialogsWithClients.contains(id_user))
|
||||
{//Уже есть
|
||||
list = mapAlldialogsWithClients.value(id_user);
|
||||
}
|
||||
else
|
||||
{//Новый
|
||||
list = new QList<MessageOfMessanger>();
|
||||
mapAlldialogsWithClients.insert(id_user, list);
|
||||
}
|
||||
MessageOfMessanger msg;
|
||||
msg.flLocal = true;
|
||||
msg.text = clientMessage.Text;
|
||||
list->append(msg);
|
||||
|
||||
for(MessangerWidget* widget : listWidgets)
|
||||
{
|
||||
widget->addMsgWidgetLocal(clientMessage.Text);
|
||||
widget->showSendedMessage(clientMessage.Text);
|
||||
}
|
||||
}
|
||||
|
||||
void MessangerController::slot_InitMessanger(QList<Trainee> listTrainees)
|
||||
void MessangerController::slot_tabMessengerChanged(QString login)
|
||||
{
|
||||
emit signal_tabMessengerChanged(login);
|
||||
}
|
||||
|
||||
void MessangerController::slot_receiveMessage(ClientMessage clientMessage)
|
||||
{
|
||||
int id_user = clientMessage.fromId.toInt();
|
||||
QList<MessageOfMessanger>* list = nullptr;
|
||||
if(mapAlldialogsWithClients.contains(id_user))
|
||||
{//Уже есть
|
||||
list = mapAlldialogsWithClients.value(id_user);
|
||||
}
|
||||
else
|
||||
{//Новый
|
||||
list = new QList<MessageOfMessanger>();
|
||||
mapAlldialogsWithClients.insert(id_user, list);
|
||||
}
|
||||
MessageOfMessanger msg;
|
||||
msg.flLocal = false;
|
||||
msg.text = clientMessage.Text;
|
||||
list->append(msg);
|
||||
|
||||
for(MessangerWidget* widget : listWidgets)
|
||||
{
|
||||
widget->showReceivedMessage(clientMessage);
|
||||
}
|
||||
}
|
||||
|
||||
void MessangerController::slot_initMessanger(QList<Trainee> listTrainees)
|
||||
{
|
||||
for(MessangerWidget* widget : listWidgets)
|
||||
{
|
||||
widget->slot_InitMessanger(listTrainees);
|
||||
widget->initMessangerWidget(listTrainees);
|
||||
}
|
||||
}
|
||||
|
||||
void MessangerController::slot_traineeSelected(QString login)
|
||||
{
|
||||
for(MessangerWidget* widget : listWidgets)
|
||||
{
|
||||
widget->traineeSelected(login);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user