void ContentDialog::removeFriend(int friendId) { auto iter = friendList.find(friendId); if (iter == friendList.end()) return; FriendWidget* chatroomWidget = static_cast<FriendWidget*>(std::get<1>(iter.value())); disconnect(chatroomWidget->getFriend(), &Friend::displayedNameChanged, this, &ContentDialog::updateFriendWidget); // Need to find replacement to show here instead. if (activeChatroomWidget == chatroomWidget) cycleContacts(true, false); friendLayout->removeFriendWidget(chatroomWidget, Status::Offline); friendLayout->removeFriendWidget(chatroomWidget, Status::Online); chatroomWidget->deleteLater(); friendList.remove(friendId); if (chatroomWidgetCount() == 0) { contentLayout->clear(); activeChatroomWidget = nullptr; deleteLater(); } else { update(); } }
void ContentDialog::removeGroup(int groupId) { Group* group = GroupList::findGroup(groupId); if (group) { disconnect(group, &Group::titleChanged, this, &ContentDialog::updateGroupWidget); disconnect(group, &Group::userListChanged, this, &ContentDialog::updateGroupWidget); } auto iter = groupList.find(groupId); if (iter == groupList.end()) return; GenericChatroomWidget* chatroomWidget = std::get<1>(iter.value()); if (activeChatroomWidget == chatroomWidget) { // Need to find replacement to show here instead. cycleContacts(true, false); } groupLayout.removeSortedWidget(chatroomWidget); chatroomWidget->deleteLater(); groupList.remove(groupId); if (chatroomWidgetCount() == 0) { contentLayout->clear(); activeChatroomWidget = nullptr; deleteLater(); } else { update(); } }
void ContentDialog::nextContact() { cycleContacts(true); }
void ContentDialog::previousContact() { cycleContacts(false); }