diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-01-17 13:58:19 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-01-17 13:58:19 +0000 |
| commit | 8d634704046886fa4b745257c76f0d135b8cb515 (patch) | |
| tree | cb14ff95f90463bfe366a2e75699d2f156080899 /src | |
| parent | 1c30859573de9ffee8df206b6f3c64323cf4446b (diff) | |
| download | qxmpp-8d634704046886fa4b745257c76f0d135b8cb515.tar.gz | |
use enum to describe MUC affiliations and roles
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppMucIq.cpp | 106 | ||||
| -rw-r--r-- | src/QXmppMucIq.h | 37 | ||||
| -rw-r--r-- | src/QXmppMucManager.cpp | 9 |
3 files changed, 127 insertions, 25 deletions
diff --git a/src/QXmppMucIq.cpp b/src/QXmppMucIq.cpp index 2dc348e3..85b4ec2f 100644 --- a/src/QXmppMucIq.cpp +++ b/src/QXmppMucIq.cpp @@ -27,12 +27,52 @@ #include "QXmppMucIq.h" #include "QXmppUtils.h" -QString QXmppMucAdminIq::Item::affiliation() const +QXmppMucAdminIq::Item::Item() + : m_affiliation(QXmppMucAdminIq::Item::UnspecifiedAffiliation), + m_role(QXmppMucAdminIq::Item::UnspecifiedRole) +{ +} + +QXmppMucAdminIq::Item::Affiliation QXmppMucAdminIq::Item::affiliation() const { return m_affiliation; } -void QXmppMucAdminIq::Item::setAffiliation(const QString &affiliation) +QXmppMucAdminIq::Item::Affiliation QXmppMucAdminIq::Item::affiliationFromString(const QString &affiliationStr) +{ + if (affiliationStr == "owner") + return QXmppMucAdminIq::Item::OwnerAffiliation; + else if (affiliationStr == "admin") + return QXmppMucAdminIq::Item::AdminAffiliation; + else if (affiliationStr == "member") + return QXmppMucAdminIq::Item::MemberAffiliation; + else if (affiliationStr == "outcast") + return QXmppMucAdminIq::Item::OutcastAffiliation; + else if (affiliationStr == "none") + return QXmppMucAdminIq::Item::NoAffiliation; + else + return QXmppMucAdminIq::Item::UnspecifiedAffiliation; +} + +QString QXmppMucAdminIq::Item::affiliationToString(Affiliation affiliation) +{ + switch (affiliation) { + case QXmppMucAdminIq::Item::OwnerAffiliation: + return "owner"; + case QXmppMucAdminIq::Item::AdminAffiliation: + return "admin"; + case QXmppMucAdminIq::Item::MemberAffiliation: + return "member"; + case QXmppMucAdminIq::Item::OutcastAffiliation: + return "outcast"; + case QXmppMucAdminIq::Item::NoAffiliation: + return "none"; + default: + return QString(); + } +} + +void QXmppMucAdminIq::Item::setAffiliation(Affiliation affiliation) { m_affiliation = affiliation; } @@ -67,16 +107,58 @@ void QXmppMucAdminIq::Item::setReason(const QString &reason) m_reason = reason; } -QString QXmppMucAdminIq::Item::role() const +QXmppMucAdminIq::Item::Role QXmppMucAdminIq::Item::role() const { return m_role; } -void QXmppMucAdminIq::Item::setRole(const QString &role) +QXmppMucAdminIq::Item::Role QXmppMucAdminIq::Item::roleFromString(const QString &roleStr) +{ + if (roleStr == "moderator") + return QXmppMucAdminIq::Item::ModeratorRole; + else if (roleStr == "participant") + return QXmppMucAdminIq::Item::ParticipantRole; + else if (roleStr == "visitor") + return QXmppMucAdminIq::Item::VisitorRole; + else if (roleStr == "none") + return QXmppMucAdminIq::Item::NoRole; + else + return QXmppMucAdminIq::Item::UnspecifiedRole; +} + +QString QXmppMucAdminIq::Item::roleToString(Role role) +{ + switch (role) { + case QXmppMucAdminIq::Item::ModeratorRole: + return "moderator"; + case QXmppMucAdminIq::Item::ParticipantRole: + return "participant"; + case QXmppMucAdminIq::Item::VisitorRole: + return "visitor"; + case QXmppMucAdminIq::Item::NoRole: + return "none"; + default: + return QString(); + } +} + +void QXmppMucAdminIq::Item::setRole(Role role) { m_role = role; } +void QXmppMucAdminIq::Item::toXml(QXmlStreamWriter *writer) const +{ + writer->writeStartElement("item"); + helperToXmlAddAttribute(writer, "jid", m_jid); + helperToXmlAddAttribute(writer, "affiliation", affiliationToString(m_affiliation)); + helperToXmlAddAttribute(writer, "nick", m_nick); + helperToXmlAddAttribute(writer, "role", roleToString(m_role)); + if (!m_reason.isEmpty()) + helperToXmlAddTextElement(writer, "reason", m_reason); + writer->writeEndElement(); +} + /// Returns the IQ's items. QList<QXmppMucAdminIq::Item> QXmppMucAdminIq::items() const @@ -106,30 +188,22 @@ void QXmppMucAdminIq::parseElementFromChild(const QDomElement &element) while (!child.isNull()) { QXmppMucAdminIq::Item item; - item.setAffiliation(child.attribute("affiliation")); + item.setAffiliation(QXmppMucAdminIq::Item::affiliationFromString(child.attribute("affiliation").toLower())); item.setJid(child.attribute("jid")); item.setNick(child.attribute("nick")); - item.setRole(child.attribute("role")); + item.setRole(QXmppMucAdminIq::Item::roleFromString(child.attribute("role").toLower())); item.setReason(child.firstChildElement("reason").text()); m_items << item; child = child.nextSiblingElement("item"); } } + void QXmppMucAdminIq::toXmlElementFromChild(QXmlStreamWriter *writer) const { writer->writeStartElement("query"); helperToXmlAddAttribute(writer, "xmlns", ns_muc_admin); foreach (const QXmppMucAdminIq::Item &item, m_items) - { - writer->writeStartElement("item"); - helperToXmlAddAttribute(writer, "jid", item.jid()); - helperToXmlAddAttribute(writer, "affiliation", item.affiliation()); - helperToXmlAddAttribute(writer, "nick", item.nick()); - helperToXmlAddAttribute(writer, "role", item.role()); - if (!item.reason().isEmpty()) - helperToXmlAddTextElement(writer, "reason", item.reason()); - writer->writeEndElement(); - } + item.toXml(writer); writer->writeEndElement(); } diff --git a/src/QXmppMucIq.h b/src/QXmppMucIq.h index 01f5da63..d6471a7e 100644 --- a/src/QXmppMucIq.h +++ b/src/QXmppMucIq.h @@ -40,8 +40,27 @@ public: class Item { public: - QString affiliation() const; - void setAffiliation(const QString &affiliation); + enum Affiliation { + UnspecifiedAffiliation, + OutcastAffiliation, + NoAffiliation, + MemberAffiliation, + AdminAffiliation, + OwnerAffiliation, + }; + + enum Role { + UnspecifiedRole, + NoRole, + VisitorRole, + ParticipantRole, + ModeratorRole, + }; + + Item(); + + Affiliation affiliation() const; + void setAffiliation(Affiliation affiliation); QString jid() const; void setJid(const QString &jid); @@ -52,18 +71,24 @@ public: QString reason() const; void setReason(const QString &reason); - QString role() const; - void setRole(const QString &role); + Role role() const; + void setRole(Role role); void parse(const QDomElement &element); void toXml(QXmlStreamWriter *writer) const; + /// \cond + static Affiliation affiliationFromString(const QString &affiliationStr); + static QString affiliationToString(Affiliation affiliation); + static Role roleFromString(const QString &roleStr); + static QString roleToString(Role role); + /// \endcond private: - QString m_affiliation; + Affiliation m_affiliation; QString m_jid; QString m_nick; QString m_reason; - QString m_role; + Role m_role; }; QList<QXmppMucAdminIq::Item> items() const; diff --git a/src/QXmppMucManager.cpp b/src/QXmppMucManager.cpp index 1e92b8e9..2c84723c 100644 --- a/src/QXmppMucManager.cpp +++ b/src/QXmppMucManager.cpp @@ -176,9 +176,12 @@ bool QXmppMucManager::setRoomConfiguration(const QString &roomJid, const QXmppDa bool QXmppMucManager::requestRoomPermissions(const QString &roomJid) { - QStringList affiliations; - affiliations << "member" << "admin" << "owner" << "outcast"; - foreach (const QString &affiliation, affiliations) + QList<QXmppMucAdminIq::Item::Affiliation> affiliations; + affiliations << QXmppMucAdminIq::Item::OwnerAffiliation; + affiliations << QXmppMucAdminIq::Item::AdminAffiliation; + affiliations << QXmppMucAdminIq::Item::MemberAffiliation; + affiliations << QXmppMucAdminIq::Item::OutcastAffiliation; + foreach (QXmppMucAdminIq::Item::Affiliation affiliation, affiliations) { QXmppMucAdminIq::Item item; item.setAffiliation(affiliation); |
