QXmppMessage.h
/*
* Copyright (C) 2008-2021 The QXmpp developers
*
* Author:
* Manjeet Dahiya
* Jeremy Lainé
* Linus Jahn
*
* Source:
* https://github.com/qxmpp-project/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 QXMPPMESSAGE_H
#define QXMPPMESSAGE_H
#include "QXmppStanza.h"
// Required for source compatibility
#include <QDateTime>
#include <optional>
class QXmppMessagePrivate;
class QXmppBitsOfBinaryDataList;
class QXmppMixInvitation;
class QXMPP_EXPORT QXmppMessage : public QXmppStanza
{
public:
enum Type {
Error = 0,
Normal,
Chat,
GroupChat,
Headline
};
enum State {
None = 0,
Active,
Inactive,
Gone,
Composing,
Paused
};
enum Marker {
NoMarker = 0,
Received,
Displayed,
Acknowledged
};
enum Hint {
NoPermanentStore = 1 << 0,
NoStore = 1 << 1,
NoCopy = 1 << 2,
Store = 1 << 3
};
enum EncryptionMethod {
NoEncryption,
UnknownEncryption,
OTR,
LegacyOpenPGP,
OX,
OMEMO
};
QXmppMessage(const QString &from = QString(), const QString &to = QString(),
const QString &body = QString(), const QString &thread = QString());
QXmppMessage(const QXmppMessage &other);
~QXmppMessage() override;
QXmppMessage &operator=(const QXmppMessage &other);
bool isXmppStanza() const override;
QString body() const;
void setBody(const QString &);
QString subject() const;
void setSubject(const QString &);
QString thread() const;
void setThread(const QString &);
QString parentThread() const;
void setParentThread(const QString &);
QXmppMessage::Type type() const;
void setType(QXmppMessage::Type);
// XEP-0066: Out of Band Data
QString outOfBandUrl() const;
void setOutOfBandUrl(const QString &);
// XEP-0071: XHTML-IM
QString xhtml() const;
void setXhtml(const QString &xhtml);
// XEP-0085: Chat State Notifications
QXmppMessage::State state() const;
void setState(QXmppMessage::State);
// XEP-0091: Legacy Delayed Delivery | XEP-0203: Delayed Delivery
QDateTime stamp() const;
void setStamp(const QDateTime &stamp);
// XEP-0184: Message Delivery Receipts
bool isReceiptRequested() const;
void setReceiptRequested(bool requested);
QString receiptId() const;
void setReceiptId(const QString &id);
// XEP-0224: Attention
bool isAttentionRequested() const;
void setAttentionRequested(bool requested);
// XEP-0231: Bits of Binary
QXmppBitsOfBinaryDataList bitsOfBinaryData() const;
QXmppBitsOfBinaryDataList &bitsOfBinaryData();
void setBitsOfBinaryData(const QXmppBitsOfBinaryDataList &bitsOfBinaryData);
// XEP-0245: The /me Command
static bool isSlashMeCommand(const QString &body);
bool isSlashMeCommand() const;
static QString slashMeCommandText(const QString &body);
QString slashMeCommandText() const;
// XEP-0249: Direct MUC Invitations
QString mucInvitationJid() const;
void setMucInvitationJid(const QString &jid);
QString mucInvitationPassword() const;
void setMucInvitationPassword(const QString &password);
QString mucInvitationReason() const;
void setMucInvitationReason(const QString &reason);
// XEP-0280: Message Carbons
bool isPrivate() const;
void setPrivate(const bool);
// XEP-0308: Last Message Correction
QString replaceId() const;
void setReplaceId(const QString &);
// XEP-0333: Chat State Markers
bool isMarkable() const;
void setMarkable(const bool);
QString markedId() const;
void setMarkerId(const QString &);
QString markedThread() const;
void setMarkedThread(const QString &);
Marker marker() const;
void setMarker(const Marker);
// XEP-0334: Message Processing Hints
bool hasHint(const Hint hint) const;
void addHint(const Hint hint);
void removeHint(const Hint hint);
void removeAllHints();
// XEP-0359: Unique and Stable Stanza IDs
QString stanzaId() const;
void setStanzaId(const QString &id);
QString stanzaIdBy() const;
void setStanzaIdBy(const QString &id);
QString originId() const;
void setOriginId(const QString &id);
// XEP-0367: Message Attaching
QString attachId() const;
void setAttachId(const QString &);
// XEP-0369: Mediated Information eXchange (MIX)
QString mixUserJid() const;
void setMixUserJid(const QString &);
QString mixUserNick() const;
void setMixUserNick(const QString &);
// XEP-0380: Explicit Message Encryption
EncryptionMethod encryptionMethod() const;
void setEncryptionMethod(EncryptionMethod);
QString encryptionMethodNs() const;
void setEncryptionMethodNs(const QString &);
QString encryptionName() const;
void setEncryptionName(const QString &);
// XEP-0382: Spoiler messages
bool isSpoiler() const;
void setIsSpoiler(bool);
QString spoilerHint() const;
void setSpoilerHint(const QString &);
// XEP-0407: Mediated Information eXchange (MIX): Miscellaneous Capabilities
std::optional<QXmppMixInvitation> mixInvitation() const;
void setMixInvitation(const std::optional<QXmppMixInvitation> &mixInvitation);
// XEP-0428: Fallback Indication
bool isFallback() const;
void setIsFallback(bool isFallback);
void parse(const QDomElement &element) override;
void toXml(QXmlStreamWriter *writer) const override;
private:
void parseExtension(const QDomElement &element, QXmppElementList &unknownExtensions);
void parseXElement(const QDomElement &element, QXmppElementList &unknownElements);
QSharedDataPointer<QXmppMessagePrivate> d;
};
Q_DECLARE_METATYPE(QXmppMessage)
#endif // QXMPPMESSAGE_H
QXmppBitsOfBinaryDataList
Definition: QXmppBitsOfBinaryDataList.h:40
QXmppMessage
The QXmppMessage class represents an XMPP message.
Definition: QXmppMessage.h:46
QXmppMessage::EncryptionMethod
EncryptionMethod
Definition: QXmppMessage.h:103
QXmppMessage::OTR
@ OTR
XEP-0364: Current Off-the-Record Messaging Usage
Definition: QXmppMessage.h:106
QXmppMessage::UnknownEncryption
@ UnknownEncryption
Unknown encryption.
Definition: QXmppMessage.h:105
QXmppMessage::OX
@ OX
XEP-0373: OpenPGP for XMPP
Definition: QXmppMessage.h:108
QXmppMessage::NoEncryption
@ NoEncryption
No encryption.
Definition: QXmppMessage.h:104
QXmppMessage::LegacyOpenPGP
@ LegacyOpenPGP
XEP-0027: Current Jabber OpenPGP Usage
Definition: QXmppMessage.h:107
QXmppMessage::operator=
QXmppMessage & operator=(const QXmppMessage &other)
Assigns other to this message.
QXmppMessage::Type
Type
This enum describes a message type.
Definition: QXmppMessage.h:49
QXmppMessage::Marker
Marker
Definition: QXmppMessage.h:77
QXmppMessage::Hint
Hint
Definition: QXmppMessage.h:89
QXmppMessage::State
State
Definition: QXmppMessage.h:63
QXmppMessage::Active
@ Active
User is actively participating in the chat session.
Definition: QXmppMessage.h:65
QXmppMessage::Inactive
@ Inactive
User has not been actively participating in the chat session.
Definition: QXmppMessage.h:66
QXmppMessage::Composing
@ Composing
User is composing a message.
Definition: QXmppMessage.h:68
QXmppMessage::Gone
@ Gone
User has effectively ended their participation in the chat session.
Definition: QXmppMessage.h:67
QXmppMessage::QXmppMessage
QXmppMessage(const QXmppMessage &other)
Constructs a copy of other.
QXmppMixInvitation
The QXmppMixInvitation class is used to invite a user to a XEP-0369: Mediated Information eXchange (M...
Definition: QXmppMixInvitation.h:43
QXmppStanza::Error
The Error class represents a stanza error.
Definition: QXmppStanza.h:106
QXmppStanza
The QXmppStanza class is the base class for all XMPP stanzas.
Definition: QXmppStanza.h:100
QXmppStanza::isXmppStanza
virtual bool isXmppStanza() const
Definition: QXmppStanza.cpp:671