/** * FUNCTION NAME: recvCallBack * * DESCRIPTION: Message handler for different message types */ bool MP1Node::recvCallBack(void *env, char *data, int size ) { /* * Your code goes here */ #pragma pack(push,1) MessageHdr *mType = reinterpret_cast<MessageHdr*>(data); switch (mType->msgType) { case JOINREQ: { Address* fromAddr = reinterpret_cast<Address*>(mType + 1); long* heartbeat = reinterpret_cast<long*>(fromAddr + 1); MemberListEntry* newNode = new MemberListEntry(AddrUtils::getID(*fromAddr), AddrUtils::getPort(*fromAddr), *heartbeat, par->getcurrtime()); memberNode->memberList.push_back(*newNode); #ifdef DEBUGLOG log->logNodeAdd(&memberNode->addr, fromAddr); #endif sendMemberList(fromAddr, JOINREP); break; } case JOINREP: { memberNode->inGroup = true; updateMemberList((unsigned char*) data, size); break; } case GOSSIP: { updateMemberList((unsigned char*) data, size); break; } case FAIL: { Address* failAddr = reinterpret_cast<Address*>(mType + 1); handleFAILNotification(failAddr); break; } default: { cout << "in case default - " << endl; break; } } #pragma pack(pop) return 1; }
void ContactsForVideoConference::allMembersDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles) { auto allMembersModel = Logic::getCustomSearchModelDLG(false, true); allMembers_.Members_.clear(); int nCount = 0; for (int i = 0; i < allMembersModel->rowCount(); i++) { QModelIndex modelIndex = allMembersModel->index(i); Data::DlgState dataContact = qvariant_cast<Data::DlgState>(allMembersModel->data(modelIndex, Qt::DisplayRole)); Data::ChatMemberInfo memberInfo; memberInfo.AimId_ = dataContact.AimId_; memberInfo.NickName_ = dataContact.Friendly_; allMembers_.Members_.push_back(memberInfo); nCount++; } allMembers_.MembersCount_ = nCount; if (allMembers_.MembersCount_ > 0) { updateMemberList(); disconnect(connection_); } }
void CGuildUnifierClientSkel::updateMemberList_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message) { H_AUTO(CGuildUnifierClientSkel_updateMemberList_UML); uint32 guildId; nlRead(__message, serial, guildId); std::vector < CGuildMemberDesc > members; nlRead(__message, serialCont, members); updateMemberList(sender, guildId, members); }
SelectionContactsForConference::SelectionContactsForConference( Logic::ChatMembersModel* _conferenceMembersModel, Logic::ChatMembersModel* _otherContactsModel, const QString& _labelText, QWidget* _parent, ConferenceSearchMember& usersSearchModel, bool _handleKeyPressEvents) : SelectContactsWidget( _conferenceMembersModel, Logic::MembersWidgetRegim::VIDEO_CONFERENCE, _labelText, "", _parent, _handleKeyPressEvents, &usersSearchModel), conferenceMembersModel_(_conferenceMembersModel), videoConferenceMaxUsers_(-1) { setStyleSheet(Utils::LoadStyle(":/qss/videochat_dialog")); mainWidget_ = new QWidget(this); auto mainWidgetLayout = Utils::emptyVLayout(mainWidget_); mainWidget_->setLayout(mainWidgetLayout); mainWidgetLayout->setContentsMargins(0, 0, 0, 0); mainWidget_->setContentsMargins(0, 0, 0, 0); auto memberWidget = new PureClickedWidget(this); memberWidget->setContentsMargins(Utils::scale_value(16), Utils::scale_value(12), Utils::scale_value(20), Utils::scale_value(4)); auto memberWidgetLayout = Utils::emptyHLayout(memberWidget); memberWidget->setLayout(memberWidgetLayout); memberWidget->setCursor(Qt::PointingHandCursor); memberWidget->setStyleSheet(Utils::LoadStyle(":/qss/videochat_dialog")); memberLabel_ = new QLabel(QT_TRANSLATE_NOOP("voip_pages", "MEMBERS"), memberWidget); memberLabel_->setContentsMargins(0, 0, 0, 0); QPalette p; p.setColor(QPalette::Foreground, CommonStyle::getColor(CommonStyle::Color::GREEN_TEXT)); memberLabel_->setPalette(p); memberLabel_->setFont(Fonts::appFontScaled(12, Fonts::FontWeight::Medium)); memberWidgetLayout->addWidget(memberLabel_); memberWidgetLayout->addSpacing(Utils::scale_value(6)); memberArrowLabel_ = new QPushButton(memberWidget); memberArrowLabel_->setStyleSheet("border: 0;"); memberArrowLabel_->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); memberArrowLabel_->setStyle(QApplication::style()); memberArrowLabel_->setContentsMargins(0, 0, 0, 0); if (platform::is_apple()) { memberWidgetLayout->addWidget(memberArrowLabel_, 0, Qt::AlignTop); } else { memberWidgetLayout->addWidget(memberArrowLabel_); } memberWidgetLayout->addStretch(); auto clDelegate = new Logic::ContactListItemDelegate(this, Logic::MembersWidgetRegim::VIDEO_CONFERENCE, conferenceMembersModel_); conferenceContacts_ = CreateFocusableViewAndSetTrScrollBar(this); conferenceContacts_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); conferenceContacts_->setFrameShape(QFrame::NoFrame); conferenceContacts_->setSpacing(0); conferenceContacts_->setModelColumn(0); conferenceContacts_->setUniformItemSizes(false); conferenceContacts_->setBatchSize(50); conferenceContacts_->setStyleSheet("background: transparent;"); conferenceContacts_->setCursor(Qt::PointingHandCursor); conferenceContacts_->setMouseTracking(true); conferenceContacts_->setAcceptDrops(true); conferenceContacts_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); conferenceContacts_->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); conferenceContacts_->setAutoScroll(false); conferenceContacts_->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); conferenceContacts_->setAttribute(Qt::WA_MacShowFocusRect, false); conferenceContacts_->setModel(conferenceMembersModel_); conferenceContacts_->setItemDelegate(clDelegate); conferenceContacts_->setContentsMargins(0, 0, 0, 0); auto othersLabel = new QLabel(QT_TRANSLATE_NOOP("voip_pages", "OTHERS"), mainWidget_); othersLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); othersLabel->setContentsMargins(Utils::scale_value(16), Utils::scale_value(12), Utils::scale_value(20), Utils::scale_value(4)); //Qt ignory our Margins if zoom is 200%. This line fix this problem. othersLabel->setMinimumHeight(2 * Utils::scale_value(12) + Utils::scale_value(4)); QPalette pal; pal.setColor(QPalette::Foreground, CommonStyle::getColor(CommonStyle::Color::GREEN_TEXT)); othersLabel->setPalette(pal); othersLabel->setFont(Fonts::appFontScaled(12, Fonts::FontWeight::Medium)); auto index = globalLayout_->indexOf(searchWidget_); mainWidgetLayout->addWidget(memberWidget); mainWidgetLayout->addWidget(conferenceContacts_); mainWidgetLayout->addWidget(othersLabel); contactList_->setIndexWidget(0, mainWidget_); usersSearchModel.setWidget(mainWidget_); globalLayout_->insertWidget(index + 1, contactList_, 1); mainDialog_->addButtonsPair(QT_TRANSLATE_NOOP("popup_window", "CANCEL"), QT_TRANSLATE_NOOP("popup_window", "ADD"), true); connect(conferenceContacts_, &FocusableListView::clicked, this, &SelectionContactsForConference::itemClicked, Qt::QueuedConnection); // Update other contacts list. connect(_otherContactsModel, &Logic::ChatMembersModel::dataChanged, this, [=]() { searchModel_->searchPatternChanged(searchModel_->getCurrentPattern()); }); connect(&Ui::GetDispatcher()->getVoipController(), &voip_proxy::VoipController::onVoipCallNameChanged, this, &SelectionContactsForConference::onVoipCallNameChanged, Qt::DirectConnection); connect(&Ui::GetDispatcher()->getVoipController(), &voip_proxy::VoipController::onVoipCallDestroyed, this, &SelectionContactsForConference::onVoipCallDestroyed, Qt::DirectConnection); connect(memberWidget, &PureClickedWidget::clicked, this, &SelectionContactsForConference::clickConferenceMembers); connect(memberArrowLabel_, &QPushButton::clicked, this, &SelectionContactsForConference::clickConferenceMembers); clickConferenceMembers(); updateMemberList(); }
ContactsForVideoConference::ContactsForVideoConference(QObject* parent, const Logic::ChatMembersModel& videoConferenceModel) : Logic::ChatMembersModel(parent), videoConferenceModel_(videoConferenceModel) { connect(&videoConferenceModel_, &Logic::ChatMembersModel::dataChanged, this, &ContactsForVideoConference::updateMemberList); updateMemberList(); }
void SelectionContactsForConference::onVoipCallNameChanged(const voip_manager::ContactsList& _contacts) { updateMemberList(); }