QXmppMessage Forwarded2Message (const QXmppElement& wrapper) { const auto& forwardedElem = wrapper.tagName () == "forwarded" ? wrapper : wrapper.firstChildElement ("forwarded"); if (forwardedElem.isNull ()) return {}; const auto& messageElem = forwardedElem.firstChildElement ("message"); if (messageElem.isNull ()) return {}; QXmppMessage original; #if QXMPP_VERSION >= 0x000800 original.parse (messageElem.sourceDomElement ()); #else #warning "You won't have good forwarded messages, Message Archive Management and Message Carbons will look like crap." original.parse (XmppElem2DomElem (messageElem)); #endif auto delayElem = forwardedElem.firstChildElement ("delay"); if (!delayElem.isNull ()) { const auto& sourceDT = QXmppUtils::datetimeFromString (delayElem.attribute ("stamp")); original.setStamp (sourceDT.toLocalTime ()); } return original; }
foreach (QXmppElement element, extensions()) { if (element.tagName() == "html") { QString html; QXmlStreamWriter writer(&html); element.toXml(&writer); return html; } }