aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppMucManager.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-11 07:31:23 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-11 07:31:23 +0000
commit40c39853816cfab113d79682c34bc76a2c79c357 (patch)
treee4d6a184cf565cb87477339ce738299ff9787bc3 /source/QXmppMucManager.cpp
parent551c284e35280b7b91a939fe7352e496ffea402a (diff)
downloadqxmpp-40c39853816cfab113d79682c34bc76a2c79c357.tar.gz
rename "source" directory to "src"
Diffstat (limited to 'source/QXmppMucManager.cpp')
-rw-r--r--source/QXmppMucManager.cpp232
1 files changed, 0 insertions, 232 deletions
diff --git a/source/QXmppMucManager.cpp b/source/QXmppMucManager.cpp
deleted file mode 100644
index bf6c3ed4..00000000
--- a/source/QXmppMucManager.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (C) 2008-2010 The QXmpp developers
- *
- * Author:
- * Jeremy Lainé
- *
- * Source:
- * http://code.google.com/p/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.
- *
- */
-
-#include "QXmppConstants.h"
-#include "QXmppMessage.h"
-#include "QXmppMucIq.h"
-#include "QXmppMucManager.h"
-#include "QXmppStream.h"
-#include "QXmppUtils.h"
-
-QXmppMucManager::QXmppMucManager(QXmppStream* stream, QObject *parent)
- : QObject(parent),
- m_stream(stream)
-{
- bool check = connect(stream, SIGNAL(messageReceived(QXmppMessage)),
- this, SLOT(messageReceived(QXmppMessage)));
- Q_ASSERT(check);
-
- check = connect(stream, SIGNAL(mucAdminIqReceived(QXmppMucAdminIq)),
- this, SLOT(mucAdminIqReceived(QXmppMucAdminIq)));
- Q_ASSERT(check);
-
- check = connect(stream, SIGNAL(mucOwnerIqReceived(QXmppMucOwnerIq)),
- this, SLOT(mucOwnerIqReceived(QXmppMucOwnerIq)));
- Q_ASSERT(check);
-
- check = QObject::connect(m_stream, SIGNAL(presenceReceived(QXmppPresence)),
- this, SLOT(presenceReceived(QXmppPresence)));
- Q_ASSERT(check);
-}
-
-/// Joins the given chat room with the requested nickname.
-///
-/// \param roomJid
-/// \param nickName
-///
-/// \return true if the request was sent, false otherwise
-///
-
-bool QXmppMucManager::joinRoom(const QString &roomJid, const QString &nickName)
-{
- QXmppPresence packet;
- packet.setTo(roomJid + "/" + nickName);
- packet.setType(QXmppPresence::Available);
- QXmppElement x;
- x.setTagName("x");
- x.setAttribute("xmlns", ns_muc);
- packet.setExtensions(x);
- if (m_stream->sendPacket(packet))
- {
- m_nickNames[roomJid] = nickName;
- return true;
- } else {
- return false;
- }
-}
-
-/// Leaves the given chat room.
-///
-/// \param roomJid
-///
-/// \return true if the request was sent, false otherwise
-///
-
-bool QXmppMucManager::leaveRoom(const QString &roomJid)
-{
- if (!m_nickNames.contains(roomJid))
- return false;
- QString nickName = m_nickNames.take(roomJid);
- QXmppPresence packet;
- packet.setTo(roomJid + "/" + nickName);
- packet.setType(QXmppPresence::Unavailable);
- return m_stream->sendPacket(packet);
-}
-
-/// Retrieves the list of participants for the given room.
-///
-/// \param roomJid
-///
-
-QMap<QString, QXmppPresence> QXmppMucManager::roomParticipants(const QString& roomJid) const
-{
- return m_participants.value(roomJid);
-}
-
-/// Request the configuration form for the given room.
-///
-/// \param roomJid
-///
-/// \return true if the request was sent, false otherwise
-///
-/// \sa roomConfigurationReceived()
-///
-
-bool QXmppMucManager::requestRoomConfiguration(const QString &roomJid)
-{
- QXmppMucOwnerIq iq;
- iq.setTo(roomJid);
- return m_stream->sendPacket(iq);
-}
-
-/// Send the configuration form for the given room.
-///
-/// \param roomJid
-/// \param form
-///
-/// \return true if the request was sent, false otherwise
-///
-
-bool QXmppMucManager::setRoomConfiguration(const QString &roomJid, const QXmppDataForm &form)
-{
- QXmppMucOwnerIq iqPacket;
- iqPacket.setType(QXmppIq::Set);
- iqPacket.setTo(roomJid);
- iqPacket.setForm(form);
- return m_stream->sendPacket(iqPacket);
-}
-
-/// Invite a user to a chat room.
-///
-/// \param roomJid
-/// \param jid
-/// \param reason
-///
-/// \return true if the message was sent, false otherwise
-///
-
-bool QXmppMucManager::sendInvitation(const QString &roomJid, const QString &jid, const QString &reason)
-{
- QXmppElement x;
- x.setTagName("x");
- x.setAttribute("xmlns", ns_conference);
- x.setAttribute("jid", roomJid);
- x.setAttribute("reason", reason);
-
- QXmppMessage message;
- message.setTo(jid);
- message.setType(QXmppMessage::Normal);
- message.setExtensions(x);
- return m_stream->sendPacket(message);
-}
-
-/// Send a message to a chat room.
-///
-/// \param roomJid
-/// \param text
-///
-/// \return true if the message was sent, false otherwise
-///
-
-bool QXmppMucManager::sendMessage(const QString &roomJid, const QString &text)
-{
- if (!m_nickNames.contains(roomJid))
- {
- qWarning("Cannot send message to unknown chat room");
- return false;
- }
- QXmppMessage msg;
- msg.setBody(text);
- msg.setFrom(roomJid + "/" + m_nickNames[roomJid]);
- msg.setTo(roomJid);
- msg.setType(QXmppMessage::GroupChat);
- return m_stream->sendPacket(msg);
-}
-
-void QXmppMucManager::messageReceived(const QXmppMessage &msg)
-{
- if (msg.type() != QXmppMessage::Normal)
- return;
-
- // process room invitations
- foreach (const QXmppElement &extension, msg.extensions())
- {
- if (extension.tagName() == "x" && extension.attribute("xmlns") == ns_conference)
- {
- const QString roomJid = extension.attribute("jid");
- if (!roomJid.isEmpty() && !m_nickNames.contains(roomJid))
- emit invitationReceived(roomJid, msg.from(), extension.attribute("reason"));
- break;
- }
- }
-}
-
-void QXmppMucManager::mucAdminIqReceived(const QXmppMucAdminIq &iq)
-{
- Q_UNUSED(iq);
-}
-
-void QXmppMucManager::mucOwnerIqReceived(const QXmppMucOwnerIq &iq)
-{
- if (iq.type() == QXmppIq::Result && !iq.form().isNull())
- emit roomConfigurationReceived(iq.from(), iq.form());
-}
-
-void QXmppMucManager::presenceReceived(const QXmppPresence &presence)
-{
- QString jid = presence.from();
- QString bareJid = jidToBareJid(jid);
- QString resource = jidToResource(jid);
- if (!m_nickNames.contains(bareJid))
- return;
-
- if (presence.type() == QXmppPresence::Available)
- m_participants[bareJid][resource] = presence;
- else if (presence.type() == QXmppPresence::Unavailable)
- m_participants[bareJid].remove(resource);
- else
- return;
-
- emit roomParticipantChanged(bareJid, resource);
-}
-