mirror of
https://gitee.com/Zhaoxin59/my-chat_-client.git
synced 2026-02-14 00:51:48 +08:00
has been completed.
This commit is contained in:
121
mainwidget.cpp
121
mainwidget.cpp
@ -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()
|
||||
|
||||
Reference in New Issue
Block a user