aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/QXmppPubSubEventManager.h7
-rw-r--r--src/client/QXmppPubSubManager.cpp4
2 files changed, 4 insertions, 7 deletions
diff --git a/src/client/QXmppPubSubEventManager.h b/src/client/QXmppPubSubEventManager.h
index 9f508249..d5a4e4e7 100644
--- a/src/client/QXmppPubSubEventManager.h
+++ b/src/client/QXmppPubSubEventManager.h
@@ -7,10 +7,11 @@
#include "QXmppClient.h"
#include "QXmppClientExtension.h"
+#include "QXmppPubSubEventHandler.h"
class QXmppPubSubManager;
-class QXMPP_EXPORT QXmppPubSubEventManager : public QXmppClientExtension
+class QXMPP_EXPORT QXmppPubSubEventManager : public QXmppClientExtension, public QXmppPubSubEventHandler
{
Q_OBJECT
@@ -21,14 +22,10 @@ public:
}
protected:
- virtual bool handlePubSubEvent(const QDomElement &element, const QString &pubSubService, const QString &nodeName) = 0;
-
inline QXmppPubSubManager *pubSub()
{
return client()->findExtension<QXmppPubSubManager>();
}
-
- friend class QXmppPubSubManager;
};
#endif
diff --git a/src/client/QXmppPubSubManager.cpp b/src/client/QXmppPubSubManager.cpp
index a9697812..2b7b4d71 100644
--- a/src/client/QXmppPubSubManager.cpp
+++ b/src/client/QXmppPubSubManager.cpp
@@ -990,8 +990,8 @@ bool QXmppPubSubManager::handleStanza(const QDomElement &element)
const auto extensions = client()->extensions();
for (auto *extension : extensions) {
- if (auto *eventManager = qobject_cast<QXmppPubSubEventManager *>(extension)) {
- if (eventManager->handlePubSubEvent(element, service, node)) {
+ if (auto *eventHandler = dynamic_cast<QXmppPubSubEventHandler *>(extension)) {
+ if (eventHandler->handlePubSubEvent(element, service, node)) {
return true;
}
}