mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
Рефакт Месссенджера закончил :)
This commit is contained in:
@@ -84,56 +84,12 @@ 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;
|
||||
msg.time = QTime::currentTime();
|
||||
list->append(msg);
|
||||
|
||||
clientMessage.timeStr = msg.time.toString("hh:mm");
|
||||
|
||||
for(MessangerWidget* widget : listWidgets)
|
||||
{
|
||||
widget->showSendedMessage(clientMessage);
|
||||
}
|
||||
showMessageInAllWidgets(clientMessage);
|
||||
}
|
||||
|
||||
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;
|
||||
msg.time = QTime::currentTime();
|
||||
list->append(msg);
|
||||
|
||||
clientMessage.timeStr = msg.time.toString("hh:mm");
|
||||
|
||||
for(MessangerWidget* widget : listWidgets)
|
||||
{
|
||||
widget->showReceivedMessage(clientMessage);
|
||||
}
|
||||
showMessageInAllWidgets(clientMessage);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
private:
|
||||
void showMessageInAllWidgets(ClientMessage clientMessage);
|
||||
|
||||
private:
|
||||
ConnectorToServer* connectorToServer;
|
||||
QList <MessangerWidget*> listWidgets;
|
||||
|
||||
@@ -73,7 +73,7 @@ void MessangerWidget::addTabDialogMessenger(User user)
|
||||
if(!tabDialogMessenger)
|
||||
{//Диалога еще не существует
|
||||
|
||||
tabDialogMessenger = new OneDialogMessenger(user.getLogin(), QString::number(user.getID()), this);
|
||||
tabDialogMessenger = new OneDialogMessenger(QString::number(user.getID()), user.getTypeUserDB(), this);
|
||||
|
||||
//Добавляем новую вкладку диалога
|
||||
QString typeUserStr = "";
|
||||
@@ -90,7 +90,7 @@ void MessangerWidget::addTabDialogMessenger(User user)
|
||||
{//Диалог уже существует
|
||||
|
||||
//Проверяем наличие диалога именно с этим клиентом
|
||||
if(tabDialogMessenger->getUserLogin() == user.getLogin())
|
||||
if(tabDialogMessenger->getUserId() == user.getID())
|
||||
{
|
||||
//Обновляем статус залогинивания
|
||||
updateLoggedIn(user.getLoggedIn());
|
||||
|
||||
@@ -98,7 +98,7 @@ void MsgWidget::on_editText_textChanged()
|
||||
QRect textRect1str = metricsFont.boundingRect(QRect(0, 0, widthEdit, 1000), 0, "string");
|
||||
int ost = textRect.width() % widthEdit;
|
||||
int cnt = textRect.width() / widthEdit;
|
||||
if(ost > 0)
|
||||
//if(ost > 0)
|
||||
cnt += 1;
|
||||
|
||||
this->setFixedHeight(textRect1str.height() * cnt + (ost? textRect1str.height() : 0) + X + 20 + 30);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
#include <QScrollBar>
|
||||
#include "tabdialogmessenger.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),
|
||||
login(""),
|
||||
userId("")
|
||||
userId(""),
|
||||
typeUserDB("")
|
||||
{
|
||||
this->userId = userId;
|
||||
this->login = login;
|
||||
this->typeUserDB = typeUserDB;
|
||||
|
||||
setWordWrap(true);
|
||||
setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOn);
|
||||
@@ -39,13 +40,17 @@ void OneDialogMessenger::addMsgWidget(QString text, QString timeStr, MsgWidget::
|
||||
|
||||
//TODO уточнить аватарки!
|
||||
if(direction == MsgWidget::DirectionMsg::Outgoing)
|
||||
{
|
||||
{//Исходящее
|
||||
avatar = ":/resources/icons/instructor.png";
|
||||
aligneAvatar = MsgWidget::AligneAvatar::Left;
|
||||
}
|
||||
else
|
||||
{
|
||||
avatar = ":/resources/icons/trainee.png";
|
||||
{//Входящее
|
||||
if(typeUserDB == User::TypeUserDBTrainee)
|
||||
avatar = ":/resources/icons/trainee.png";
|
||||
else
|
||||
avatar = ":/resources/icons/instructor.png";
|
||||
|
||||
aligneAvatar = MsgWidget::AligneAvatar::Right;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,19 +4,14 @@
|
||||
#include <QListWidget>
|
||||
#include "msgwidget.h"
|
||||
|
||||
//Закладка ведения диалога с одним клиентом
|
||||
|
||||
//TODO сделать идентификацию по ID
|
||||
|
||||
class OneDialogMessenger : public QListWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
OneDialogMessenger(QString userLogin, QString userId, QWidget *parent = nullptr);
|
||||
OneDialogMessenger(QString userId, QString typeUserDB, QWidget *parent = nullptr);
|
||||
~OneDialogMessenger();
|
||||
|
||||
QString getUserLogin() {return login;};
|
||||
QString getUserId() {return userId;}
|
||||
|
||||
void addMsgWidgetLocal(QString text, QString timeStr = "");
|
||||
@@ -26,8 +21,8 @@ private:
|
||||
void addMsgWidget(QString text, QString timeStr, MsgWidget::DirectionMsg direction);
|
||||
|
||||
private:
|
||||
QString login;
|
||||
QString userId;
|
||||
QString typeUserDB;
|
||||
};
|
||||
|
||||
#endif // TABDIALOGMESSENGER_H
|
||||
|
||||
Reference in New Issue
Block a user