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


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

The following commit has been merged in the master branch:
commit 5e02ba58f2186de6c354e140267585ac9d058d79
Author: David Edmundson <david at davidedmundson.co.uk>
Date:   Sun Apr 14 18:11:03 2013 +0100

    Expose sender in KTp::Message
    
    Simplify code and make it less possible to crash.
    Store the contactPtr of the sender where possible
    
    Also fix direction of log messages
    
    REVIEW: 109834
---
 KTp/message.cpp | 68 +++++++++++++++++++++++++++++++++------------------------
 KTp/message.h   | 12 ++++++++--
 2 files changed, 50 insertions(+), 30 deletions(-)

diff --git a/KTp/message.cpp b/KTp/message.cpp
index cbb9134..5e2bdc3 100644
--- a/KTp/message.cpp
+++ b/KTp/message.cpp
@@ -45,6 +45,11 @@ class Message::Private : public QSharedData {
     QStringList scripts;
     bool isHistory;
     MessageDirection direction;
+
+    //if we have a valid sender pointer store that, otherwise store alias
+    KTp::ContactPtr sender;
+    QString senderAlias;
+    QString senderId;
 };
 
 Message& Message::operator=(const Message &other) {
@@ -64,10 +69,12 @@ Message::Message(const Tp::Message &original, const KTp::MessageContext &context
 
     setMainMessagePart(original.text());
 
-    setProperty("senderName", context.account()->nickname());
-    setProperty("senderAvatar", context.account()->avatar().avatarData);
-    setProperty("senderId",
-                context.account()->connection()->selfContact()->id());
+    if (context.account()->connection()) {
+        d->sender = KTp::ContactPtr::qObjectCast(context.account()->connection()->selfContact());
+    } else {
+        d->senderAlias = context.account()->nickname();
+        d->senderId = context.account()->uniqueIdentifier();
+    }
 }
 
 Message::Message(const Tp::ReceivedMessage &original, const KTp::MessageContext &context) :
@@ -88,11 +95,9 @@ Message::Message(const Tp::ReceivedMessage &original, const KTp::MessageContext
     setMainMessagePart(original.text());
 
     if (!original.sender().isNull()) {
-        setProperty("senderName", original.sender()->alias());
-        setProperty("senderAvatar", original.sender()->avatarData().fileName);
-        setProperty("senderId", original.sender()->id());
+        d->sender = KTp::ContactPtr::qObjectCast(original.sender());
     } else {
-        setProperty("senderName", original.senderNickname());
+        d->senderAlias = original.senderNickname();
     }
 }
 
@@ -104,18 +109,20 @@ Message::Message(const Tpl::TextEventPtr &original, const KTp::MessageContext &c
     d->messageType = original->messageType();
     d->isHistory = true;
 
-    setProperty("senderName", original->sender()->alias());
-    setProperty("senderId", original->sender()->identifier());
-
-    if (context.account() && context.account()->connection() && context.channel()) {
-        if (original->sender()->identifier() == context.account()->normalizedName()) {
-            d->direction = KTp::Message::LocalToRemote;
-            setProperty("senderAvatar", context.account()->
-                        connection()->selfContact()->avatarData().fileName);
-        } else {
-            d->direction = KTp::Message::RemoteToLocal;
-                setProperty("senderAvatar",
-                            context.channel()->targetContact()->avatarData().fileName);
+    d->senderAlias = original->sender()->alias();
+    d->senderId = original->sender()->identifier();
+
+    if (original->sender()->identifier() == context.account()->normalizedName()) {
+        d->direction = KTp::Message::LocalToRemote;
+    } else {
+        d->direction = KTp::Message::RemoteToLocal;
+    }
+
+    if (context.channel()) {
+        Q_FOREACH (const Tp::ContactPtr &contact, context.channel()->groupContacts()) {
+            if (contact->id() == original->sender()->identifier()) {
+                d->sender = KTp::ContactPtr::qObjectCast(contact);
+            }
         }
     }
 
@@ -130,12 +137,6 @@ Message::Message(const QString &messageText, const MessageContext &context) :
     d->direction = LocalToRemote;
     d->isHistory = false;
 
-    setProperty("senderName", context.account()->nickname());
-    setProperty("senderId", context.account()->
-                connection()->selfContact()->id());
-    setProperty("senderAvatar", context.account()->
-                connection()->selfContact()->avatarData().fileName);
-
     setMainMessagePart(messageText);
 }
 
@@ -224,12 +225,23 @@ Tp::ChannelTextMessageType Message::type() const
 
 QString Message::senderAlias() const
 {
-    return property("senderName").toString();
+    if (d->sender) {
+        return d->sender->alias();
+    }
+    return d->senderAlias;
 }
 
 QString Message::senderId() const
 {
-    return property("senderId").toString();
+    if (d->sender) {
+        return d->sender->id();
+    }
+    return d->senderId;
+}
+
+KTp::ContactPtr Message::sender() const
+{
+    return d->sender;
 }
 
 int Message::partsSize() const
diff --git a/KTp/message.h b/KTp/message.h
index 812c90e..982b8cf 100644
--- a/KTp/message.h
+++ b/KTp/message.h
@@ -26,6 +26,8 @@
 #include <TelepathyLoggerQt4/TextEvent>
 
 #include <KTp/ktp-export.h>
+#include <KTp/types.h>
+
 #include <KTp/message-context.h>
 
 #include <QSharedData>
@@ -51,7 +53,7 @@ namespace KTp
  */
 class KTP_EXPORT Message
 {
-  public:
+public:
     enum MessageDirection {
         LocalToRemote,
         RemoteToLocal
@@ -135,11 +137,17 @@ class KTP_EXPORT Message
     QString token() const;
     /*! 
eturn the type of the message*/
     Tp::ChannelTextMessageType type() const;
+
     /*! 
eturn the alias of the contact who composed this message */
     QString senderAlias() const;
-    /*! 
eturn the Id of the contact who composed this message */
+    /*! 
eturn the id of the contact who composed this message */
     QString senderId() const;
 
+    /*! 
eturn the contact who composed this message
+     *   @warning This may be null for service messages, log messages and other cases
+     */
+    KTp::ContactPtr sender() const;
+
     /*! 
eturn the number of appended parts */
     int partsSize() const;
 

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list