mirror of
https://gitee.com/Zhaoxin59/my-chat_-client.git
synced 2026-02-14 00:51:48 +08:00
add updateFriendList from network
This commit is contained in:
@ -87,7 +87,8 @@ void MainWidget::initLeftWindow()
|
||||
userAvatar = new QPushButton();
|
||||
userAvatar->setFixedSize(45, 45);
|
||||
userAvatar->setIconSize(QSize(45, 45));
|
||||
userAvatar->setIcon(QIcon(":/resource/image/defaultAv.png"));
|
||||
//由于要从网络获取头像信息,所以这里就不能再设置默认的头像了,;避免头像意外变化
|
||||
//userAvatar->setIcon(QIcon(":/resource/image/defaultAv.png"));
|
||||
userAvatar->setStyleSheet("QPushButton {background-color: transparent; }");
|
||||
layout->addWidget(userAvatar, 1, Qt::AlignTop | Qt::AlignCenter);
|
||||
|
||||
@ -138,7 +139,7 @@ void MainWidget::initMidWindow()
|
||||
QPushButton::pressed { background-color: rgb(240, 240, 240); })";
|
||||
addFriendBtn->setStyleSheet(style);
|
||||
|
||||
SessionFriendArea* sessionFriendArea = new SessionFriendArea();
|
||||
sessionFriendArea = new SessionFriendArea();
|
||||
|
||||
//为了更加灵活的控制边距,只影响搜索框和按钮的这一行,
|
||||
//创建空白的widget填充到布局管理器上
|
||||
@ -292,6 +293,11 @@ void MainWidget::initSignalSlot()
|
||||
userAvatar->setIcon(myself->avatar);
|
||||
});
|
||||
dataCenter->getMyselfAsync();
|
||||
|
||||
/////////////////////////////////////
|
||||
// 获取好友列表
|
||||
/////////////////////////////////////
|
||||
loadFriendList();
|
||||
}
|
||||
|
||||
void MainWidget::switchTabToSession()
|
||||
@ -339,7 +345,22 @@ void MainWidget::loadSessionList()
|
||||
//加载好友列表
|
||||
void MainWidget::loadFriendList()
|
||||
{
|
||||
//TODO
|
||||
//好友列表数据是在DataCenter中存储的
|
||||
//首先需要判定DataCenter中是否已经有数据了,如果有,则直接加载本地数据
|
||||
//如果没有,则从服务器读取
|
||||
DataCenter* dataCenter = DataCenter::getInstance();
|
||||
if (dataCenter->getFriendList() != nullptr) {
|
||||
//从内存中加载数据
|
||||
LOG() << "本地已存在好友列表数据,更新加载本地列表";
|
||||
updateFriendList();
|
||||
}
|
||||
else {
|
||||
//通过网络加载数据 通过这个参数确保信号槽不会别重复绑定
|
||||
LOG() << "本地好友列表数据不存在,正在从网络获取...";
|
||||
connect(dataCenter, &DataCenter::getFriendListDone, this, &MainWidget::updateFriendList, Qt::UniqueConnection);
|
||||
dataCenter->getFriendListAsync();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//加载申请列表
|
||||
@ -348,4 +369,24 @@ void MainWidget::loadApplyList()
|
||||
//TODO
|
||||
}
|
||||
|
||||
void MainWidget::updateFriendList()
|
||||
{
|
||||
if (activeTab != FRIEND_LIST) {
|
||||
//当前的标签页不是好友列表,就不渲染任何数据到界面上
|
||||
return;
|
||||
}
|
||||
|
||||
DataCenter* dataCenter = DataCenter::getInstance();
|
||||
QList<UserInfo>* friendList = dataCenter->getFriendList();
|
||||
|
||||
//清空一下之前的界面的数据
|
||||
sessionFriendArea->clear();
|
||||
|
||||
//遍历好友列表,添加到界面上
|
||||
for (const auto& f : *friendList) {
|
||||
sessionFriendArea->addItem(FriendItemType, f.userId, f.avatar, f.nickname, f.description);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user