/* * Copyright (C) 2003 Justin Karneges * * 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. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #ifndef XMPP_MESSAGE_H #define XMPP_MESSAGE_H #include "xmpp_stanza.h" #include "xmpp_url.h" #include "xmpp_chatstate.h" #include "xmpp_receipts.h" #include "xmpp_address.h" #include "xmpp_rosterx.h" #include "xmpp_muc.h" class QString; class QDateTime; #ifdef YAPSI class YaLastMail; #endif namespace XMPP { class Jid; class PubSubItem; class PubSubRetraction; class HTMLElement; class HttpAuthRequest; class XData; typedef enum { OfflineEvent, DeliveredEvent, DisplayedEvent, ComposingEvent, CancelEvent } MsgEvent; class Message { public: Message(const Jid &to=""); Message(const Message &from); Message & operator=(const Message &from); ~Message(); Jid to() const; Jid from() const; QString id() const; QString type() const; QString lang() const; QString subject(const QString &lang="") const; QString body(const QString &lang="") const; QString thread() const; Stanza::Error error() const; void setTo(const Jid &j); void setFrom(const Jid &j); void setId(const QString &s); void setType(const QString &s); void setLang(const QString &s); void setSubject(const QString &s, const QString &lang=""); void setBody(const QString &s, const QString &lang=""); void setThread(const QString &s, bool send = false); void setError(const Stanza::Error &err); // JEP-0060 const QString& pubsubNode() const; const QList& pubsubItems() const; const QList& pubsubRetractions() const; // JEP-0091 QDateTime timeStamp() const; void setTimeStamp(const QDateTime &ts, bool send = false); // JEP-0071 HTMLElement html(const QString &lang="") const; void setHTML(const HTMLElement &s, const QString &lang=""); bool containsHTML() const; // JEP-0066 UrlList urlList() const; void urlAdd(const Url &u); void urlsClear(); void setUrlList(const UrlList &list); // JEP-0022 QString eventId() const; void setEventId(const QString& id); bool containsEvents() const; bool containsEvent(MsgEvent e) const; void addEvent(MsgEvent e); // JEP-0085 ChatState chatState() const; void setChatState(ChatState); // XEP-0184 MessageReceipt messageReceipt() const; void setMessageReceipt(MessageReceipt); // JEP-0027 QString xencrypted() const; void setXEncrypted(const QString &s); // JEP-0033 AddressList addresses() const; AddressList findAddresses(Address::Type t) const; void addAddress(const Address &a); void clearAddresses(); void setAddresses(const AddressList &list); // JEP-144 const RosterExchangeItems& rosterExchangeItems() const; void setRosterExchangeItems(const RosterExchangeItems&); // JEP-172 void setNick(const QString&); const QString& nick() const; // JEP-0070 void setHttpAuthRequest(const HttpAuthRequest&); HttpAuthRequest httpAuthRequest() const; // JEP-0004 void setForm(const XData&); const XData& getForm() const; // JEP-xxxx Whiteboarding void setWhiteboard(const QDomElement&); const QDomElement& whiteboard() const; // MUC void setMUCStatus(int); bool hasMUCStatus() const; int mucStatus() const; void addMUCInvite(const MUCInvite&); const QList& mucInvites() const; void setMUCDecline(const MUCDecline&); const MUCDecline& mucDecline() const; const QString& mucPassword() const; void setMUCPassword(const QString&); // Obsolete invitation QString invite() const; void setInvite(const QString &s); // for compatibility. delete me later bool spooled() const; void setSpooled(bool); bool wasEncrypted() const; void setWasEncrypted(bool); Stanza toStanza(Stream *stream) const; bool fromStanza(const Stanza &s, int tzoffset); #ifdef YAPSI const YaLastMail& lastMailNotify() const; void setLastMailNotify(const YaLastMail& lastMailNotify); int spamFlag() const; QString twin() const; void setTwin(const QString& twin); QString yaMessageId() const; void setYaMessageId(const QString& yaMessageId); int yaFlags() const; void setYaFlags(int flags); #endif const QDomElement& getExtension(const QString& ns) const; private: class Private; Private *d; }; } #endif