diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-06-05 10:15:12 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-06-05 10:15:12 +0000 |
| commit | c79ca4de22443c6d786b96e5fd33bd03e19c4900 (patch) | |
| tree | 0c314061ded0e654bd741313a9f4b7356ac864b2 /src/QXmppMucManager.cpp | |
| parent | 6bee004d52df797e402e9a0c6feb21179f9389e6 (diff) | |
| download | qxmpp-c79ca4de22443c6d786b96e5fd33bd03e19c4900.tar.gz | |
* add some properties to make MUC easier to script
* remove room participant just after emitting participantRemoved()
Diffstat (limited to 'src/QXmppMucManager.cpp')
| -rw-r--r-- | src/QXmppMucManager.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/QXmppMucManager.cpp b/src/QXmppMucManager.cpp index f2a8933b..b753250c 100644 --- a/src/QXmppMucManager.cpp +++ b/src/QXmppMucManager.cpp @@ -59,7 +59,6 @@ QXmppMucManager::QXmppMucManager() d = new QXmppMucManagerPrivate; } - /// Destroys a QXmppMucManager. QXmppMucManager::~QXmppMucManager() @@ -188,6 +187,12 @@ QXmppMucRoom::QXmppMucRoom(QXmppClient *client, const QString &jid, QObject *par check = connect(d->client, SIGNAL(presenceReceived(QXmppPresence)), this, SLOT(_q_presenceReceived(QXmppPresence))); Q_ASSERT(check); + + check = connect(this, SIGNAL(joined()), this, SIGNAL(isJoinedChanged())); + Q_ASSERT(check); + + check = connect(this, SIGNAL(left()), this, SIGNAL(isJoinedChanged())); + Q_ASSERT(check); } /// Destroys a QXmppMucRoom. @@ -335,8 +340,12 @@ bool QXmppMucRoom::sendMessage(const QString &text) void QXmppMucRoom::setNickName(const QString &nickName) { + if (nickName == d->nickName) + return; + const bool wasJoined = isJoined(); d->nickName = nickName; + emit nickNameChanged(nickName); // if we had already joined the room, request nickname change if (wasJoined) { @@ -586,8 +595,11 @@ void QXmppMucRoom::_q_presenceReceived(const QXmppPresence &presence) } } else if (presence.type() == QXmppPresence::Unavailable) { - if (d->participants.remove(jid)) { + if (d->participants.contains(jid)) { + d->participants.insert(jid, presence); + emit participantRemoved(jid); + d->participants.remove(jid); // check whether this was our own presence if (jid == d->ownJid()) { |
