QXmppElement Form2XmppElem (const QXmppDataForm& form) { QByteArray formData; QXmlStreamWriter w (&formData); form.toXml (&w); QDomDocument doc; doc.setContent (formData); return doc.documentElement (); }
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); } }