[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