diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-02-22 09:25:36 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-02-22 09:25:36 +0000 |
| commit | be8f5fd37b142e8a6e76a29f6e5f15d5c8e2b7d5 (patch) | |
| tree | fdf692d6c66943560fda93a4f1f410bfbb360663 | |
| parent | 3e8b1bd1697696dcbd14ef8f7c24701d4b04eede (diff) | |
| download | qxmpp-be8f5fd37b142e8a6e76a29f6e5f15d5c8e2b7d5.tar.gz | |
clear roster when the XMPP stream gets disconnected
| -rw-r--r-- | source/QXmppRoster.cpp | 7 | ||||
| -rw-r--r-- | source/QXmppRoster.h | 3 | ||||
| -rw-r--r-- | source/QXmppStream.cpp | 6 |
3 files changed, 15 insertions, 1 deletions
diff --git a/source/QXmppRoster.cpp b/source/QXmppRoster.cpp index 84b98ed5..9d272cfa 100644 --- a/source/QXmppRoster.cpp +++ b/source/QXmppRoster.cpp @@ -38,6 +38,13 @@ QXmppRoster::~QXmppRoster() } +void QXmppRoster::disconnected() +{ + m_entries = QMap<QString, QXmppRoster::QXmppRosterEntry>(); + m_presences = QMap<QString, QMap<QString, QXmppPresence> >(); + m_isRosterReceived = false; +} + void QXmppRoster::presenceReceived(const QXmppPresence& presence) { QString jid = presence.getFrom(); diff --git a/source/QXmppRoster.h b/source/QXmppRoster.h index 1d585ec7..110b4a0a 100644 --- a/source/QXmppRoster.h +++ b/source/QXmppRoster.h @@ -138,9 +138,10 @@ private: // map of resources of the jid and map of resouces and presences QMap<QString, QMap<QString, QXmppPresence> > m_presences; // flag to store that QXmppRoster has been populated - bool m_isRosterReceived ; + bool m_isRosterReceived; private slots: + void disconnected(); void presenceReceived(const QXmppPresence&); void rosterIqReceived(const QXmppRosterIq&); void rosterRequestIqReceived(const QXmppRosterIq&); diff --git a/source/QXmppStream.cpp b/source/QXmppStream.cpp index d089935d..11f801a6 100644 --- a/source/QXmppStream.cpp +++ b/source/QXmppStream.cpp @@ -87,6 +87,12 @@ QXmppStream::QXmppStream(QXmppClient* client) Q_ASSERT(check); check = QObject::connect(this, + SIGNAL(disconnected()), + &m_roster, + SLOT(disconnected())); + Q_ASSERT(check); + + check = QObject::connect(this, SIGNAL(presenceReceived(const QXmppPresence&)), &m_roster, SLOT(presenceReceived(const QXmppPresence&))); |
