has been completed.

This commit is contained in:
xyz
2025-09-09 15:37:57 +08:00
parent 83f3f4f74e
commit 89ff4fbac0
38 changed files with 2679 additions and 161 deletions

View File

@ -39,7 +39,8 @@ MainWidget::MainWidget(QWidget *parent)
initRightWindow();
//初始化信号槽
initSignalSlot();
//初始化websocket
initWebSocket();
}
MainWidget::~MainWidget()
@ -246,14 +247,28 @@ void MainWidget::initSignalSlot()
/////////////////////////////////////
connect(extraBtn, &QPushButton::clicked, this, [=]() {
//判定当前的会话是单聊还是群聊
#if TEST_GROUP_SESSION_DETAIL
bool isSingleChat = false; //要根据当前选中的实际的会话来确定
#else
bool isSingleChat = true; //要根据当前选中的实际的会话来确定
#endif
if (isSingleChat) {
//说明是单聊
SessionDetailWidget* sessionDetailWidget = new SessionDetailWidget(this);
//#if TEST_GROUP_SESSION_DETAIL
// bool isSingleChat = false; //要根据当前选中的实际的会话来确定
//#else
// bool isSingleChat = true; //要根据当前选中的实际的会话来确定
//#endif
//获取到当前会话的详细信息, 通过会话中的userId属性
ChatSessionInfo* chatSessionInfo = dataCenter->findChatSessionById(dataCenter->getCurrentSessionId());
if (chatSessionInfo == nullptr) {
LOG() << "当前会话不存在, 无法弹出会话详情对话框";
return;
}
bool isSingleChat = chatSessionInfo->userId != "";
if (isSingleChat) {
//说明是单聊
UserInfo* userInfo = dataCenter->findFriendById(chatSessionInfo->userId);
if (userInfo == nullptr) {
LOG() << "单聊会话对应的用户不存在,无法弹出会话详情窗口";
return;
}
SessionDetailWidget* sessionDetailWidget = new SessionDetailWidget(this, *userInfo);
sessionDetailWidget->exec();
}
else {
@ -316,6 +331,94 @@ void MainWidget::initSignalSlot()
UserInfo* myself = dataCenter->getMyselfsync();
userAvatar->setIcon(myself->avatar);
});
/////////////////////////////////////
// 处理删除好友
/////////////////////////////////////
connect(dataCenter, &DataCenter::deleteFriendDone, this, [=]() {
//更新会话列表和好友列表
this->updateFriendList();
this->updateChatSessionList();
LOG() << "删除好友完成";
});
connect(dataCenter, &DataCenter::clearCurrentSession, this, [=]() {
sessionTitleLabel->setText("");
messageShowArea->clear();
dataCenter->setCurrentChatSessionId("");
LOG() << "清空当前会话完成";
});
/////////////////////////////////////
// 处理添加好友申请
/////////////////////////////////////
connect(dataCenter, &DataCenter::addFriendApplyDone, this, [=]() {
Toast::showMessage("好友申请已发送");
});
/////////////////////////////////////
// 处理添加好友申请的推送数据
/////////////////////////////////////
connect(dataCenter, &DataCenter::receiveFriendApplyDone, this, [=]() {
this->updateApplyList();
Toast::showMessage("收到新的好友申请");
});
/////////////////////////////////////
// 处理同意好友申请
/////////////////////////////////////
connect(dataCenter, &DataCenter::acceptFriendApplyDone, this, [=]() {
this->updateApplyList();
this->updateFriendList();
Toast::showMessage("好友已经添加完成");
});
/////////////////////////////////////
// 处理好友申请结果的推送数据
/////////////////////////////////////
connect(dataCenter, &DataCenter::receiveFriendProcessDone, this, [=](const QString& nickname, bool agree) {
if (agree) {
//同意
this->updateFriendList();
Toast::showMessage(nickname + " 已经同意了你的好友申请");
}
else {
Toast::showMessage(nickname + " 拒绝了你的好友申请");
}
});
/////////////////////////////////////
// 处理拒绝好友申请
/////////////////////////////////////
connect(dataCenter, &DataCenter::rejectFriendApplyDone, this, [=]() {
//需要更新好友申请列表,刚才拒绝的这一项是需要删除的
this->updateApplyList();
Toast::showMessage("好友申请已拒绝");
});
/////////////////////////////////////
// 处理创建群聊的响应信号
/////////////////////////////////////
connect(dataCenter, &DataCenter::createGroupChatSessionDone, this, [=]() {
Toast::showMessage("创建群聊会话请求已经发送成功");
});
/////////////////////////////////////
// 处理创建会话的推送数据
/////////////////////////////////////
connect(dataCenter, &DataCenter::receiveSessionCreateDone, this, [=]() {
this->updateChatSessionList();
//通知用户入群
Toast::showMessage("您已被拉入到新的群聊中");
});
}
void MainWidget::initWebSocket()
{
DataCenter* dataCenter = DataCenter::getInstance();
dataCenter->initWebsocket();
}
void MainWidget::switchTabToSession()