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

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 toId;//формат id-typeId
QString Text;
QString timeStr;
//TypeId
//0 - инструктор, 1 - обучаемый
ClientMessage(){}
ClientMessage(QString fromId, QString toId, QString text)
ClientMessage(QString fromId, QString toId, QString text, QString timeStr = "")
{
this->fromId = fromId;
this->toId = toId;
this->Text = text;
this->timeStr = timeStr;
}
};

View File

@@ -38,9 +38,9 @@ MessangerWidget *MessangerController::newWidget(QWidget *parent, User* user, QVB
for(MessageOfMessanger msg : *list)
{
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
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;
msg.flLocal = true;
msg.text = clientMessage.Text;
msg.time = QTime::currentTime();
list->append(msg);
clientMessage.timeStr = msg.time.toString();
for(MessangerWidget* widget : listWidgets)
{
widget->showSendedMessage(clientMessage);
@@ -122,8 +125,11 @@ void MessangerController::slot_receiveMessage(ClientMessage clientMessage)
MessageOfMessanger msg;
msg.flLocal = false;
msg.text = clientMessage.Text;
msg.time = QTime::currentTime();
list->append(msg);
clientMessage.timeStr = msg.time.toString();
for(MessangerWidget* widget : listWidgets)
{
widget->showReceivedMessage(clientMessage);

View File

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

View File

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

View File

@@ -25,28 +25,34 @@ MsgWidget::~MsgWidget()
void MsgWidget::setAligneAvatarLeft()
{
ui->horizontalLayout->removeWidget(ui->textEdit);
ui->horizontalLayout->removeItem(ui->verticalLayout_2);
ui->horizontalLayout->removeItem(ui->verticalLayout);
ui->horizontalLayout->removeItem(ui->horizontalLayout_2);
ui->horizontalLayout->addLayout(ui->verticalLayout);
ui->horizontalLayout->addWidget(ui->textEdit);
ui->horizontalLayout->addLayout(ui->verticalLayout_2);
ui->horizontalLayout->addLayout(ui->horizontalLayout_2);
ui->textEdit->setObjectName("MsgWidgetLocal");
ui->lbl_time->setObjectName("MsgWidgetLblTimeLocal");
ui->lbl_time->setAlignment(Qt::AlignLeft);
}
void MsgWidget::setAligneAvatarRight()
{
ui->horizontalLayout->removeWidget(ui->textEdit);
ui->horizontalLayout->removeItem(ui->verticalLayout_2);
ui->horizontalLayout->removeItem(ui->verticalLayout);
ui->horizontalLayout->removeItem(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->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);
}
void MsgWidget::setTime(QString timeStr)
{
ui->lbl_time->setText(timeStr);
}
void MsgWidget::on_textEdit_textChanged()
{
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);
ui->textEdit->setFixedHeight(textRect.height() + X);
this->setFixedHeight(textRect.height() + X + 20);
this->setFixedHeight(textRect.height() + X + 20 + 30);
}
else
{//В одну строку
ui->textEdit->setFixedWidth(textRect.width() + 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 setText(QString text);
void setTime(QString timeStr);
private slots:
void on_textEdit_textChanged();

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>400</width>
<height>91</height>
<height>212</height>
</rect>
</property>
<property name="sizePolicy">
@@ -59,23 +59,34 @@
</layout>
</item>
<item>
<widget class="QTextEdit" name="textEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustIgnored</enum>
</property>
</widget>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTextEdit" name="textEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<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>
<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();
QString avatar = ":/resources/icons/instructor.png";
@@ -38,6 +38,7 @@ void TabDialogMessenger::addMsgWidgetLocal(QString text)
setItemWidget(listWidgetItem, msgWidget);
msgWidget->setText(text);
msgWidget->setTime(timeStr);
//Корректировка высоты item
listWidgetItem->setSizeHint (QSize(10, msgWidget->height()));
@@ -45,7 +46,7 @@ void TabDialogMessenger::addMsgWidgetLocal(QString text)
scrollToItem(listWidgetItem);
}
void TabDialogMessenger::addMsgWidgetRemote(QString text)
void TabDialogMessenger::addMsgWidgetRemote(QString text, QString timeStr)
{
QListWidgetItem *listWidgetItem = new QListWidgetItem();
QString avatar = ":/resources/icons/trainee.png";
@@ -63,6 +64,7 @@ void TabDialogMessenger::addMsgWidgetRemote(QString text)
setItemWidget(listWidgetItem, msgWidget);
msgWidget->setText(text);
msgWidget->setTime(timeStr);
//Корректировка высоты item
listWidgetItem->setSizeHint (QSize(10, msgWidget->height()));

View File

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