00001
00023 #ifndef _TelepathyQt4_message_h_HEADER_GUARD_
00024 #define _TelepathyQt4_message_h_HEADER_GUARD_
00025
00026 #ifndef IN_TELEPATHY_QT4_HEADER
00027 #error IN_TELEPATHY_QT4_HEADER
00028 #endif
00029
00030 #include <QSharedDataPointer>
00031
00032 #include <TelepathyQt4/Constants>
00033 #include <TelepathyQt4/Contact>
00034 #include <TelepathyQt4/Types>
00035
00036 class QDateTime;
00037
00038 namespace Tp
00039 {
00040
00041 class Contact;
00042 class TextChannel;
00043
00044 class TELEPATHY_QT4_EXPORT Message
00045 {
00046 public:
00047 Message(ChannelTextMessageType, const QString &);
00048 Message(const Message &other);
00049 ~Message();
00050
00051 Message &operator=(const Message &other);
00052 bool operator==(const Message &other) const;
00053 inline bool operator!=(const Message &other) const
00054 {
00055 return !(*this == other);
00056 }
00057
00058
00059
00060 QDateTime sent() const;
00061
00062 ChannelTextMessageType messageType() const;
00063
00064 bool isTruncated() const;
00065
00066 bool hasNonTextContent() const;
00067
00068 QString messageToken() const;
00069
00070 bool isSpecificToDBusInterface() const;
00071 QString dbusInterface() const;
00072
00073 QString text() const;
00074
00075
00076
00077 MessagePart header() const;
00078
00079 int size() const;
00080 MessagePart part(uint index) const;
00081 MessagePartList parts() const;
00082
00083 private:
00084 friend class ContactMessenger;
00085 friend class ReceivedMessage;
00086 friend class TextChannel;
00087
00088 TELEPATHY_QT4_NO_EXPORT Message();
00089 TELEPATHY_QT4_NO_EXPORT Message(const MessagePartList &parts);
00090 TELEPATHY_QT4_NO_EXPORT Message(uint, uint, const QString &);
00091
00092 struct Private;
00093 friend struct Private;
00094 QSharedDataPointer<Private> mPriv;
00095 };
00096
00097 class TELEPATHY_QT4_EXPORT ReceivedMessage : public Message
00098 {
00099 public:
00100 class DeliveryDetails
00101 {
00102 public:
00103 DeliveryDetails();
00104 DeliveryDetails(const DeliveryDetails &other);
00105 ~DeliveryDetails();
00106
00107 DeliveryDetails &operator=(const DeliveryDetails &other);
00108
00109 bool isValid() const { return mPriv.constData() != 0; }
00110
00111 DeliveryStatus status() const;
00112
00113 bool hasOriginalToken() const;
00114 QString originalToken() const;
00115
00116 bool isError() const;
00117 ChannelTextSendError error() const;
00118
00119 bool hasDebugMessage() const;
00120 QString debugMessage() const;
00121
00122 QString dbusError() const;
00123
00124 bool hasEchoedMessage() const;
00125 Message echoedMessage() const;
00126
00127 private:
00128 friend class ReceivedMessage;
00129
00130 TELEPATHY_QT4_NO_EXPORT DeliveryDetails(const MessagePartList &parts);
00131
00132 struct Private;
00133 friend struct Private;
00134 QSharedDataPointer<Private> mPriv;
00135 };
00136
00137 ReceivedMessage(const ReceivedMessage &other);
00138 ReceivedMessage &operator=(const ReceivedMessage &other);
00139 ~ReceivedMessage();
00140
00141 QDateTime received() const;
00142 ContactPtr sender() const;
00143 QString senderNickname() const;
00144
00145 QString supersededToken() const;
00146
00147 bool isScrollback() const;
00148 bool isRescued() const;
00149
00150 bool isDeliveryReport() const;
00151 DeliveryDetails deliveryDetails() const;
00152
00153 bool isFromChannel(const TextChannelPtr &channel) const;
00154
00155 private:
00156 friend class TextChannel;
00157
00158 TELEPATHY_QT4_NO_EXPORT ReceivedMessage(const MessagePartList &parts,
00159 const TextChannelPtr &channel);
00160 TELEPATHY_QT4_NO_EXPORT ReceivedMessage();
00161
00162 TELEPATHY_QT4_NO_EXPORT uint senderHandle() const;
00163 TELEPATHY_QT4_NO_EXPORT QString senderId() const;
00164 TELEPATHY_QT4_NO_EXPORT uint pendingId() const;
00165
00166 TELEPATHY_QT4_NO_EXPORT void setForceNonText();
00167 TELEPATHY_QT4_NO_EXPORT void clearSenderHandle();
00168 TELEPATHY_QT4_NO_EXPORT void setSender(const ContactPtr &sender);
00169 };
00170
00171 }
00172
00173 #endif