/* * Copyright (C) 2008-2009 Manjeet Dahiya * * Author: * Manjeet Dahiya * * Source: * http://code.google.com/p/qxmpp * * This file is a part of QXmpp library. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * */ #include "QXmppVCard.h" #include "QXmppUtils.h" #include "QXmppConstants.h" #include #include #include QXmppVCard::QXmppVCard(const QString& jid) : QXmppIq(QXmppIq::Get) { // for self jid should be empty setTo(jid); } QString QXmppVCard::getFullName() const { return m_fullName; } void QXmppVCard::setFullName(const QString& str) { m_fullName = str; } QString QXmppVCard::getNickName() const { return m_nickName; } void QXmppVCard::setNickName(const QString& str) { m_nickName = str; } const QByteArray& QXmppVCard::getPhoto() const { return m_photo; } void QXmppVCard::setPhoto(const QByteArray& photo) { m_photo = photo; } void QXmppVCard::setPhoto(const QImage& image) { QByteArray ba; QBuffer buffer(&ba); buffer.open(QIODevice::WriteOnly); image.save(&buffer, "PNG"); m_photo = ba; } void QXmppVCard::parse(const QDomElement& nodeRecv) { QXmppStanza::parse(nodeRecv); setTypeFromStr(nodeRecv.attribute("type")); // vCard setFullName(nodeRecv.firstChildElement("vCard"). firstChildElement("FN").text()); setNickName(nodeRecv.firstChildElement("vCard"). firstChildElement("NICKNAME").text()); QByteArray base64data = nodeRecv.firstChildElement("vCard"). firstChildElement("PHOTO"). firstChildElement("BINVAL").text().toAscii(); setPhoto(QByteArray::fromBase64(base64data)); } void QXmppVCard::toXmlElementFromChild(QXmlStreamWriter *writer) const { writer->writeStartElement("vCard"); helperToXmlAddAttribute(writer,"xmlns", ns_vcard); helperToXmlAddTextElement(writer, "FN", getFullName()); if(!getNickName().isEmpty()) helperToXmlAddTextElement(writer, "NICKNAME", getNickName()); if(!getPhoto().isEmpty()) { writer->writeStartElement("PHOTO"); helperToXmlAddTextElement(writer, "TYPE", getImageType(getPhoto())); helperToXmlAddTextElement(writer, "BINVAL", getPhoto().toBase64()); writer->writeEndElement(); } writer->writeEndElement(); } QImage QXmppVCard::getPhotoAsImage() const { return getImageFromByteArray(getPhoto()); }