diff options
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers')
-rw-r--r-- | Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp b/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp index 26e1623..fbb0274 100644 --- a/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp +++ b/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp @@ -12,6 +12,32 @@ VCardSerializer::VCardSerializer() : GenericPayloadSerializer<VCard>() { String VCardSerializer::serializePayload(boost::shared_ptr<VCard> vcard) const { XMLElement queryElement("vCard", "vcard-temp"); + if (!vcard->getFullName().isEmpty()) { + boost::shared_ptr<XMLElement> fullNameElement(new XMLElement("FN")); + fullNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getFullName()))); + queryElement.addNode(fullNameElement); + } + if (!vcard->getGivenName().isEmpty() || !vcard->getFamilyName().isEmpty()) { + boost::shared_ptr<XMLElement> nameElement(new XMLElement("N")); + if (!vcard->getFamilyName().isEmpty()) { + boost::shared_ptr<XMLElement> familyNameElement(new XMLElement("FAMILY")); + familyNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getFamilyName()))); + nameElement->addNode(familyNameElement); + } + if (!vcard->getGivenName().isEmpty()) { + boost::shared_ptr<XMLElement> givenNameElement(new XMLElement("GIVEN")); + givenNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getGivenName()))); + nameElement->addNode(givenNameElement); + } + queryElement.addNode(nameElement); + } + if (!vcard->getEMail().isEmpty()) { + boost::shared_ptr<XMLElement> emailElement(new XMLElement("EMAIL")); + boost::shared_ptr<XMLElement> userIDElement(new XMLElement("USERID")); + userIDElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getEMail()))); + emailElement->addNode(userIDElement); + queryElement.addNode(emailElement); + } if (!vcard->getNickname().isEmpty()) { boost::shared_ptr<XMLElement> nickElement(new XMLElement("NICKNAME")); nickElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getNickname()))); |