From 966a6f2f63f089624dbd50844069f2b86e13dd81 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Tue, 7 Sep 2010 06:57:12 +0000 Subject: QXmppVCard to QXmppVCardIq --- src/QXmppVCard.cpp | 353 --------------------------------------------------- src/QXmppVCard.h | 162 ++++++----------------- src/QXmppVCardIq.cpp | 353 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/QXmppVCardIq.h | 121 ++++++++++++++++++ src/src.pro | 3 +- 5 files changed, 517 insertions(+), 475 deletions(-) delete mode 100644 src/QXmppVCard.cpp create mode 100644 src/QXmppVCardIq.cpp create mode 100644 src/QXmppVCardIq.h (limited to 'src') diff --git a/src/QXmppVCard.cpp b/src/QXmppVCard.cpp deleted file mode 100644 index da4ada0a..00000000 --- a/src/QXmppVCard.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/* - * Copyright (C) 2008-2010 The QXmpp developers - * - * 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 -#include - -#ifndef QXMPP_NO_GUI -#include -#include -#endif - -#include "QXmppVCard.h" -#include "QXmppUtils.h" -#include "QXmppConstants.h" - -QString getImageType(const QByteArray &contents) -{ - if (contents.startsWith("\x89PNG\x0d\x0a\x1a\x0a")) - return "image/png"; - else if (contents.startsWith("\x8aMNG")) - return "video/x-mng"; - else if (contents.startsWith("GIF8")) - return "image/gif"; - else if (contents.startsWith("BM")) - return "image/bmp"; - else if (contents.contains("/* XPM */")) - return "image/x-xpm"; - else if (contents.contains("writeStartElement("vCard"); - helperToXmlAddAttribute(writer,"xmlns", ns_vcard); - if (m_birthday.isValid()) - helperToXmlAddTextElement(writer, "BDAY", m_birthday.toString("yyyy-MM-dd")); - if (!m_email.isEmpty()) - { - writer->writeStartElement("EMAIL"); - writer->writeEmptyElement("INTERNET"); - helperToXmlAddTextElement(writer, "USERID", m_email); - writer->writeEndElement(); - } - if (!m_fullName.isEmpty()) - helperToXmlAddTextElement(writer, "FN", m_fullName); - if(!m_nickName.isEmpty()) - helperToXmlAddTextElement(writer, "NICKNAME", m_nickName); - if (!m_firstName.isEmpty() || - !m_lastName.isEmpty() || - !m_middleName.isEmpty()) - { - writer->writeStartElement("N"); - if (!m_firstName.isEmpty()) - helperToXmlAddTextElement(writer, "GIVEN", m_firstName); - if (!m_lastName.isEmpty()) - helperToXmlAddTextElement(writer, "FAMILY", m_lastName); - if (!m_middleName.isEmpty()) - helperToXmlAddTextElement(writer, "MIDDLE", m_middleName); - writer->writeEndElement(); - } - if (!m_url.isEmpty()) - helperToXmlAddTextElement(writer, "URL", m_url); - - if(!photo().isEmpty()) - { - writer->writeStartElement("PHOTO"); - QString photoType = m_photoType; - if (photoType.isEmpty()) - photoType = getImageType(m_photo); - helperToXmlAddTextElement(writer, "TYPE", photoType); - helperToXmlAddTextElement(writer, "BINVAL", m_photo.toBase64()); - writer->writeEndElement(); - } - - writer->writeEndElement(); -} - -#ifndef QXMPP_NO_GUI -QImage QXmppVCard::photoAsImage() const -{ - QBuffer buffer; - buffer.setData(m_photo); - buffer.open(QIODevice::ReadOnly); - QImageReader imageReader(&buffer); - return imageReader.read(); -} - -void QXmppVCard::setPhoto(const QImage& image) -{ - QByteArray ba; - QBuffer buffer(&ba); - buffer.open(QIODevice::WriteOnly); - image.save(&buffer, "PNG"); - m_photo = ba; - m_photoType = "image/png"; -} -#endif - -QString QXmppVCard::getFullName() const -{ - return m_fullName; -} - -QString QXmppVCard::getNickName() const -{ - return m_nickName; -} - -const QByteArray& QXmppVCard::getPhoto() const -{ - return m_photo; -} - -#ifndef QXMPP_NO_GUI -QImage QXmppVCard::getPhotoAsImage() const -{ - return photoAsImage(); -} -#endif diff --git a/src/QXmppVCard.h b/src/QXmppVCard.h index 2f417514..0a5ad5b3 100644 --- a/src/QXmppVCard.h +++ b/src/QXmppVCard.h @@ -1,121 +1,41 @@ -/* - * Copyright (C) 2008-2010 The QXmpp developers - * - * 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. - * - */ - - -#ifndef QXMPPVCARD_H -#define QXMPPVCARD_H - -#include "QXmppIq.h" -#include -#include -#include - -class QImage; - -/// \brief Represents the XMPP vCard. -/// -/// The functions names are self explanatory. -/// Look at QXmppVCardManager and XEP-0054: vcard-temp for more details. -/// -/// There are many field of XMPP vCard which are not present in -/// this class. File a issue for the same. We will add the requested -/// field to this class. -/// - -class QXmppVCard : public QXmppIq -{ -public: - QXmppVCard(const QString& bareJid = ""); - - QDate birthday() const; - void setBirthday(const QDate &birthday); - - QString email() const; - void setEmail(const QString&); - - QString firstName() const; - void setFirstName(const QString&); - - QString fullName() const; - void setFullName(const QString&); - - QString lastName() const; - void setLastName(const QString&); - - QString middleName() const; - void setMiddleName(const QString&); - - QString nickName() const; - void setNickName(const QString&); - - QByteArray photo() const; - void setPhoto(const QByteArray&); - - QString photoType() const; - void setPhotoType(const QString &type); - - QString url() const; - void setUrl(const QString&); - - static bool isVCard(const QDomElement &element); - - /// \cond -// deprecated in release 0.3.0, as it drags in a dependency -// on QtGui, whilst the rest of QXmpp does not require QtGui -#ifndef QXMPP_NO_GUI - QImage Q_DECL_DEPRECATED photoAsImage() const; - void Q_DECL_DEPRECATED setPhoto(const QImage&); -#endif - -// deprecated accessors, use the form without "get" instead -// deprecated in release 0.2.0 - QString Q_DECL_DEPRECATED getFullName() const; - QString Q_DECL_DEPRECATED getNickName() const; -#ifndef QXMPP_NO_GUI - QImage Q_DECL_DEPRECATED getPhotoAsImage() const; -#endif - const QByteArray Q_DECL_DEPRECATED & getPhoto() const; - /// \endcond - -protected: - /// \cond - void parseElementFromChild(const QDomElement&); - void toXmlElementFromChild(QXmlStreamWriter *writer) const; - /// \endcond - -private: - QDate m_birthday; - QString m_email; - QString m_firstName; - QString m_fullName; - QString m_lastName; - QString m_middleName; - QString m_nickName; - QString m_url; - - // not as 64 base - QByteArray m_photo; - QString m_photoType; -}; - -#endif // QXMPPVCARD_H +/* + * Copyright (C) 2008-2010 The QXmpp developers + * + * Authors: + * 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. + * + */ + +#ifndef QXMPPVCARD_H +#define QXMPPVCARD_H + +// deprecated in release 0.3.0 +#warning "QXmppVCard.h is deprecated, use QXmppVCardIq instead" + +#include "QXmppVCardIq.h" + +// QXmppVCard inherits QXmppVCardIq, to maintain backward compatibility +class QXmppVCard : public QXmppVCardIq +{ +public: + QXmppVCard(const QString& bareJid = ""):QXmppVCardIq(bareJid) + { + } +}; + +#endif //QXMPPVCARD_H diff --git a/src/QXmppVCardIq.cpp b/src/QXmppVCardIq.cpp new file mode 100644 index 00000000..7f0f8f6a --- /dev/null +++ b/src/QXmppVCardIq.cpp @@ -0,0 +1,353 @@ +/* + * Copyright (C) 2008-2010 The QXmpp developers + * + * 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 +#include + +#ifndef QXMPP_NO_GUI +#include +#include +#endif + +#include "QXmppVCardIq.h" +#include "QXmppUtils.h" +#include "QXmppConstants.h" + +QString getImageType(const QByteArray &contents) +{ + if (contents.startsWith("\x89PNG\x0d\x0a\x1a\x0a")) + return "image/png"; + else if (contents.startsWith("\x8aMNG")) + return "video/x-mng"; + else if (contents.startsWith("GIF8")) + return "image/gif"; + else if (contents.startsWith("BM")) + return "image/bmp"; + else if (contents.contains("/* XPM */")) + return "image/x-xpm"; + else if (contents.contains("writeStartElement("vCard"); + helperToXmlAddAttribute(writer,"xmlns", ns_vcard); + if (m_birthday.isValid()) + helperToXmlAddTextElement(writer, "BDAY", m_birthday.toString("yyyy-MM-dd")); + if (!m_email.isEmpty()) + { + writer->writeStartElement("EMAIL"); + writer->writeEmptyElement("INTERNET"); + helperToXmlAddTextElement(writer, "USERID", m_email); + writer->writeEndElement(); + } + if (!m_fullName.isEmpty()) + helperToXmlAddTextElement(writer, "FN", m_fullName); + if(!m_nickName.isEmpty()) + helperToXmlAddTextElement(writer, "NICKNAME", m_nickName); + if (!m_firstName.isEmpty() || + !m_lastName.isEmpty() || + !m_middleName.isEmpty()) + { + writer->writeStartElement("N"); + if (!m_firstName.isEmpty()) + helperToXmlAddTextElement(writer, "GIVEN", m_firstName); + if (!m_lastName.isEmpty()) + helperToXmlAddTextElement(writer, "FAMILY", m_lastName); + if (!m_middleName.isEmpty()) + helperToXmlAddTextElement(writer, "MIDDLE", m_middleName); + writer->writeEndElement(); + } + if (!m_url.isEmpty()) + helperToXmlAddTextElement(writer, "URL", m_url); + + if(!photo().isEmpty()) + { + writer->writeStartElement("PHOTO"); + QString photoType = m_photoType; + if (photoType.isEmpty()) + photoType = getImageType(m_photo); + helperToXmlAddTextElement(writer, "TYPE", photoType); + helperToXmlAddTextElement(writer, "BINVAL", m_photo.toBase64()); + writer->writeEndElement(); + } + + writer->writeEndElement(); +} + +#ifndef QXMPP_NO_GUI +QImage QXmppVCardIq::photoAsImage() const +{ + QBuffer buffer; + buffer.setData(m_photo); + buffer.open(QIODevice::ReadOnly); + QImageReader imageReader(&buffer); + return imageReader.read(); +} + +void QXmppVCardIq::setPhoto(const QImage& image) +{ + QByteArray ba; + QBuffer buffer(&ba); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "PNG"); + m_photo = ba; + m_photoType = "image/png"; +} +#endif + +QString QXmppVCardIq::getFullName() const +{ + return m_fullName; +} + +QString QXmppVCardIq::getNickName() const +{ + return m_nickName; +} + +const QByteArray& QXmppVCardIq::getPhoto() const +{ + return m_photo; +} + +#ifndef QXMPP_NO_GUI +QImage QXmppVCardIq::getPhotoAsImage() const +{ + return photoAsImage(); +} +#endif diff --git a/src/QXmppVCardIq.h b/src/QXmppVCardIq.h new file mode 100644 index 00000000..cdb5d8b7 --- /dev/null +++ b/src/QXmppVCardIq.h @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2008-2010 The QXmpp developers + * + * 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. + * + */ + + +#ifndef QXMPPVCARDIQ_H +#define QXMPPVCARDIQ_H + +#include "QXmppIq.h" +#include +#include +#include + +class QImage; + +/// \brief Represents the XMPP vCard. +/// +/// The functions names are self explanatory. +/// Look at QXmppVCardManager and XEP-0054: vcard-temp for more details. +/// +/// There are many field of XMPP vCard which are not present in +/// this class. File a issue for the same. We will add the requested +/// field to this class. +/// + +class QXmppVCardIq : public QXmppIq +{ +public: + QXmppVCardIq(const QString& bareJid = ""); + + QDate birthday() const; + void setBirthday(const QDate &birthday); + + QString email() const; + void setEmail(const QString&); + + QString firstName() const; + void setFirstName(const QString&); + + QString fullName() const; + void setFullName(const QString&); + + QString lastName() const; + void setLastName(const QString&); + + QString middleName() const; + void setMiddleName(const QString&); + + QString nickName() const; + void setNickName(const QString&); + + QByteArray photo() const; + void setPhoto(const QByteArray&); + + QString photoType() const; + void setPhotoType(const QString &type); + + QString url() const; + void setUrl(const QString&); + + static bool isVCard(const QDomElement &element); + + /// \cond +// deprecated in release 0.3.0, as it drags in a dependency +// on QtGui, whilst the rest of QXmpp does not require QtGui +#ifndef QXMPP_NO_GUI + QImage Q_DECL_DEPRECATED photoAsImage() const; + void Q_DECL_DEPRECATED setPhoto(const QImage&); +#endif + +// deprecated accessors, use the form without "get" instead +// deprecated in release 0.2.0 + QString Q_DECL_DEPRECATED getFullName() const; + QString Q_DECL_DEPRECATED getNickName() const; +#ifndef QXMPP_NO_GUI + QImage Q_DECL_DEPRECATED getPhotoAsImage() const; +#endif + const QByteArray Q_DECL_DEPRECATED & getPhoto() const; + /// \endcond + +protected: + /// \cond + void parseElementFromChild(const QDomElement&); + void toXmlElementFromChild(QXmlStreamWriter *writer) const; + /// \endcond + +private: + QDate m_birthday; + QString m_email; + QString m_firstName; + QString m_fullName; + QString m_lastName; + QString m_middleName; + QString m_nickName; + QString m_url; + + // not as 64 base + QByteArray m_photo; + QString m_photoType; +}; + +#endif // QXMPPVCARDIQ_H diff --git a/src/src.pro b/src/src.pro index f369be40..5bcb3289 100644 --- a/src/src.pro +++ b/src/src.pro @@ -79,6 +79,7 @@ INSTALL_HEADERS = QXmppUtils.h \ QXmppRemoteMethod.h \ QXmppRpcIq.h \ QXmppVCardManager.h \ + QXmppVCardIq.h \ QXmppVCard.h \ QXmppVersionIq.h HEADERS += $$INSTALL_HEADERS @@ -133,7 +134,7 @@ SOURCES += QXmppUtils.cpp \ QXmppRemoteMethod.cpp \ QXmppRpcIq.cpp \ QXmppVCardManager.cpp \ - QXmppVCard.cpp \ + QXmppVCardIq.cpp \ QXmppVersionIq.cpp # Plugins -- cgit v1.2.3