[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:06:17 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=1d8ae32

The following commit has been merged in the master branch:
commit 1d8ae32cd6b8752810027f90ff99c8b5354342a7
Author: David Edmundson <kde at davidedmundson.co.uk>
Date:   Tue Jan 29 17:37:57 2013 +0000

    Generally fix MessageProcessor to match the original design
    
     - Make Message constructor private and a friend class of the message processor. This simplifies code, and makes accidentally skipping the escape filtering impossible
     - Message now has two extra properties isHistory and messageDirection
     - Message filters have access to the "message context" the account/channel in which the message was received
     - Remove the broken filterIncomingMessage / filterOutgoingMessages with just one method. Plugins can use messageDirection to get the same functionality
    
    This is a setup to fix a range of bugs in the message filters
---
 KTp/abstract-message-filter.cpp              |  3 ++-
 KTp/abstract-message-filter.h                | 18 +++++--------
 KTp/{contact-factory.h => message-context.h} | 39 +++++++++++++++++-----------
 KTp/message-processor.cpp                    | 31 +++++++++++++++-------
 KTp/message-processor.h                      |  9 ++++---
 KTp/message.cpp                              | 19 +++++++-------
 KTp/message.h                                | 11 ++++----
 7 files changed, 75 insertions(+), 55 deletions(-)

diff --git a/KTp/abstract-message-filter.cpp b/KTp/abstract-message-filter.cpp
index 83351f9..acead98 100644
--- a/KTp/abstract-message-filter.cpp
+++ b/KTp/abstract-message-filter.cpp
@@ -29,9 +29,10 @@ AbstractMessageFilter::~AbstractMessageFilter()
 {
 }
 
-void AbstractMessageFilter::filterMessage(KTp::Message &message)
+void AbstractMessageFilter::filterMessage(KTp::Message &message, const KTp::MessageContext &context)
 {
     Q_UNUSED(message)
+    Q_UNUSED(context)
 }
 
 QStringList AbstractMessageFilter::requiredScripts()
diff --git a/KTp/abstract-message-filter.h b/KTp/abstract-message-filter.h
index d5259ee..dfa7bc6 100644
--- a/KTp/abstract-message-filter.h
+++ b/KTp/abstract-message-filter.h
@@ -16,22 +16,18 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#ifndef ABSTRACTPLUGIN_H
-#define ABSTRACTPLUGIN_H
+#ifndef KTP_ABSTRACT_MESSAGE_FILTER_H
+#define KTP_ABSTRACT_MESSAGE_FILTER_H
 
 #include <KTp/message.h>
+#include <KTp/message-context.h>
 #include <KTp/ktp-export.h>
 
-namespace KTp
-{
+#include <TelepathyQt/Account>
+#include <TelepathyQt/TextChannel>
 
-class MessageContext
+namespace KTp
 {
-public:
-    Tp::AccountPtr &account;
-    Tp::TextChannelPtr &channel;
-};
-
 
 class KTP_EXPORT AbstractMessageFilter : public QObject
 {
@@ -42,7 +38,7 @@ class KTP_EXPORT AbstractMessageFilter : public QObject
     virtual ~AbstractMessageFilter();
 
     /** Filter messages to show on the UI recieved by another contact*/
-    virtual void filterMessage(KTp::Message &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel);
+    virtual void filterMessage(KTp::Message &message, const KTp::MessageContext &context);
 
     /** Scripts that must be included in the <head> section of the html required by this message filter.*/
     virtual QStringList requiredScripts();
diff --git a/KTp/contact-factory.h b/KTp/message-context.h
similarity index 53%
copy from KTp/contact-factory.h
copy to KTp/message-context.h
index 5881451..007b247 100644
--- a/KTp/contact-factory.h
+++ b/KTp/message-context.h
@@ -1,5 +1,5 @@
 /*
-* Copyright (C) 2012 David Edmundson <kde at davidedmundson.co.uk>
+* Copyright (C) 2013 David Edmundson <kde at davidedmundson.co.uk>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
@@ -16,24 +16,33 @@
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#ifndef KTP_CONTACT_FACTORY_H
-#define KTP_CONTACT_FACTORY_H
+#ifndef KTP_MESSAGE_CONTEXT_H
+#define KTP_MESSAGE_CONTEXT_H
 
-#include <TelepathyQt/ContactFactory>
-#include <TelepathyQt/Types>
+#include <TelepathyQt/Account>
+#include <TelepathyQt/TextChannel>
 
-#include <KTp/ktp-export.h>
+namespace KTp
+{
 
-namespace KTp {
-class KTP_EXPORT ContactFactory : public Tp::ContactFactory
+class KTP_EXPORT MessageContext
 {
 public:
-    static Tp::ContactFactoryPtr create(const Tp::Features &features=Tp::Features());
-protected:
-    ContactFactory(const Tp::Features &features);
-    virtual Tp::ContactPtr construct(Tp::ContactManager *manager, const Tp::ReferencedHandles &handle, const Tp::Features &features, const QVariantMap &attributes) const;
-};
-}
+    MessageContext(const Tp::AccountPtr &_account, const Tp::TextChannelPtr &_channel) :
+        account(_account),
+        channel(_channel)
+    {
+    }
 
+    /** Account in which the message is sent
+    */
+    Tp::AccountPtr account;
 
-#endif // CONTACTFACTORY_H
+    /** Channel in which the message was sent
+     @warning this may be null, and should be checked before use
+    */
+    Tp::TextChannelPtr channel;
+};
+
+}
+#endif // MESSAGECONTEXT_H
diff --git a/KTp/message-processor.cpp b/KTp/message-processor.cpp
index 760e369..7232f77 100644
--- a/KTp/message-processor.cpp
+++ b/KTp/message-processor.cpp
@@ -139,19 +139,30 @@ QString MessageProcessor::header()
     return out;
 }
 
-KTp::Message MessageProcessor::processIncomingMessage(KTp::Message receivedMessage)
+KTp::Message MessageProcessor::processIncomingMessage(const Tp::Message &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel)
 {
-    Q_FOREACH (AbstractMessageFilter *filter, d->filters) {
-        kDebug() << "running filter :" << filter->metaObject()->className();
-        filter->filterIncomingMessage(receivedMessage);
-    }
-    return receivedMessage;
+    KTp::MessageContext context(account, channel);
+    return processMessage(KTp::Message(message, context), context);
+}
+
+KTp::Message KTp::MessageProcessor::processIncomingMessage(const Tp::ReceivedMessage &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel)
+{
+    KTp::MessageContext context(account, channel);
+    return processMessage(KTp::Message(message, context), context);
 }
 
-KTp::Message MessageProcessor::processOutgoingMessage(KTp::Message sentMessage)
+KTp::Message KTp::MessageProcessor::processIncomingMessage(const Tpl::TextEventPtr &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel)
 {
-    Q_FOREACH  (AbstractMessageFilter *filter, d->filters) {
-        filter->filterOutgoingMessage(sentMessage);
+    KTp::MessageContext context(account, channel);
+    return processMessage(KTp::Message(message, context), context);
+}
+
+
+KTp::Message MessageProcessor::processMessage(Message message, const MessageContext &context)
+{
+    Q_FOREACH (AbstractMessageFilter *filter, d->filters) {
+        kDebug() << "running filter :" << filter->metaObject()->className();
+        filter->filterMessage(message, context);
     }
-    return sentMessage;
+    return message;
 }
diff --git a/KTp/message-processor.h b/KTp/message-processor.h
index 3b458ab..e1609aa 100644
--- a/KTp/message-processor.h
+++ b/KTp/message-processor.h
@@ -26,7 +26,7 @@
 
 #include <KTp/message.h>
 #include <KTp/ktp-export.h>
-
+#include <KTp/abstract-message-filter.h>
 #include <TelepathyLoggerQt4/Types>
 
 namespace Tp
@@ -54,13 +54,14 @@ class KTP_EXPORT MessageProcessor : public QObject
     QString header();
 
     //text-ui will call this somewhere in handleIncommingMessage just before displaying it
-    KTp::Message processIncomingMessage(const Tp::Message &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel);
-    KTp::Message processIncomingMessage(const Tp::ReceivedMessage &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel);
-    KTp::Message processIncomingMessage(const Tpl::TextEventPtr &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel);
+    KTp::Message processMessage(const Tp::Message &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel);
+    KTp::Message processMessage(const Tp::ReceivedMessage &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel);
+    KTp::Message processMessage(const Tpl::TextEventPtr &message, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel);
 
 //    Tp::PendingSendMessage* sendMessage(const QString textMessage, const Tp::AccountPtr &account, const Tp::TextChannelPtr &channel);
 
   protected:
+    KTp::Message processMessage(KTp::Message message, const KTp::MessageContext &context);
     explicit MessageProcessor();
 
   private:
diff --git a/KTp/message.cpp b/KTp/message.cpp
index 9b33f73..2ee7f96 100644
--- a/KTp/message.cpp
+++ b/KTp/message.cpp
@@ -45,9 +45,10 @@ class Message::Private : public QSharedData {
     MessageDirection direction;
 };
 
-Message::Message(const Tp::Message &original) :
+Message::Message(const Tp::Message &original, const KTp::MessageContext &context) :
     d(new Private)
 {
+    Q_UNUSED(context)
     d->sentTime = original.sent();
     d->token = original.messageToken();
     d->messageType = original.messageType();
@@ -56,26 +57,26 @@ Message::Message(const Tp::Message &original) :
     setMainMessagePart(original.text());
 }
 
-Message::Message(const Tp::ReceivedMessage &original)
+Message::Message(const Tp::ReceivedMessage &original, const KTp::MessageContext &context)
 {
     d->sentTime = original.sent();
     d->token = original.messageToken();
     d->messageType = original.messageType();
     d->isHistory = original.isScrollback();
 
-    if (original.sender() && original.sender()->manager()) {
-        d->direction = original.sender()->manager()->connection()->selfContact();
-    }
+//    if (original.sender() && original.sender()->manager()) {
+//        d->direction = original.sender()->manager()->connection()->selfContact();
+//    }
 }
 
-Message::Message(const Tpl::TextEventPtr &original) :
+Message::Message(const Tpl::TextEventPtr &original, const KTp::MessageContext &context) :
     d(new Private)
 {
     d->sentTime = original->timestamp();
     d->token = original->messageToken();
     d->messageType = original->messageType();
     d->isHistory = true;
-    original->
+//    original->
 
     setMainMessagePart(original->message());
 }
@@ -173,7 +174,7 @@ bool Message::isHistory() const
     return d->isHistory;
 }
 
-MessageDirection Message::direction() const
+KTp::Message::MessageDirection Message::direction() const
 {
-    return d->direction();
+    return d->direction;
 }
diff --git a/KTp/message.h b/KTp/message.h
index 3a3b828..240e498 100644
--- a/KTp/message.h
+++ b/KTp/message.h
@@ -17,8 +17,8 @@
 */
 
 
-#ifndef MESSAGE_H
-#define MESSAGE_H
+#ifndef KTP_MESSAGE_H
+#define KTP_MESSAGE_H
 
 #include <TelepathyQt/Message>
 
@@ -26,6 +26,7 @@
 #include <TelepathyLoggerQt4/TextEvent>
 
 #include <KTp/ktp-export.h>
+#include <KTp/message-context.h>
 
 #include <QSharedDataPointer>
 
@@ -142,9 +143,9 @@ class KTP_EXPORT Message
     MessageDirection direction() const;
 
 protected:
-    Message(const Tp::Message &original);
-    Message(const Tp::ReceivedMessage &original);
-    Message(const Tpl::TextEventPtr &original);
+    Message(const Tp::Message &original, const KTp::MessageContext &context);
+    Message(const Tp::ReceivedMessage &original, const KTp::MessageContext &context);
+    Message(const Tpl::TextEventPtr &original, const KTp::MessageContext &context);
 
 
 private:

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list