aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppVCard.cpp
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2009-09-07 15:17:44 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2009-09-07 15:17:44 +0000
commit0b606b76e679c587fb14c2472de1b809954f29bf (patch)
treee5e62344d87a95d9fc1601bea953befe7512ca0d /source/QXmppVCard.cpp
parentda98f95e3130149725c3e96313619404dd7debd3 (diff)
downloadqxmpp-0b606b76e679c587fb14c2472de1b809954f29bf.tar.gz
XEP-0054: vcard-temp implementation and other code cleanups
Diffstat (limited to 'source/QXmppVCard.cpp')
-rw-r--r--source/QXmppVCard.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/source/QXmppVCard.cpp b/source/QXmppVCard.cpp
new file mode 100644
index 00000000..35333319
--- /dev/null
+++ b/source/QXmppVCard.cpp
@@ -0,0 +1,101 @@
+/*
+ * 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 <QTextStream>
+#include <QImage>
+
+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;
+}
+
+const QByteArray& QXmppVCard::getPhoto() const
+{
+ return m_photo;
+}
+
+void QXmppVCard::setPhoto(const QByteArray& photo)
+{
+ m_photo = photo;
+}
+
+void QXmppVCard::parse(const QDomElement& nodeRecv)
+{
+ QString id = nodeRecv.attribute("id");
+ QString to = nodeRecv.attribute("to");
+ QString from = nodeRecv.attribute("from");
+ QString type = nodeRecv.attribute("type");
+ setTypeFromStr(type);
+ setId(id);
+ setTo(to);
+ setFrom(from);
+
+ // vCard
+ setFullName(nodeRecv.firstChildElement("vCard").
+ firstChildElement("FN").text());
+ QByteArray base64data = nodeRecv.firstChildElement("vCard").
+ firstChildElement("PHOTO").
+ firstChildElement("BINVAL").text().toAscii();
+ setPhoto(QByteArray::fromBase64(base64data));
+}
+
+QByteArray QXmppVCard::toXmlElementFromChild() const
+{
+ QString data;
+ QTextStream stream(&data);
+
+ stream << "<vCard";
+ helperToXmlAddAttribute(stream, "xmlns", ns_vcard);
+ stream << ">";
+ helperToXmlAddElement(stream, "FN", getFullName());
+
+ stream << "<PHOTO";
+ helperToXmlAddElement(stream, "TYPE", getImageType(getPhoto()));
+ helperToXmlAddElement(stream, "BINVAL", getPhoto());
+ stream << "</PHOTO>";
+
+ stream << "</vCard>";
+
+ return data.toAscii();
+}
+
+const QImage& QXmppVCard::getPhotoAsImage() const
+{
+ return getImageFromByteArray(getPhoto());
+}