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:
@@ -84,56 +84,12 @@ void MessangerController::slot_sendMessage(ClientMessage clientMessage)
|
|||||||
{
|
{
|
||||||
connectorToServer->slot_sendMessage(clientMessage);
|
connectorToServer->slot_sendMessage(clientMessage);
|
||||||
|
|
||||||
int id_user = clientMessage.toId.toInt();
|
showMessageInAllWidgets(clientMessage);
|
||||||
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;
|
|
||||||
msg.time = QTime::currentTime();
|
|
||||||
list->append(msg);
|
|
||||||
|
|
||||||
clientMessage.timeStr = msg.time.toString("hh:mm");
|
|
||||||
|
|
||||||
for(MessangerWidget* widget : listWidgets)
|
|
||||||
{
|
|
||||||
widget->showSendedMessage(clientMessage);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessangerController::slot_receiveMessage(ClientMessage clientMessage)
|
void MessangerController::slot_receiveMessage(ClientMessage clientMessage)
|
||||||
{
|
{
|
||||||
int id_user = clientMessage.fromId.toInt();
|
showMessageInAllWidgets(clientMessage);
|
||||||
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;
|
|
||||||
msg.time = QTime::currentTime();
|
|
||||||
list->append(msg);
|
|
||||||
|
|
||||||
clientMessage.timeStr = msg.time.toString("hh:mm");
|
|
||||||
|
|
||||||
for(MessangerWidget* widget : listWidgets)
|
|
||||||
{
|
|
||||||
widget->showReceivedMessage(clientMessage);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessangerController::slot_reinitMessangers(QList<User> listUsers)
|
void MessangerController::slot_reinitMessangers(QList<User> listUsers)
|
||||||
@@ -150,3 +106,49 @@ void MessangerController::slot_reinitMessangers(QList<User> listUsers)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessangerController::showMessageInAllWidgets(ClientMessage clientMessage)
|
||||||
|
{
|
||||||
|
int id_user = 0;
|
||||||
|
MessageOfMessanger msg;
|
||||||
|
|
||||||
|
if(clientMessage.fromId == GUIclientId)
|
||||||
|
{//Send
|
||||||
|
id_user = clientMessage.toId.toInt();
|
||||||
|
msg.flLocal = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//Receive
|
||||||
|
id_user = clientMessage.fromId.toInt();
|
||||||
|
msg.flLocal = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QList<MessageOfMessanger>* list = nullptr;
|
||||||
|
if(mapAlldialogsWithClients.contains(id_user))
|
||||||
|
{//Уже есть
|
||||||
|
list = mapAlldialogsWithClients.value(id_user);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//Новый
|
||||||
|
list = new QList<MessageOfMessanger>();
|
||||||
|
mapAlldialogsWithClients.insert(id_user, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.text = clientMessage.Text;
|
||||||
|
msg.time = QTime::currentTime();
|
||||||
|
list->append(msg);
|
||||||
|
|
||||||
|
clientMessage.timeStr = msg.time.toString("hh:mm");
|
||||||
|
|
||||||
|
for(MessangerWidget* widget : listWidgets)
|
||||||
|
{
|
||||||
|
if(widget->getIDuserRemote() == id_user)
|
||||||
|
{
|
||||||
|
if(msg.flLocal)
|
||||||
|
widget->showSendedMessage(clientMessage);
|
||||||
|
else
|
||||||
|
widget->showReceivedMessage(clientMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -33,6 +33,9 @@ public slots:
|
|||||||
|
|
||||||
void slot_reinitMessangers(QList<User> listUsers);
|
void slot_reinitMessangers(QList<User> listUsers);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void showMessageInAllWidgets(ClientMessage clientMessage);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ConnectorToServer* connectorToServer;
|
ConnectorToServer* connectorToServer;
|
||||||
QList <MessangerWidget*> listWidgets;
|
QList <MessangerWidget*> listWidgets;
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ void MessangerWidget::addTabDialogMessenger(User user)
|
|||||||
if(!tabDialogMessenger)
|
if(!tabDialogMessenger)
|
||||||
{//Диалога еще не существует
|
{//Диалога еще не существует
|
||||||
|
|
||||||
tabDialogMessenger = new OneDialogMessenger(user.getLogin(), QString::number(user.getID()), this);
|
tabDialogMessenger = new OneDialogMessenger(QString::number(user.getID()), user.getTypeUserDB(), this);
|
||||||
|
|
||||||
//Добавляем новую вкладку диалога
|
//Добавляем новую вкладку диалога
|
||||||
QString typeUserStr = "";
|
QString typeUserStr = "";
|
||||||
@@ -90,7 +90,7 @@ void MessangerWidget::addTabDialogMessenger(User user)
|
|||||||
{//Диалог уже существует
|
{//Диалог уже существует
|
||||||
|
|
||||||
//Проверяем наличие диалога именно с этим клиентом
|
//Проверяем наличие диалога именно с этим клиентом
|
||||||
if(tabDialogMessenger->getUserLogin() == user.getLogin())
|
if(tabDialogMessenger->getUserId() == user.getID())
|
||||||
{
|
{
|
||||||
//Обновляем статус залогинивания
|
//Обновляем статус залогинивания
|
||||||
updateLoggedIn(user.getLoggedIn());
|
updateLoggedIn(user.getLoggedIn());
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ void MsgWidget::on_editText_textChanged()
|
|||||||
QRect textRect1str = metricsFont.boundingRect(QRect(0, 0, widthEdit, 1000), 0, "string");
|
QRect textRect1str = metricsFont.boundingRect(QRect(0, 0, widthEdit, 1000), 0, "string");
|
||||||
int ost = textRect.width() % widthEdit;
|
int ost = textRect.width() % widthEdit;
|
||||||
int cnt = textRect.width() / widthEdit;
|
int cnt = textRect.width() / widthEdit;
|
||||||
if(ost > 0)
|
//if(ost > 0)
|
||||||
cnt += 1;
|
cnt += 1;
|
||||||
|
|
||||||
this->setFixedHeight(textRect1str.height() * cnt + (ost? textRect1str.height() : 0) + X + 20 + 30);
|
this->setFixedHeight(textRect1str.height() * cnt + (ost? textRect1str.height() : 0) + X + 20 + 30);
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include "tabdialogmessenger.h"
|
#include "tabdialogmessenger.h"
|
||||||
#include "msgwidget.h"
|
#include "msgwidget.h"
|
||||||
|
#include "user.h"
|
||||||
|
|
||||||
|
|
||||||
OneDialogMessenger::OneDialogMessenger(QString login , QString userId, QWidget *parent):
|
OneDialogMessenger::OneDialogMessenger(QString userId, QString typeUserDB, QWidget *parent):
|
||||||
QListWidget(parent),
|
QListWidget(parent),
|
||||||
login(""),
|
userId(""),
|
||||||
userId("")
|
typeUserDB("")
|
||||||
{
|
{
|
||||||
this->userId = userId;
|
this->userId = userId;
|
||||||
this->login = login;
|
this->typeUserDB = typeUserDB;
|
||||||
|
|
||||||
setWordWrap(true);
|
setWordWrap(true);
|
||||||
setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOn);
|
setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOn);
|
||||||
@@ -39,13 +40,17 @@ void OneDialogMessenger::addMsgWidget(QString text, QString timeStr, MsgWidget::
|
|||||||
|
|
||||||
//TODO уточнить аватарки!
|
//TODO уточнить аватарки!
|
||||||
if(direction == MsgWidget::DirectionMsg::Outgoing)
|
if(direction == MsgWidget::DirectionMsg::Outgoing)
|
||||||
{
|
{//Исходящее
|
||||||
avatar = ":/resources/icons/instructor.png";
|
avatar = ":/resources/icons/instructor.png";
|
||||||
aligneAvatar = MsgWidget::AligneAvatar::Left;
|
aligneAvatar = MsgWidget::AligneAvatar::Left;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{//Входящее
|
||||||
|
if(typeUserDB == User::TypeUserDBTrainee)
|
||||||
avatar = ":/resources/icons/trainee.png";
|
avatar = ":/resources/icons/trainee.png";
|
||||||
|
else
|
||||||
|
avatar = ":/resources/icons/instructor.png";
|
||||||
|
|
||||||
aligneAvatar = MsgWidget::AligneAvatar::Right;
|
aligneAvatar = MsgWidget::AligneAvatar::Right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,19 +4,14 @@
|
|||||||
#include <QListWidget>
|
#include <QListWidget>
|
||||||
#include "msgwidget.h"
|
#include "msgwidget.h"
|
||||||
|
|
||||||
//Закладка ведения диалога с одним клиентом
|
|
||||||
|
|
||||||
//TODO сделать идентификацию по ID
|
|
||||||
|
|
||||||
class OneDialogMessenger : public QListWidget
|
class OneDialogMessenger : public QListWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OneDialogMessenger(QString userLogin, QString userId, QWidget *parent = nullptr);
|
OneDialogMessenger(QString userId, QString typeUserDB, QWidget *parent = nullptr);
|
||||||
~OneDialogMessenger();
|
~OneDialogMessenger();
|
||||||
|
|
||||||
QString getUserLogin() {return login;};
|
|
||||||
QString getUserId() {return userId;}
|
QString getUserId() {return userId;}
|
||||||
|
|
||||||
void addMsgWidgetLocal(QString text, QString timeStr = "");
|
void addMsgWidgetLocal(QString text, QString timeStr = "");
|
||||||
@@ -26,8 +21,8 @@ private:
|
|||||||
void addMsgWidget(QString text, QString timeStr, MsgWidget::DirectionMsg direction);
|
void addMsgWidget(QString text, QString timeStr, MsgWidget::DirectionMsg direction);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString login;
|
|
||||||
QString userId;
|
QString userId;
|
||||||
|
QString typeUserDB;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TABDIALOGMESSENGER_H
|
#endif // TABDIALOGMESSENGER_H
|
||||||
|
|||||||
Reference in New Issue
Block a user