void RoomHandler::requestVoice () { QList<QXmppDataForm::Field> fields; QXmppDataForm::Field typeField (QXmppDataForm::Field::HiddenField); typeField.setKey ("FORM_TYPE"); typeField.setValue ("http://jabber.org/protocol/muc#request"); fields << typeField; QXmppDataForm::Field reqField (QXmppDataForm::Field::TextSingleField); reqField.setLabel ("Requested role"); reqField.setKey ("muc#role"); reqField.setValue ("participant"); fields << reqField; QXmppDataForm form; form.setType (QXmppDataForm::Submit); form.setFields (fields); QXmppMessage msg ("", Room_->jid ()); msg.setType (QXmppMessage::Normal); msg.setExtensions (XooxUtil::Form2XmppElem (form)); Account_->GetClientConnection ()->GetClient ()->sendPacket (msg); }
void Xep0313ReqIq::toXmlElementFromChild (QXmlStreamWriter *writer) const { QXmppIq::toXmlElementFromChild (writer); writer->writeStartElement ("query"); const auto endGuard = Util::MakeScopeGuard ([writer] { writer->writeEndElement (); }); writer->writeAttribute ("xmlns", Xep0313Manager::GetNsUri ()); if (!QueryID_.isEmpty ()) writer->writeAttribute ("queryid", QueryID_); if (JID_.isEmpty () && !Count_ && ItemId_.isEmpty ()) return; if (!JID_.isEmpty ()) { QXmppDataForm::Field formTypeField { QXmppDataForm::Field::HiddenField }; formTypeField.setKey ("FORM_TYPE"); formTypeField.setValue (Xep0313Manager::GetNsUri ()); QXmppDataForm::Field jidField { QXmppDataForm::Field::JidSingleField }; jidField.setKey ("with"); jidField.setValue (JID_); QXmppDataForm form { QXmppDataForm::Form }; form.setFields ({ formTypeField, jidField }); form.toXml (writer); } if (Count_ > 0 || !ItemId_.isEmpty ()) { QXmppResultSetQuery q; if (Count_ > 0) q.setMax (Count_); if (!ItemId_.isEmpty ()) { switch (Dir_) { case Direction::After: q.setAfter (ItemId_); break; case Direction::Before: q.setBefore (ItemId_); break; default: break; } } q.toXml (writer); } }