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:
76
InstructorsAndTrainees/messanger/messangercontroller.cpp
Normal file
76
InstructorsAndTrainees/messanger/messangercontroller.cpp
Normal 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);
|
||||
}
|
||||
}
|
||||
39
InstructorsAndTrainees/messanger/messangercontroller.h
Normal file
39
InstructorsAndTrainees/messanger/messangercontroller.h
Normal 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
|
||||
@@ -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)
|
||||
{
|
||||
//Ищем нужный диалог
|
||||
|
||||
@@ -40,6 +40,8 @@ public:
|
||||
|
||||
void clear();
|
||||
|
||||
void addMsgWidgetLocal(QString text);
|
||||
|
||||
private slots:
|
||||
void on_btnSend_clicked();
|
||||
void on_tabWidget_currentChanged(int index);
|
||||
|
||||
Reference in New Issue
Block a user