void ProcessMuc::initMuc( const std::string &jid, const std::string &password, ResourceContextRef rc) { Jid roomNode; roomNode.setJid(jid); //1. group MucGroup::ref roomGrp; roomGrp=boost::dynamic_pointer_cast<MucGroup> (rc->roster->findGroup(roomNode.getBareJid())); if (!roomGrp) { roomGrp=MucGroup::ref(new MucGroup(roomNode.getBareJid(), roomNode.getUserName())); rc->roster->addGroup(roomGrp); } roomGrp->password=password; //2. room contact MucRoom::ref room=roomGrp->room; if (!room) { room=MucRoom::ref(new MucRoom(jid)); roomGrp->room=room; room->group=roomGrp->getName(); } rosterWnd->openChat(room); //3. selfcontact roomGrp->selfContact=getMucContactEntry(jid, rc); }