diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:51:15 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:51:15 +0000 |
| commit | deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4 (patch) | |
| tree | d956bad28e28aadc3c83dbf88b3eddb5e1d9a9f4 /src/base/QXmppPresence.h | |
| parent | e8a1ad0cc608f12874ba4bafbd8282fa537ec9fb (diff) | |
| download | qxmpp-deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4.tar.gz | |
move files common to client/server into "base"
Diffstat (limited to 'src/base/QXmppPresence.h')
| -rw-r--r-- | src/base/QXmppPresence.h | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/src/base/QXmppPresence.h b/src/base/QXmppPresence.h new file mode 100644 index 00000000..8b85e01b --- /dev/null +++ b/src/base/QXmppPresence.h @@ -0,0 +1,176 @@ +/* + * Copyright (C) 2008-2011 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 QXMPPPRESENCE_H +#define QXMPPPRESENCE_H + +#include "QXmppStanza.h" +#include "QXmppMucIq.h" + +/// \brief The QXmppPresence class represents an XMPP presence stanza. +/// +/// \ingroup Stanzas +class QXmppPresence : public QXmppStanza +{ +public: + /// This enum is used to describe a presence type. + enum Type + { + Error = 0, ///< An error has occurred regarding processing or delivery of a previously-sent presence stanza. + Available, ///< Signals that the sender is online and available for communication. + Unavailable, ///< Signals that the sender is no longer available for communication. + Subscribe, ///< The sender wishes to subscribe to the recipient's presence. + Subscribed, ///< The sender has allowed the recipient to receive their presence. + Unsubscribe, ///< The sender is unsubscribing from another entity's presence. + Unsubscribed, ///< The subscription request has been denied or a previously-granted subscription has been cancelled. + Probe ///< A request for an entity's current presence; SHOULD be generated only by a server on behalf of a user. + }; + + // XEP-0153: vCard-Based Avatars + enum VCardUpdateType + { + VCardUpdateNone = 0, ///< Protocol is not supported + VCardUpdateNoPhoto, ///< User is not using any image + VCardUpdateValidPhoto, ///< User is advertising an image + VCardUpdateNotReady ///< User is not ready to advertise an image + +/// \note This enables recipients to distinguish between the absence of an image +/// (empty photo element) and mere support for the protocol (empty update child). + }; + + /// \brief The QXmppPresence::Status class represents the status of an XMPP entity. + /// + /// It stores information such as the "away", "busy" status of a user, or + /// a human-readable description. + + class Status + { + public: + /// This enum is used to describe an availability status. + enum Type + { + Offline = 0, + Online, ///< The entity or resource is online. + Away, ///< The entity or resource is temporarily away. + XA, ///< The entity or resource is away for an extended period. + DND, ///< The entity or resource is busy ("Do Not Disturb"). + Chat, ///< The entity or resource is actively interested in chatting. + }; + + Status(QXmppPresence::Status::Type type = QXmppPresence::Status::Online, + const QString statusText = "", int priority = 0); + + QXmppPresence::Status::Type type() const; + void setType(QXmppPresence::Status::Type); + + QString statusText() const; + void setStatusText(const QString&); + + int priority() const; + void setPriority(int); + + /// \cond + void parse(const QDomElement &element); + void toXml(QXmlStreamWriter *writer) const; + /// \endcond + + private: + QString getTypeStr() const; + void setTypeFromStr(const QString&); + + QXmppPresence::Status::Type m_type; + QString m_statusText; + int m_priority; + }; + + QXmppPresence(QXmppPresence::Type type = QXmppPresence::Available, + const QXmppPresence::Status& status = QXmppPresence::Status()); + ~QXmppPresence(); + + QXmppPresence::Type type() const; + void setType(QXmppPresence::Type); + + QXmppPresence::Status& status(); + const QXmppPresence::Status& status() const; + void setStatus(const QXmppPresence::Status&); + + /// \cond + void parse(const QDomElement &element); + void toXml(QXmlStreamWriter *writer) const; + /// \endcond + + // XEP-0045: Multi-User Chat + QXmppMucItem mucItem() const; + void setMucItem(const QXmppMucItem &item); + + QList<int> mucStatusCodes() const; + void setMucStatusCodes(const QList<int> &codes); + + /// XEP-0153: vCard-Based Avatars + QByteArray photoHash() const; + void setPhotoHash(const QByteArray&); + + VCardUpdateType vCardUpdateType() const; + void setVCardUpdateType(VCardUpdateType type); + + // XEP-0115: Entity Capabilities + QString capabilityHash() const; + void setCapabilityHash(const QString&); + + QString capabilityNode() const; + void setCapabilityNode(const QString&); + + QByteArray capabilityVer() const; + void setCapabilityVer(const QByteArray&); + + QStringList capabilityExt() const; + +private: + QString getTypeStr() const; + void setTypeFromStr(const QString&); + + Type m_type; + QXmppPresence::Status m_status; + + + /// XEP-0153: vCard-Based Avatars + + /// m_photoHash: the SHA1 hash of the avatar image data itself (not the base64-encoded version) + /// in accordance with RFC 3174 + QByteArray m_photoHash; + VCardUpdateType m_vCardUpdateType; + + // XEP-0115: Entity Capabilities + QString m_capabilityHash; + QString m_capabilityNode; + QByteArray m_capabilityVer; + // Legacy XEP-0115: Entity Capabilities + QStringList m_capabilityExt; + + // XEP-0045: Multi-User Chat + QXmppMucItem m_mucItem; + QList<int> m_mucStatusCodes; +}; + +#endif // QXMPPPRESENCE_H |
