[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9
Maximiliano Curia
maxy at moszumanska.debian.org
Mon May 9 09:05:14 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=7b7d7de
The following commit has been merged in the master branch:
commit 7b7d7de437ec18c69e77e9babfcbc54ac0101d96
Author: Lasath Fernando <kde at lasath.org>
Date: Tue May 1 11:37:30 2012 +1000
Imlpement PluginLoader
MessageProcessor now uses a KPluginLoader to load all the filters
dynamically at runtime. The tests for emoticonFilter pass even
though it's in its own plugin, so all this should be working
correctly.
---
KTp/abstract-message-filter.h | 2 +-
KTp/message-processor.cpp | 29 +++++++++++++++++++++++++++++
KTp/message-processor.h | 1 +
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/KTp/abstract-message-filter.h b/KTp/abstract-message-filter.h
index c07a95e..7b60d48 100644
--- a/KTp/abstract-message-filter.h
+++ b/KTp/abstract-message-filter.h
@@ -26,7 +26,7 @@ class KDE_TELEPATHY_CHAT_EXPORT AbstractMessageFilter : public QObject
{
Q_OBJECT
public:
- explicit AbstractMessageFilter(QObject* parent = 0);
+ AbstractMessageFilter(QObject* parent = 0);
virtual ~AbstractMessageFilter();
virtual void filterMessage(Message &message) = 0;
diff --git a/KTp/message-processor.cpp b/KTp/message-processor.cpp
index dfa78d4..c89c12f 100644
--- a/KTp/message-processor.cpp
+++ b/KTp/message-processor.cpp
@@ -20,10 +20,17 @@
#include "message-processor.h"
#include "filters.h"
+#include <KDebug>
+#include <KService>
+#include <KServiceTypeTrader>
+#include <KPluginFactory>
+
MessageProcessor* MessageProcessor::s_instance = 0;
MessageProcessor* MessageProcessor::instance()
{
+ kDebug();
+
static QMutex mutex;
if (!s_instance)
{
@@ -40,6 +47,7 @@ MessageProcessor* MessageProcessor::instance()
MessageProcessor::MessageProcessor()
{
m_filters << new EscapeFilter(this) << new UrlFilter(this);
+ loadAllPlugins();
}
@@ -51,6 +59,7 @@ Message MessageProcessor::processIncomingMessage(const Tp::ReceivedMessage &rece
{
Message message(receivedMessage);
Q_FOREACH(AbstractMessageFilter *filter, MessageProcessor::m_filters) {
+ kDebug() << "running filter :" << filter->metaObject()->className();
filter->filterMessage(message);
}
return message;
@@ -65,4 +74,24 @@ Message MessageProcessor::processOutgoingMessage(const Tp::Message &sentMessage)
return message;
}
+void MessageProcessor::loadAllPlugins() {
+ kDebug() << "Starting loading filters...";
+
+ KService::List offers = KServiceTypeTrader::self()->query(QLatin1String("KTpTextUi/MessageFilter"));
+ Q_FOREACH (KService::Ptr service, offers) {
+ kDebug() << "loaded service :" << service;
+ KPluginFactory *factory = KPluginLoader(service->library()).factory();
+
+ if(factory) {
+ kDebug() << "loaded factory :" << factory;
+ AbstractMessageFilter *filter = factory->create<AbstractMessageFilter>(this);
+ if(filter) {
+ kDebug() << "loaded message filter : " << filter;
+ m_filters.append(filter);
+ }
+ } else {
+ kError() << "error loading plugin :" << service->library();
+ }
+ }
+}
diff --git a/KTp/message-processor.h b/KTp/message-processor.h
index 926e613..a4e26ae 100644
--- a/KTp/message-processor.h
+++ b/KTp/message-processor.h
@@ -48,6 +48,7 @@ protected:
private:
+ void loadAllPlugins();
static MessageProcessor* s_instance;
QList<AbstractMessageFilter*> m_filters;
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list