aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppMucManager.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2011-09-29 09:37:27 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2011-09-29 09:37:27 +0000
commitdbb5972cda8e66ad4d7989e4ff0354b34e65c0ac (patch)
treeb3fec7fb86c78cc2afaf6eaa49e66a0c4d5d8e43 /src/QXmppMucManager.cpp
parent31b11a9ff762854f58468010c7e02b0c79108e3b (diff)
downloadqxmpp-dbb5972cda8e66ad4d7989e4ff0354b34e65c0ac.tar.gz
add notifier signal for QXmppMucRoom::participants property
Diffstat (limited to 'src/QXmppMucManager.cpp')
-rw-r--r--src/QXmppMucManager.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/QXmppMucManager.cpp b/src/QXmppMucManager.cpp
index 041e3f85..bc4a0468 100644
--- a/src/QXmppMucManager.cpp
+++ b/src/QXmppMucManager.cpp
@@ -66,7 +66,7 @@ QXmppMucManager::~QXmppMucManager()
delete d;
}
-/// Adds the given chat room to the set of manged rooms.
+/// Adds the given chat room to the set of managed rooms.
///
/// \param roomJid
@@ -151,7 +151,7 @@ void QXmppMucManager::_q_messageReceived(const QXmppMessage &msg)
if (extension.tagName() == "x" && extension.attribute("xmlns") == ns_conference)
{
const QString roomJid = extension.attribute("jid");
- if (!roomJid.isEmpty() && !d->rooms.contains(roomJid))
+ if (!roomJid.isEmpty() && (!d->rooms.contains(roomJid) || !d->rooms.value(roomJid)->isJoined()))
emit invitationReceived(roomJid, msg.from(), extension.attribute("reason"));
break;
}
@@ -191,6 +191,7 @@ QXmppMucRoom::QXmppMucRoom(QXmppClient *client, const QString &jid, QObject *par
this, SLOT(_q_presenceReceived(QXmppPresence)));
Q_ASSERT(check);
+ // convenience signals for properties
check = connect(this, SIGNAL(joined()), this, SIGNAL(isJoinedChanged()));
Q_ASSERT(check);
@@ -522,6 +523,7 @@ void QXmppMucRoom::_q_disconnected()
d->participants.clear();
foreach (const QString &jid, removed)
emit participantRemoved(jid);
+ emit participantsChanged();
// update available actions
if (d->allowedActions != NoAction) {
@@ -591,6 +593,7 @@ void QXmppMucRoom::_q_presenceReceived(const QXmppPresence &presence)
if (added) {
emit participantAdded(jid);
+ emit participantsChanged();
if (jid == d->ownJid())
emit joined();
} else {
@@ -603,6 +606,7 @@ void QXmppMucRoom::_q_presenceReceived(const QXmppPresence &presence)
emit participantRemoved(jid);
d->participants.remove(jid);
+ emit participantsChanged();
// check whether this was our own presence
if (jid == d->ownJid()) {
@@ -619,6 +623,7 @@ void QXmppMucRoom::_q_presenceReceived(const QXmppPresence &presence)
d->participants.clear();
foreach (const QString &jid, removed)
emit participantRemoved(jid);
+ emit participantsChanged();
// update available actions
if (d->allowedActions != NoAction) {