mirror of
https://gitee.com/Zhaoxin59/my-chat_-client.git
synced 2026-02-14 00:51:48 +08:00
add Message received
This commit is contained in:
@ -263,11 +263,24 @@ void SessionFriendArea::clickItem(int index)
|
||||
////////////////////////////////////////
|
||||
SessionItem::SessionItem(QWidget *owner, const QString &chatSessionId, const QIcon &avatar,
|
||||
const QString &name, const QString &lastmessage)
|
||||
:SessionFriendItem(owner, avatar, name, lastmessage), chatSessionId(chatSessionId)
|
||||
:SessionFriendItem(owner, avatar, name, lastmessage), chatSessionId(chatSessionId), text(lastmessage)
|
||||
{
|
||||
//处理更新最后一个消息的信号
|
||||
DataCenter* dataCenter = DataCenter::getInstance();
|
||||
connect(dataCenter, &DataCenter::updateLastMessage, this, &SessionItem::updateLastMessage);
|
||||
|
||||
//需要显示出未读消息的数目,需持久化,否则重启即丢失
|
||||
int unread = dataCenter->getUnread(chatSessionId);
|
||||
if (unread > 0) {
|
||||
//说明存在未读消息
|
||||
//this->messageLabel->setText(QString("[未读%1条]").arg(unread) + lastmessage);
|
||||
QString coloredPart = QString("[未读%1条]").arg(unread).toHtmlEscaped();
|
||||
QString escapedText = lastmessage.toHtmlEscaped();
|
||||
messageLabel->setText(QString(
|
||||
"<span style=\"color: rgb(221, 43, 43);\">%1</span>"
|
||||
"<span style=\"color: rgb(153, 153, 153);\">%2</span>"
|
||||
).arg(coloredPart, escapedText));
|
||||
}
|
||||
}
|
||||
|
||||
void SessionItem::updateLastMessage(const QString& chatSessionId)
|
||||
@ -289,7 +302,6 @@ void SessionItem::updateLastMessage(const QString& chatSessionId)
|
||||
const Message& lastMessage = messageList->back();
|
||||
|
||||
//明确显示的文本内容
|
||||
QString text;
|
||||
if (lastMessage.messageType == TEXT_TYPE) {
|
||||
text = lastMessage.content;
|
||||
}
|
||||
@ -309,8 +321,22 @@ void SessionItem::updateLastMessage(const QString& chatSessionId)
|
||||
|
||||
//把这个内容显示到界面上
|
||||
//后续还要考虑到“未读消息”情况,
|
||||
//TODO
|
||||
this->messageLabel->setText(text);
|
||||
if (chatSessionId == dataCenter->getCurrentSessionId()) {
|
||||
this->messageLabel->setText(text);
|
||||
}
|
||||
else {
|
||||
int unread = dataCenter->getUnread(chatSessionId);
|
||||
if (unread > 0) {
|
||||
//说明存在未读消息
|
||||
//this->messageLabel->setText(QString("[未读%1条]").arg(unread) + text);
|
||||
QString coloredPart = QString("[未读%1条]").arg(unread).toHtmlEscaped();
|
||||
QString escapedText = text.toHtmlEscaped();
|
||||
messageLabel->setText(QString(
|
||||
"<span style=\"color: rgb(221, 43, 43);\">%1</span>"
|
||||
"<span style=\"color: rgb(153, 153, 153);\">%2</span>"
|
||||
).arg(coloredPart, escapedText));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SessionItem::active()
|
||||
@ -321,6 +347,13 @@ void SessionItem::active()
|
||||
//加载会话历史消息,会涉及到当前内存数据的操作,又会涉及到网络通信,以及UI界面的变更
|
||||
MainWidget* mainWidget = MainWidget::getInstance();
|
||||
mainWidget->loadRecentMessage(chatSessionId);
|
||||
|
||||
//清空未读消息数据,并更新显示
|
||||
DataCenter* dataCenter = DataCenter::getInstance();
|
||||
dataCenter->clearUnread(chatSessionId);
|
||||
|
||||
//更新界面的显示->把未读x条干掉
|
||||
this->messageLabel->setText(text);
|
||||
}
|
||||
|
||||
////////////////////////////////////////
|
||||
@ -353,7 +386,7 @@ ApplyItem::ApplyItem(QWidget *owner, const QString &userId, const QIcon &avatar,
|
||||
QGridLayout* layout = dynamic_cast<QGridLayout*>(this->layout());
|
||||
layout->removeWidget(messageLabel);
|
||||
//要记得释放内存,否则会内存泄露
|
||||
// delete messageLabel;
|
||||
delete messageLabel;
|
||||
|
||||
//创建两个按钮
|
||||
QPushButton* acceptBtn = new QPushButton();
|
||||
@ -364,8 +397,8 @@ ApplyItem::ApplyItem(QWidget *owner, const QString &userId, const QIcon &avatar,
|
||||
rejectBtn->setText("拒绝");
|
||||
|
||||
//添加到布局管理器中
|
||||
layout->addWidget(acceptBtn, 1, 2, 1, 1);
|
||||
layout->addWidget(rejectBtn, 1, 3, 1, 1);
|
||||
layout->addWidget(acceptBtn, 1, 2, 1, 3);
|
||||
layout->addWidget(rejectBtn, 1, 5, 1, 3);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user