diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-09-29 09:37:27 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-09-29 09:37:27 +0000 |
| commit | dbb5972cda8e66ad4d7989e4ff0354b34e65c0ac (patch) | |
| tree | b3fec7fb86c78cc2afaf6eaa49e66a0c4d5d8e43 /src/QXmppMucManager.cpp | |
| parent | 31b11a9ff762854f58468010c7e02b0c79108e3b (diff) | |
| download | qxmpp-dbb5972cda8e66ad4d7989e4ff0354b34e65c0ac.tar.gz | |
add notifier signal for QXmppMucRoom::participants property
Diffstat (limited to 'src/QXmppMucManager.cpp')
| -rw-r--r-- | src/QXmppMucManager.cpp | 9 |
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) { |
