Мессенджер: время

This commit is contained in:
2025-09-10 15:23:10 +03:00
parent c57b94786f
commit 747734a763
9 changed files with 67 additions and 33 deletions

View File

@@ -77,15 +77,17 @@ public:
QString fromId;//формат id-typeId QString fromId;//формат id-typeId
QString toId;//формат id-typeId QString toId;//формат id-typeId
QString Text; QString Text;
QString timeStr;
//TypeId //TypeId
//0 - инструктор, 1 - обучаемый //0 - инструктор, 1 - обучаемый
ClientMessage(){} ClientMessage(){}
ClientMessage(QString fromId, QString toId, QString text) ClientMessage(QString fromId, QString toId, QString text, QString timeStr = "")
{ {
this->fromId = fromId; this->fromId = fromId;
this->toId = toId; this->toId = toId;
this->Text = text; this->Text = text;
this->timeStr = timeStr;
} }
}; };

View File

@@ -38,9 +38,9 @@ MessangerWidget *MessangerController::newWidget(QWidget *parent, User* user, QVB
for(MessageOfMessanger msg : *list) for(MessageOfMessanger msg : *list)
{ {
if(msg.flLocal) if(msg.flLocal)
msgWdgt->showSendedMessage(ClientMessage(GUIclientId, QString::number(id_user), msg.text)); msgWdgt->showSendedMessage(ClientMessage(GUIclientId, QString::number(id_user), msg.text, msg.time.toString()));
else else
msgWdgt->showReceivedMessage(ClientMessage(QString::number(id_user), GUIclientId, msg.text)); msgWdgt->showReceivedMessage(ClientMessage(QString::number(id_user), GUIclientId, msg.text, msg.time.toString()));
} }
} }
} }
@@ -98,8 +98,11 @@ void MessangerController::slot_sendMessage(ClientMessage clientMessage)
MessageOfMessanger msg; MessageOfMessanger msg;
msg.flLocal = true; msg.flLocal = true;
msg.text = clientMessage.Text; msg.text = clientMessage.Text;
msg.time = QTime::currentTime();
list->append(msg); list->append(msg);
clientMessage.timeStr = msg.time.toString();
for(MessangerWidget* widget : listWidgets) for(MessangerWidget* widget : listWidgets)
{ {
widget->showSendedMessage(clientMessage); widget->showSendedMessage(clientMessage);
@@ -122,8 +125,11 @@ void MessangerController::slot_receiveMessage(ClientMessage clientMessage)
MessageOfMessanger msg; MessageOfMessanger msg;
msg.flLocal = false; msg.flLocal = false;
msg.text = clientMessage.Text; msg.text = clientMessage.Text;
msg.time = QTime::currentTime();
list->append(msg); list->append(msg);
clientMessage.timeStr = msg.time.toString();
for(MessangerWidget* widget : listWidgets) for(MessangerWidget* widget : listWidgets)
{ {
widget->showReceivedMessage(clientMessage); widget->showReceivedMessage(clientMessage);

View File

@@ -10,6 +10,7 @@ struct MessageOfMessanger
{ {
QString text; QString text;
bool flLocal; bool flLocal;
QTime time;
}; };
class MessangerController : public QObject class MessangerController : public QObject

View File

@@ -59,13 +59,13 @@ int MessangerWidget::getIDuserRemote()
void MessangerWidget::showSendedMessage(ClientMessage clientMessage) void MessangerWidget::showSendedMessage(ClientMessage clientMessage)
{ {
if(currGUIclientId == clientMessage.fromId) if(currGUIclientId == clientMessage.fromId)
tabDialogMessenger->addMsgWidgetLocal(clientMessage.Text); tabDialogMessenger->addMsgWidgetLocal(clientMessage.Text, clientMessage.timeStr);
} }
void MessangerWidget::showReceivedMessage(ClientMessage clientMessage) void MessangerWidget::showReceivedMessage(ClientMessage clientMessage)
{ {
if(QString::number(userRemote.getID()) == clientMessage.fromId) if(QString::number(userRemote.getID()) == clientMessage.fromId)
tabDialogMessenger->addMsgWidgetRemote(clientMessage.Text); tabDialogMessenger->addMsgWidgetRemote(clientMessage.Text, clientMessage.timeStr);
} }
void MessangerWidget::addTabDialogMessenger(User user) void MessangerWidget::addTabDialogMessenger(User user)

View File

@@ -25,28 +25,34 @@ MsgWidget::~MsgWidget()
void MsgWidget::setAligneAvatarLeft() void MsgWidget::setAligneAvatarLeft()
{ {
ui->horizontalLayout->removeWidget(ui->textEdit); ui->horizontalLayout->removeItem(ui->verticalLayout_2);
ui->horizontalLayout->removeItem(ui->verticalLayout); ui->horizontalLayout->removeItem(ui->verticalLayout);
ui->horizontalLayout->removeItem(ui->horizontalLayout_2); ui->horizontalLayout->removeItem(ui->horizontalLayout_2);
ui->horizontalLayout->addLayout(ui->verticalLayout); ui->horizontalLayout->addLayout(ui->verticalLayout);
ui->horizontalLayout->addWidget(ui->textEdit); ui->horizontalLayout->addLayout(ui->verticalLayout_2);
ui->horizontalLayout->addLayout(ui->horizontalLayout_2); ui->horizontalLayout->addLayout(ui->horizontalLayout_2);
ui->textEdit->setObjectName("MsgWidgetLocal"); ui->textEdit->setObjectName("MsgWidgetLocal");
ui->lbl_time->setObjectName("MsgWidgetLblTimeLocal");
ui->lbl_time->setAlignment(Qt::AlignLeft);
} }
void MsgWidget::setAligneAvatarRight() void MsgWidget::setAligneAvatarRight()
{ {
ui->horizontalLayout->removeWidget(ui->textEdit); ui->horizontalLayout->removeItem(ui->verticalLayout_2);
ui->horizontalLayout->removeItem(ui->verticalLayout); ui->horizontalLayout->removeItem(ui->verticalLayout);
ui->horizontalLayout->removeItem(ui->horizontalLayout_2); ui->horizontalLayout->removeItem(ui->horizontalLayout_2);
ui->horizontalLayout->addLayout(ui->horizontalLayout_2); ui->horizontalLayout->addLayout(ui->horizontalLayout_2);
ui->horizontalLayout->addWidget(ui->textEdit); ui->horizontalLayout->addLayout(ui->verticalLayout_2);
ui->horizontalLayout->addLayout(ui->verticalLayout); ui->horizontalLayout->addLayout(ui->verticalLayout);
ui->textEdit->setObjectName("MsgWidgetRemote"); ui->textEdit->setObjectName("MsgWidgetRemote");
ui->lbl_time->setObjectName("MsgWidgetLblTimeRemote");
ui->lbl_time->setAlignment(Qt::AlignRight);
} }
@@ -67,6 +73,11 @@ void MsgWidget::setText(QString text)
ui->textEdit->setText(text); ui->textEdit->setText(text);
} }
void MsgWidget::setTime(QString timeStr)
{
ui->lbl_time->setText(timeStr);
}
void MsgWidget::on_textEdit_textChanged() void MsgWidget::on_textEdit_textChanged()
{ {
QString text = ui->textEdit->toPlainText(); QString text = ui->textEdit->toPlainText();
@@ -81,12 +92,12 @@ void MsgWidget::on_textEdit_textChanged()
{//Не помещается в одну строку {//Не помещается в одну строку
textRect = metricsFont.boundingRect(QRect(0, 0, widthEdit, 10), Qt::TextWordWrap, text); textRect = metricsFont.boundingRect(QRect(0, 0, widthEdit, 10), Qt::TextWordWrap, text);
ui->textEdit->setFixedHeight(textRect.height() + X); ui->textEdit->setFixedHeight(textRect.height() + X);
this->setFixedHeight(textRect.height() + X + 20); this->setFixedHeight(textRect.height() + X + 20 + 30);
} }
else else
{//В одну строку {//В одну строку
ui->textEdit->setFixedWidth(textRect.width() + X); ui->textEdit->setFixedWidth(textRect.width() + X);
ui->textEdit->setFixedHeight(textRect.height() + X); ui->textEdit->setFixedHeight(textRect.height() + X);
this->setFixedHeight(textRect.height() + X + 20); this->setFixedHeight(textRect.height() + X + 20 + 30);
} }
} }

View File

@@ -29,6 +29,7 @@ public:
void setWidth(int width); void setWidth(int width);
void setText(QString text); void setText(QString text);
void setTime(QString timeStr);
private slots: private slots:
void on_textEdit_textChanged(); void on_textEdit_textChanged();

View File

@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>400</width> <width>400</width>
<height>91</height> <height>212</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@@ -59,23 +59,34 @@
</layout> </layout>
</item> </item>
<item> <item>
<widget class="QTextEdit" name="textEdit"> <layout class="QVBoxLayout" name="verticalLayout_2">
<property name="sizePolicy"> <item>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <widget class="QTextEdit" name="textEdit">
<horstretch>0</horstretch> <property name="sizePolicy">
<verstretch>0</verstretch> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</sizepolicy> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
<property name="verticalScrollBarPolicy"> </sizepolicy>
<enum>Qt::ScrollBarAlwaysOff</enum> </property>
</property> <property name="verticalScrollBarPolicy">
<property name="horizontalScrollBarPolicy"> <enum>Qt::ScrollBarAlwaysOff</enum>
<enum>Qt::ScrollBarAlwaysOff</enum> </property>
</property> <property name="horizontalScrollBarPolicy">
<property name="sizeAdjustPolicy"> <enum>Qt::ScrollBarAlwaysOff</enum>
<enum>QAbstractScrollArea::AdjustIgnored</enum> </property>
</property> <property name="sizeAdjustPolicy">
</widget> <enum>QAbstractScrollArea::AdjustIgnored</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_time">
<property name="text">
<string>--:--</string>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">

View File

@@ -20,7 +20,7 @@ TabDialogMessenger::~TabDialogMessenger()
} }
void TabDialogMessenger::addMsgWidgetLocal(QString text) void TabDialogMessenger::addMsgWidgetLocal(QString text, QString timeStr)
{ {
QListWidgetItem *listWidgetItem = new QListWidgetItem(); QListWidgetItem *listWidgetItem = new QListWidgetItem();
QString avatar = ":/resources/icons/instructor.png"; QString avatar = ":/resources/icons/instructor.png";
@@ -38,6 +38,7 @@ void TabDialogMessenger::addMsgWidgetLocal(QString text)
setItemWidget(listWidgetItem, msgWidget); setItemWidget(listWidgetItem, msgWidget);
msgWidget->setText(text); msgWidget->setText(text);
msgWidget->setTime(timeStr);
//Корректировка высоты item //Корректировка высоты item
listWidgetItem->setSizeHint (QSize(10, msgWidget->height())); listWidgetItem->setSizeHint (QSize(10, msgWidget->height()));
@@ -45,7 +46,7 @@ void TabDialogMessenger::addMsgWidgetLocal(QString text)
scrollToItem(listWidgetItem); scrollToItem(listWidgetItem);
} }
void TabDialogMessenger::addMsgWidgetRemote(QString text) void TabDialogMessenger::addMsgWidgetRemote(QString text, QString timeStr)
{ {
QListWidgetItem *listWidgetItem = new QListWidgetItem(); QListWidgetItem *listWidgetItem = new QListWidgetItem();
QString avatar = ":/resources/icons/trainee.png"; QString avatar = ":/resources/icons/trainee.png";
@@ -63,6 +64,7 @@ void TabDialogMessenger::addMsgWidgetRemote(QString text)
setItemWidget(listWidgetItem, msgWidget); setItemWidget(listWidgetItem, msgWidget);
msgWidget->setText(text); msgWidget->setText(text);
msgWidget->setTime(timeStr);
//Корректировка высоты item //Корректировка высоты item
listWidgetItem->setSizeHint (QSize(10, msgWidget->height())); listWidgetItem->setSizeHint (QSize(10, msgWidget->height()));

View File

@@ -18,8 +18,8 @@ public:
QString getUserLogin() {return login;}; QString getUserLogin() {return login;};
QString getUserId() {return userId;} QString getUserId() {return userId;}
void addMsgWidgetLocal(QString text); void addMsgWidgetLocal(QString text, QString timeStr = "");
void addMsgWidgetRemote(QString text); void addMsgWidgetRemote(QString text, QString timeStr = "");
private: private:
QString login; QString login;