void RoomHandler::handleParticipantChanged (const QString& jid) { const QXmppPresence& pres = Room_->participantPresence (jid); QString nick; ClientConnection::Split (jid, 0, &nick); RoomParticipantEntry_ptr entry = GetParticipantEntry (nick); entry->HandlePresence (pres, QString ()); if (XooxUtil::PresenceToStatus (pres) != entry->GetStatus (QString ())) MakeStatusChangedMessage (pres, nick); const QXmppMucItem& item = pres.mucItem (); if (item.affiliation () != entry->GetAffiliation () || item.role () != entry->GetRole ()) HandlePermsChanged (nick, item.affiliation (), item.role (), item.reason ()); }
void RoomHandler::handleParticipantAdded (const QString& jid) { const QXmppPresence& pres = Room_->participantPresence (jid); QString nick; ClientConnection::Split (jid, 0, &nick); if (PendingNickChanges_.remove (nick)) return; RoomParticipantEntry_ptr entry = GetParticipantEntry (nick); entry->SetAffiliation (pres.mucItem ().affiliation ()); entry->SetRole (pres.mucItem ().role ()); entry->SetPhotoHash (pres.photoHash ()); entry->HandlePresence (pres, ""); MakeJoinMessage (pres, nick); }