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


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

The following commit has been merged in the master branch:
commit d179984e79b1455e444977a07092477db8ff543a
Author: Leon Handreke <leonh at ndreke.de>
Date:   Sun Dec 29 08:08:07 2013 +0100

    Remove ConversationTarget, put as title/avatar/presenceIcon into Conversation
    
    REVIEW: 114718
---
 KTp/Declarative/CMakeLists.txt            |   1 -
 KTp/Declarative/conversation-target.cpp   | 139 ------------------------------
 KTp/Declarative/conversation-target.h     |  73 ----------------
 KTp/Declarative/conversation.cpp          |  77 +++++++++++++++--
 KTp/Declarative/conversation.h            |  26 ++++--
 KTp/Declarative/conversations-model.cpp   |   3 +-
 KTp/Declarative/pinned-contacts-model.cpp |   4 +-
 KTp/Declarative/qml-plugins.cpp           |   2 -
 8 files changed, 96 insertions(+), 229 deletions(-)

diff --git a/KTp/Declarative/CMakeLists.txt b/KTp/Declarative/CMakeLists.txt
index 5517c31..5702553 100644
--- a/KTp/Declarative/CMakeLists.txt
+++ b/KTp/Declarative/CMakeLists.txt
@@ -5,7 +5,6 @@ include_directories (${CMAKE_CURRENT_BINARY_DIR}
 
 set (ktp_qml_plugin_SRCS
     ${KTP_GLOBAL_SOURCES}
-    conversation-target.cpp
     conversation.cpp
     conversations-model.cpp
     hide-window-component.cpp
diff --git a/KTp/Declarative/conversation-target.cpp b/KTp/Declarative/conversation-target.cpp
deleted file mode 100644
index 4e8af19..0000000
--- a/KTp/Declarative/conversation-target.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
-    Copyright (C) 2011  Lasath Fernando <kde at lasath.org>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-#include "conversation-target.h"
-#include <TelepathyQt/AvatarData>
-#include <TelepathyQt/Contact>
-#include <KDebug>
-#include <KTp/presence.h>
-
-class  ConversationTarget::ConversationTargetPrivate
-{
-  public:
-    KTp::ContactPtr contact;
-    KIcon avatar;
-    Tp::AccountPtr account;
-};
-
-ConversationTarget::ConversationTarget(const Tp::AccountPtr &account, const KTp::ContactPtr &contact, QObject *parent) :
-    QObject(parent),
-    d(new ConversationTargetPrivate)
-{
-    kDebug();
-
-    if (contact) {
-        setupContactSignals(contact);
-    }
-
-    d->contact = contact;
-    d->account = account;
-    updateAvatar();
-}
-
-void ConversationTarget::setupContactSignals(KTp::ContactPtr contact)
-{
-    connect(contact.constData(), SIGNAL(aliasChanged(QString)), SIGNAL(nickChanged(QString)));
-    connect(contact.constData(), SIGNAL(avatarDataChanged(Tp::AvatarData)), SLOT(onAvatarDataChanged()));
-    connect(contact.constData(), SIGNAL(presenceChanged(Tp::Presence)), SLOT(onPresenceChanged()));
-}
-
-QIcon ConversationTarget::avatar() const
-{
-    if (d->contact) {
-        return d->avatar;
-    } else {
-        return QIcon();
-    }
-}
-
-QString ConversationTarget::id() const
-{
-    if (d->contact) {
-        return d->contact->id();
-    } else {
-        return QString();
-    }
-}
-
-QString ConversationTarget::nick() const
-{
-    if (d->contact) {
-        return d->contact->alias();
-    } else {
-        return QString();
-    }
-}
-
-QIcon ConversationTarget::presenceIcon() const
-{
-    if (d->contact) {
-        return KTp::Presence(d->contact->presence()).icon();
-    } else {
-        return QIcon();
-    }
-}
-
-QString ConversationTarget::presenceIconName() const
-{
-    if (d->contact) {
-       return KTp::Presence(d->contact->presence()).iconName();
-    } else {
-       return QString();
-    }
-}
-
-void ConversationTarget::onPresenceChanged()
-{
-    Q_EMIT presenceIconChanged(presenceIcon());
-    Q_EMIT presenceIconNameChanged(presenceIconName());
-}
-
-void ConversationTarget::onAvatarDataChanged()
-{
-    updateAvatar();
-    Q_EMIT avatarChanged(avatar());
-}
-
-void ConversationTarget::updateAvatar()
-{
-    QString path;
-    if (d->contact) {
-        path = d->contact->avatarData().fileName;
-    }
-
-    if (path.isEmpty()) {
-        path = QLatin1String("im-user");
-    }
-
-    d->avatar = KIcon(path);
-}
-
-KTp::ContactPtr ConversationTarget::contact() const
-{
-    return d->contact;
-}
-
-Tp::AccountPtr ConversationTarget::account() const
-{
-    return d->account;
-}
-
-ConversationTarget::~ConversationTarget()
-{
-    delete d;
-}
diff --git a/KTp/Declarative/conversation-target.h b/KTp/Declarative/conversation-target.h
deleted file mode 100644
index e620cdc..0000000
--- a/KTp/Declarative/conversation-target.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-    Copyright (C) 2011  Lasath Fernando <kde at lasath.org>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-
-#ifndef CONVERSATION_TARGET_H
-#define CONVERSATION_TARGET_H
-
-#include <QObject>
-#include <QIcon>
-
-#include "KTp/types.h"
-
-class ConversationTarget : public QObject
-{
-    Q_OBJECT
-
-    Q_PROPERTY(QIcon avatar READ avatar NOTIFY avatarChanged);
-    Q_PROPERTY(QString nick READ nick NOTIFY nickChanged);
-    Q_PROPERTY(QIcon presenceIcon READ presenceIcon NOTIFY presenceIconChanged);
-    Q_PROPERTY(QString presenceIconName READ presenceIconName NOTIFY presenceIconNameChanged)
-    Q_PROPERTY(QString id READ id CONSTANT)
-    Q_PROPERTY(KTp::ContactPtr contact READ contact CONSTANT)
-    Q_PROPERTY(Tp::AccountPtr account READ account CONSTANT)
-
-  public:
-    explicit ConversationTarget(const Tp::AccountPtr &account, const KTp::ContactPtr &contact, QObject *parent = 0);
-    virtual ~ConversationTarget();
-
-    QIcon   avatar() const;
-    QString id() const;
-    QString nick() const;
-    QIcon   presenceIcon() const;
-    QString presenceIconName() const;
-
-    KTp::ContactPtr contact() const;
-    Tp::AccountPtr account() const;
-
-  Q_SIGNALS:
-    void avatarChanged(QIcon avatar);
-    void nickChanged(QString nick);
-    void presenceIconChanged(QIcon icon);
-    void presenceIconNameChanged(QString icon);
-
-  private Q_SLOTS:
-    void onAvatarDataChanged();
-    void onPresenceChanged();
-
-  private:
-    void setupContactSignals(KTp::ContactPtr contact);
-    void updateAvatar();
-
-    class ConversationTargetPrivate;
-    ConversationTargetPrivate *d;
-};
-
-Q_DECLARE_METATYPE(ConversationTarget*)
-
-#endif // CONVERSATION_TARGET_H
diff --git a/KTp/Declarative/conversation.cpp b/KTp/Declarative/conversation.cpp
index a3644fd..5c3ba0b 100644
--- a/KTp/Declarative/conversation.cpp
+++ b/KTp/Declarative/conversation.cpp
@@ -26,7 +26,6 @@
 #include <TelepathyQt/PendingChannel>
 
 #include <KDebug>
-#include "conversation-target.h"
 
 #include "channel-delegator.h"
 
@@ -34,13 +33,15 @@ class Conversation::ConversationPrivate
 {
   public:
     MessagesModel *messages;
-    ConversationTarget *target;
     //stores if the conversation has been delegated to another client and we are only observing the channel
     //and not handling it.
     bool delegated;
     bool valid;
     Tp::AccountPtr account;
     QTimer *pausedStateTimer;
+    // May be null for group chats.
+    KTp::ContactPtr targetContact;
+    bool isGroupChat;
 };
 
 Conversation::Conversation(const Tp::TextChannelPtr &channel,
@@ -56,13 +57,25 @@ Conversation::Conversation(const Tp::TextChannelPtr &channel,
 
     d->messages = new MessagesModel(account, this);
     setTextChannel(channel);
-    d->target = new ConversationTarget(account, KTp::ContactPtr::qObjectCast(channel->targetContact()), this);
 
     d->delegated = false;
 
     d->pausedStateTimer = new QTimer(this);
     d->pausedStateTimer->setSingleShot(true);
     connect(d->pausedStateTimer, SIGNAL(timeout()), this, SLOT(onChatPausedTimerExpired()));
+
+    if (channel->targetContact().isNull()) {
+        d->isGroupChat = true;
+    } else {
+        d->isGroupChat = false;
+        d->targetContact = KTp::ContactPtr::qObjectCast(channel->targetContact());
+        connect(d->targetContact.constData(), SIGNAL(aliasChanged(QString)),
+                this, SLOT(onTargetContactAliasChanged(QString)));
+        connect(d->targetContact.constData(), SIGNAL(avatarDataChanged(Tp::AvatarData)),
+                this, SLOT(onTargetContactAvatarDataChanged()));
+        connect(d->targetContact.constData(), SIGNAL(presenceChanged(Tp::Presence)),
+                this, SLOT(onTargetContactPresenceChanged()));
+    }
 }
 
 Conversation::Conversation(QObject *parent) : QObject(parent)
@@ -92,9 +105,48 @@ MessagesModel* Conversation::messages() const
     return d->messages;
 }
 
-ConversationTarget* Conversation::target() const
+QString Conversation::title() const
+{
+    if (d->isGroupChat) {
+        QString roomName = textChannel()->targetId();
+        return roomName.left(roomName.indexOf(QLatin1Char('@')));
+    } else {
+        return d->targetContact->alias();
+    }
+}
+
+QIcon Conversation::presenceIcon() const
 {
-    return d->target;
+    if (d->isGroupChat) {
+        return KTp::Presence(Tp::Presence::available()).icon();
+    } else {
+        return KTp::Presence(d->targetContact->presence()).icon();
+    }
+}
+
+QIcon Conversation::avatar() const
+{
+    if (d->isGroupChat) {
+        return QIcon();
+    } else {
+        QString path = d->targetContact->avatarData().fileName;
+        if (path.isEmpty()) {
+            path = QLatin1String("im-user");
+        }
+        return KIcon(path);
+    }
+}
+
+KTp::ContactPtr Conversation::targetContact() const {
+    if (d->isGroupChat) {
+        return KTp::ContactPtr();
+    } else {
+        return d->targetContact;
+    }
+}
+
+Tp::AccountPtr Conversation::account() const {
+    return d->account;
 }
 
 bool Conversation::isValid()
@@ -176,6 +228,21 @@ void Conversation::onChatPausedTimerExpired()
     d->messages->textChannel()->requestChatState(Tp::ChannelChatStatePaused);
 }
 
+void Conversation::onTargetContactAvatarDataChanged()
+{
+    Q_EMIT avatarChanged(avatar());
+}
+
+void Conversation::onTargetContactAliasChanged()
+{
+    Q_EMIT titleChanged(title());
+}
+
+void Conversation::onTargetContactPresenceChanged()
+{
+    Q_EMIT presenceIconChanged(presenceIcon());
+}
+
 Conversation::~Conversation()
 {
     kDebug();
diff --git a/KTp/Declarative/conversation.h b/KTp/Declarative/conversation.h
index 38b313e..6b28385 100644
--- a/KTp/Declarative/conversation.h
+++ b/KTp/Declarative/conversation.h
@@ -26,18 +26,20 @@
 
 #include <KIcon>
 
-#include "conversation-target.h"
 #include "messages-model.h"
 
-class ConversationTarget;
 class MessagesModel;
 class Conversation : public QObject
 {
     Q_OBJECT
 
-    Q_PROPERTY(ConversationTarget *target READ target CONSTANT)
     Q_PROPERTY(MessagesModel *messages READ messages CONSTANT)
     Q_PROPERTY(bool valid READ isValid NOTIFY validityChanged)
+    Q_PROPERTY(QString title READ title CONSTANT)
+    Q_PROPERTY(QIcon presenceIcon READ presenceIcon CONSTANT)
+    Q_PROPERTY(QIcon avatar READ avatar CONSTANT)
+    Q_PROPERTY(Tp::AccountPtr account READ account CONSTANT)
+    Q_PROPERTY(KTp::ContactPtr targetContact READ targetContact CONSTANT)
 
 public:
     Conversation(const Tp::TextChannelPtr &channel, const Tp::AccountPtr &account, QObject *parent = 0);
@@ -48,12 +50,23 @@ public:
     Tp::TextChannelPtr textChannel() const;
 
     MessagesModel* messages() const;
-    ConversationTarget* target() const;
+    QString title() const;
+    QIcon presenceIcon() const;
+    QIcon avatar() const;
+
+    /**
+     * Target contact of this conversation. May be null if conversation is a group chat.
+     */
+    KTp::ContactPtr targetContact() const;
+    Tp::AccountPtr account() const;
 
     bool isValid();
 
 Q_SIGNALS:
     void validityChanged(bool isValid);
+    void avatarChanged(QIcon avatar);
+    void titleChanged(QString title);
+    void presenceIconChanged(QIcon icon);
     void conversationCloseRequested();
 
 public Q_SLOTS:
@@ -66,12 +79,15 @@ private Q_SLOTS:
     void onAccountConnectionChanged(const Tp::ConnectionPtr &connection);
     void onCreateChannelFinished(Tp::PendingOperation *op);
     void onChatPausedTimerExpired();
+    void onTargetContactAvatarDataChanged();
+    void onTargetContactAliasChanged();
+    void onTargetContactPresenceChanged();
 
 private:
     class ConversationPrivate;
     ConversationPrivate *d;
 };
 
-Q_DECLARE_METATYPE(Conversation*);
+Q_DECLARE_METATYPE(Conversation*)
 
 #endif // CONVERSATION_H
diff --git a/KTp/Declarative/conversations-model.cpp b/KTp/Declarative/conversations-model.cpp
index 4e3489a..f8f08bd 100644
--- a/KTp/Declarative/conversations-model.cpp
+++ b/KTp/Declarative/conversations-model.cpp
@@ -19,7 +19,6 @@
 
 #include "conversations-model.h"
 #include "conversation.h"
-#include "conversation-target.h"
 #include "messages-model.h"
 
 #include <KDebug>
@@ -115,7 +114,7 @@ void ConversationsModel::handleChannels(const Tp::MethodInvocationContextPtr<> &
     //if we are handling but should delegate, call delegate channel
     int i = 0;
     Q_FOREACH(Conversation *convo, d->conversations) {
-        if (convo->target()->id() == textChannel->targetId() &&
+        if (convo->textChannel()->targetId() == textChannel->targetId() &&
                 convo->textChannel()->targetHandleType() == textChannel->targetHandleType())
         {
             if (!shouldDelegate) {
diff --git a/KTp/Declarative/pinned-contacts-model.cpp b/KTp/Declarative/pinned-contacts-model.cpp
index ccb5f2d..96cbf1b 100644
--- a/KTp/Declarative/pinned-contacts-model.cpp
+++ b/KTp/Declarative/pinned-contacts-model.cpp
@@ -153,7 +153,7 @@ QVariant PinnedContactsModel::data(const QModelIndex &index, int role) const
             bool found = false;
             for (int i = 0; !found && i < d->conversations->rowCount(); i++) {
                 QModelIndex idx = d->conversations->index(i, 0);
-                KTp::ContactPtr contact = idx.data(ConversationsModel::ConversationRole).value<Conversation*>()->target()->contact();
+                KTp::ContactPtr contact = idx.data(ConversationsModel::ConversationRole).value<Conversation*>()->targetContact();
                 found |= contact->id() == p->contact()->id();
             }
             return found;
@@ -248,7 +248,7 @@ void PinnedContactsModel::conversationsStateChanged(const QModelIndex &parent, i
     for (int i = start; i <= end; i++) {
         QModelIndex idx = d->conversations->index(i, 0, parent);
         Conversation* conv = idx.data(ConversationsModel::ConversationRole).value<Conversation*>();
-        KTp::ContactPtr contact = conv->target()->contact();
+        KTp::ContactPtr contact = conv->targetContact();
         Q_FOREACH(const KTp::PersistentContactPtr &p, d->m_pins) {
             if (p->contact() == contact) {
                 QModelIndex contactIdx = indexForContact(p->contact());
diff --git a/KTp/Declarative/qml-plugins.cpp b/KTp/Declarative/qml-plugins.cpp
index 88e08bf..bc134e0 100644
--- a/KTp/Declarative/qml-plugins.cpp
+++ b/KTp/Declarative/qml-plugins.cpp
@@ -28,7 +28,6 @@
 
 #include "conversation.h"
 #include "conversations-model.h"
-#include "conversation-target.h"
 #include "hide-window-component.h"
 #include "messages-model.h"
 #include "pinned-contacts-model.h"
@@ -65,7 +64,6 @@ void QmlPlugins::registerTypes(const char *uri)
         QLatin1String("It will be created once the conversation is created"));
 
     qmlRegisterType<TelepathyManager>();
-    qmlRegisterType<ConversationTarget>();
     qmlRegisterType<ConversationsModel>();
     qRegisterMetaType<Tp::AccountManagerPtr>();
     qRegisterMetaType<KTp::ContactPtr>();

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list