Loading...
Searching...
No Matches
QXmppMixConfigItem.h
// SPDX-FileCopyrightText: 2023 Melvin Keskin <melvo@olomono.de>
//
// SPDX-License-Identifier: LGPL-2.1-or-later
#ifndef QXMPPMIXCONFIGITEM_H
#define QXMPPMIXCONFIGITEM_H
#include "QXmppDataForm.h"
#include "QXmppPubSubBaseItem.h"
class QXmppMixConfigItemPrivate;
class QXMPP_EXPORT QXmppMixConfigItem : public QXmppPubSubBaseItem
{
public:
enum class Role {
Owner,
Administrator,
Participant,
Allowed,
Anyone,
Nobody,
};
enum class Node {
AllowedJids = 1 << 0,
AvatarData = 1 << 1,
AvatarMetadata = 1 << 2,
BannedJids = 1 << 3,
Configuration = 1 << 4,
Information = 1 << 5,
JidMap = 1 << 6,
Messages = 1 << 7,
Participants = 1 << 8,
Presence = 1 << 9,
};
Q_DECLARE_FLAGS(Nodes, Node)
QXmppMixConfigItem();
QXmppMixConfigItem(const QXmppMixConfigItem &);
QXmppMixConfigItem(QXmppMixConfigItem &&);
~QXmppMixConfigItem() override;
QXmppMixConfigItem &operator=(const QXmppMixConfigItem &);
QXmppMixConfigItem &operator=(QXmppMixConfigItem &&);
QXmppDataForm::Type formType() const;
void setFormType(QXmppDataForm::Type formType);
QString lastEditorJid() const;
void setLastEditorJid(const QString &lastEditorJid);
QStringList ownerJids() const;
void setOwnerJids(const QStringList &ownerJids);
QStringList administratorJids() const;
void setAdministratorJids(const QStringList &administratorJids);
QDateTime channelDeletion() const;
void setChannelDeletion(const QDateTime &channelDeletion);
Nodes nodes() const;
void setNodes(Nodes nodes);
std::optional<Role> messagesSubscribeRole() const;
void setMessagesSubscribeRole(std::optional<Role> messagesSubscribeRole);
std::optional<Role> messagesRetractRole() const;
void setMessagesRetractRole(std::optional<Role> messagesRetractRole);
std::optional<Role> presenceSubscribeRole() const;
void setPresenceSubscribeRole(std::optional<Role> presenceSubscribeRole);
std::optional<Role> participantsSubscribeRole() const;
void setParticipantsSubscribeRole(std::optional<Role> participantsSubscribeRole);
std::optional<Role> informationSubscribeRole() const;
void setInformationSubscribeRole(std::optional<Role> informationSubscribeRole);
std::optional<Role> informationUpdateRole() const;
void setInformationUpdateRole(std::optional<Role> informationUpdateRole);
std::optional<Role> allowedJidsSubscribeRole() const;
void setAllowedJidsSubscribeRole(std::optional<Role> allowedJidsSubscribeRole);
std::optional<Role> bannedJidsSubscribeRole() const;
void setBannedJidsSubscribeRole(std::optional<Role> bannedJidsSubscribeRole);
std::optional<Role> configurationReadRole() const;
void setConfigurationReadRole(std::optional<Role> configurationReadRole);
std::optional<Role> avatarUpdateRole() const;
void setAvatarUpdateRole(std::optional<Role> avatarUpdateRole);
std::optional<bool> nicknameRequired() const;
void setNicknameRequired(std::optional<bool> nicknameRequired);
std::optional<bool> presenceRequired() const;
void setPresenceRequired(std::optional<bool> presenceRequired);
std::optional<bool> onlyParticipantsPermittedToSubmitPresence() const;
void setOnlyParticipantsPermittedToSubmitPresence(std::optional<bool> onlyParticipantsPermittedToSubmitPresence);
std::optional<bool> ownMessageRetractionPermitted() const;
void setOwnMessageRetractionPermitted(std::optional<bool> ownMessageRetractionPermitted);
std::optional<bool> invitationsPermitted() const;
void setInvitationsPermitted(std::optional<bool> invitationsPermitted);
std::optional<bool> privateMessagesPermitted() const;
void setPrivateMessagesPermitted(std::optional<bool> privateMessagesPermitted);
static bool isItem(const QDomElement &itemElement);
protected:
void parsePayload(const QDomElement &payloadElement) override;
void serializePayload(QXmlStreamWriter *writer) const override;
private:
QSharedDataPointer<QXmppMixConfigItemPrivate> d;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppMixConfigItem::Nodes)
// Scoped enums (enum class) are not implicitly converted to int.
inline auto qHash(QXmppMixConfigItem::Node key, uint seed) noexcept { return qHash(std::underlying_type_t<QXmppMixConfigItem::Node>(key), seed); }
Q_DECLARE_METATYPE(QXmppMixConfigItem)
Q_DECLARE_METATYPE(QXmppMixConfigItem::Nodes)
#endif // QXMPPMIXCONFIGITEM_H
QXmppDataForm::Type
Type
This enum is used to describe a form's type.
Definition QXmppDataForm.h:176
QXmppMixConfigItem
The QXmppMixConfigItem class represents a PubSub item of a MIX channel containing its configuration a...
Definition QXmppMixConfigItem.h:14
QXmppMixConfigItem::operator=
QXmppMixConfigItem & operator=(QXmppMixConfigItem &&)
Default move-assignment operator.
QXmppMixConfigItem::setMessagesRetractRole
void setMessagesRetractRole(std::optional< Role > messagesRetractRole)
Definition QXmppMixItems.cpp:554
QXmppMixConfigItem::Role
Role
Definition QXmppMixConfigItem.h:16
QXmppMixConfigItem::participantsSubscribeRole
std::optional< Role > participantsSubscribeRole() const
Definition QXmppMixItems.cpp:589
QXmppMixConfigItem::bannedJidsSubscribeRole
std::optional< Role > bannedJidsSubscribeRole() const
Definition QXmppMixItems.cpp:689
QXmppMixConfigItem::setAvatarUpdateRole
void setAvatarUpdateRole(std::optional< Role > avatarUpdateRole)
Definition QXmppMixItems.cpp:759
QXmppMixConfigItem::operator=
QXmppMixConfigItem & operator=(const QXmppMixConfigItem &)
Default assignment operator.
QXmppMixConfigItem::setMessagesSubscribeRole
void setMessagesSubscribeRole(std::optional< Role > messagesSubscribeRole)
Definition QXmppMixItems.cpp:529
QXmppMixConfigItem::ownerJids
QStringList ownerJids() const
Definition QXmppMixItems.cpp:424
QXmppMixConfigItem::Node
Node
Definition QXmppMixConfigItem.h:25
QXmppMixConfigItem::nodes
Nodes nodes() const
Definition QXmppMixItems.cpp:494
QXmppMixConfigItem::setConfigurationReadRole
void setConfigurationReadRole(std::optional< Role > configurationReadRole)
Definition QXmppMixItems.cpp:734
QXmppMixConfigItem::informationUpdateRole
std::optional< Role > informationUpdateRole() const
Definition QXmppMixItems.cpp:634
QXmppMixConfigItem::setAllowedJidsSubscribeRole
void setAllowedJidsSubscribeRole(std::optional< Role > allowedJidsSubscribeRole)
Definition QXmppMixItems.cpp:678
QXmppMixConfigItem::setOnlyParticipantsPermittedToSubmitPresence
void setOnlyParticipantsPermittedToSubmitPresence(std::optional< bool > onlyParticipantsPermittedToSubmitPresence)
Definition QXmppMixItems.cpp:820
QXmppMixConfigItem::informationSubscribeRole
std::optional< Role > informationSubscribeRole() const
Definition QXmppMixItems.cpp:609
QXmppMixConfigItem::setInvitationsPermitted
void setInvitationsPermitted(std::optional< bool > invitationsPermitted)
Definition QXmppMixItems.cpp:868
QXmppMixConfigItem::setParticipantsSubscribeRole
void setParticipantsSubscribeRole(std::optional< Role > participantsSubscribeRole)
Definition QXmppMixItems.cpp:599
QXmppMixConfigItem::messagesRetractRole
std::optional< Role > messagesRetractRole() const
Definition QXmppMixItems.cpp:539
QXmppMixConfigItem::setInformationUpdateRole
void setInformationUpdateRole(std::optional< Role > informationUpdateRole)
Definition QXmppMixItems.cpp:649
QXmppMixConfigItem::configurationReadRole
std::optional< Role > configurationReadRole() const
Definition QXmppMixItems.cpp:717
QXmppMixConfigItem::ownMessageRetractionPermitted
std::optional< bool > ownMessageRetractionPermitted() const
Definition QXmppMixItems.cpp:830
QXmppMixConfigItem::onlyParticipantsPermittedToSubmitPresence
std::optional< bool > onlyParticipantsPermittedToSubmitPresence() const
Definition QXmppMixItems.cpp:809
QXmppMixConfigItem::setFormType
void setFormType(QXmppDataForm::Type formType)
Definition QXmppMixItems.cpp:386
QXmppMixConfigItem::avatarUpdateRole
std::optional< Role > avatarUpdateRole() const
Definition QXmppMixItems.cpp:744
QXmppMixConfigItem::QXmppMixConfigItem
QXmppMixConfigItem(QXmppMixConfigItem &&)
Default move-constructor.
QXmppMixConfigItem::setOwnerJids
void setOwnerJids(const QStringList &ownerJids)
Definition QXmppMixItems.cpp:436
QXmppMixConfigItem::formType
QXmppDataForm::Type formType() const
Definition QXmppMixItems.cpp:376
QXmppMixConfigItem::allowedJidsSubscribeRole
std::optional< Role > allowedJidsSubscribeRole() const
Definition QXmppMixItems.cpp:660
QXmppMixConfigItem::setAdministratorJids
void setAdministratorJids(const QStringList &administratorJids)
Definition QXmppMixItems.cpp:460
QXmppMixConfigItem::presenceRequired
std::optional< bool > presenceRequired() const
Definition QXmppMixItems.cpp:789
QXmppMixConfigItem::presenceSubscribeRole
std::optional< Role > presenceSubscribeRole() const
Definition QXmppMixItems.cpp:564
QXmppMixConfigItem::setLastEditorJid
void setLastEditorJid(const QString &lastEditorJid)
Definition QXmppMixItems.cpp:410
QXmppMixConfigItem::setBannedJidsSubscribeRole
void setBannedJidsSubscribeRole(std::optional< Role > bannedJidsSubscribeRole)
Definition QXmppMixItems.cpp:707
QXmppMixConfigItem::lastEditorJid
QString lastEditorJid() const
Definition QXmppMixItems.cpp:398
QXmppMixConfigItem::administratorJids
QStringList administratorJids() const
Definition QXmppMixItems.cpp:448
QXmppMixConfigItem::setPrivateMessagesPermitted
void setPrivateMessagesPermitted(std::optional< bool > privateMessagesPermitted)
Definition QXmppMixItems.cpp:888
QXmppMixConfigItem::channelDeletion
QDateTime channelDeletion() const
Definition QXmppMixItems.cpp:472
QXmppMixConfigItem::setOwnMessageRetractionPermitted
void setOwnMessageRetractionPermitted(std::optional< bool > ownMessageRetractionPermitted)
Definition QXmppMixItems.cpp:840
QXmppMixConfigItem::messagesSubscribeRole
std::optional< Role > messagesSubscribeRole() const
Definition QXmppMixItems.cpp:514
QXmppMixConfigItem::setNicknameRequired
void setNicknameRequired(std::optional< bool > nicknameRequired)
Definition QXmppMixItems.cpp:779
QXmppMixConfigItem::QXmppMixConfigItem
QXmppMixConfigItem(const QXmppMixConfigItem &)
Default copy-constructor.
QXmppMixConfigItem::privateMessagesPermitted
std::optional< bool > privateMessagesPermitted() const
Definition QXmppMixItems.cpp:878
QXmppMixConfigItem::invitationsPermitted
std::optional< bool > invitationsPermitted() const
Definition QXmppMixItems.cpp:856
QXmppMixConfigItem::setPresenceSubscribeRole
void setPresenceSubscribeRole(std::optional< Role > presenceSubscribeRole)
Definition QXmppMixItems.cpp:579
QXmppMixConfigItem::setInformationSubscribeRole
void setInformationSubscribeRole(std::optional< Role > informationSubscribeRole)
Definition QXmppMixItems.cpp:624
QXmppMixConfigItem::setNodes
void setNodes(Nodes nodes)
Definition QXmppMixItems.cpp:504
QXmppMixConfigItem::nicknameRequired
std::optional< bool > nicknameRequired() const
Definition QXmppMixItems.cpp:769
QXmppMixConfigItem::setChannelDeletion
void setChannelDeletion(const QDateTime &channelDeletion)
Definition QXmppMixItems.cpp:484
QXmppMixConfigItem::setPresenceRequired
void setPresenceRequired(std::optional< bool > presenceRequired)
Definition QXmppMixItems.cpp:799
QXmppPubSubBaseItem::serializePayload
virtual void serializePayload(QXmlStreamWriter *writer) const
Definition QXmppPubSubBaseItem.cpp:154
QXmppPubSubBaseItem::QXmppPubSubBaseItem
QXmppPubSubBaseItem(const QString &id={}, const QString &publisher={})
Definition QXmppPubSubBaseItem.cpp:62
QXmppPubSubBaseItem::parsePayload
virtual void parsePayload(const QDomElement &payloadElement)
Definition QXmppPubSubBaseItem.cpp:144
QXmppPubSubBaseItem::isItem
static bool isItem(const QDomElement &element)
Definition QXmppPubSubBaseItem.cpp:134