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


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

The following commit has been merged in the master branch:
commit 9574e70e6d473bb7cb5875a2b9ed7f961e2f4032
Author: David Edmundson <kde at davidedmundson.co.uk>
Date:   Mon Feb 11 03:04:49 2013 +0000

    ContactsModel can enable TextChannelWatcher
    
    REVIEW: 108911
---
 KTp/Models/contacts-model.cpp | 53 +++++++++++++++++++++++++++++++++++++------
 KTp/Models/contacts-model.h   | 10 ++++++++
 2 files changed, 56 insertions(+), 7 deletions(-)

diff --git a/KTp/Models/contacts-model.cpp b/KTp/Models/contacts-model.cpp
index 8d6c3b8..d493474 100644
--- a/KTp/Models/contacts-model.cpp
+++ b/KTp/Models/contacts-model.cpp
@@ -23,6 +23,9 @@
 #include "contacts-list-model.h"
 #include "accounts-tree-proxy-model.h"
 #include "groups-tree-proxy-model.h"
+#include "text-channel-watcher-proxy-model.h"
+
+#include <TelepathyQt/ClientRegistrar>
 
 namespace KTp
 {
@@ -30,9 +33,12 @@ class ContactsModel::Private
 {
 public:
     GroupMode groupMode;
+    bool trackUnread;
     QWeakPointer<KTp::AbstractGroupingProxyModel> proxy;
     KTp::ContactsListModel *source;
     Tp::AccountManagerPtr accountManager;
+    Tp::ClientRegistrarPtr clientRegistrar;
+    Tp::SharedPtr<KTp::TextChannelWatcherProxyModel> channelWatcherProxy;
 };
 }
 
@@ -42,6 +48,7 @@ KTp::ContactsModel::ContactsModel(QObject *parent)
       d(new Private)
 {
     d->groupMode = NoGrouping;
+    d->trackUnread = false;
     d->source = new KTp::ContactsListModel(this);
 }
 
@@ -80,6 +87,23 @@ void KTp::ContactsModel::setGroupMode(KTp::ContactsModel::GroupMode mode)
     Q_EMIT groupModeChanged();
 }
 
+KTp::ContactsModel::GroupMode KTp::ContactsModel::groupMode() const
+{
+    return d->groupMode;
+}
+
+void KTp::ContactsModel::setTrackUnreadMessages(bool trackUnread)
+{
+    if (d->trackUnread == trackUnread) {
+        return;
+    }
+    d->trackUnread = trackUnread;
+
+    updateGroupProxyModels();
+
+    Q_EMIT trackUnreadMessagesChanged();
+}
+
 void KTp::ContactsModel::updateGroupProxyModels()
 {
     //if there no account manager there's not a lot point doing anything
@@ -87,6 +111,25 @@ void KTp::ContactsModel::updateGroupProxyModels()
         return;
     }
 
+    //if needed set up the client registrar and observer proxy model
+    if (d->trackUnread && d->clientRegistrar.isNull()) {
+        d->clientRegistrar = Tp::ClientRegistrar::create(d->accountManager);
+        d->channelWatcherProxy = Tp::SharedPtr<KTp::TextChannelWatcherProxyModel>(new TextChannelWatcherProxyModel());
+        d->channelWatcherProxy->setSourceModel(d->source);
+        d->clientRegistrar->registerClient(Tp::AbstractClientPtr::dynamicCast(d->channelWatcherProxy), QLatin1String("ListWatcher"));
+    } else if (!d->trackUnread) {
+        //delete the client registrar
+        d->clientRegistrar.reset();
+        d->channelWatcherProxy.reset();
+    }
+
+    QAbstractItemModel *modelToGroup = 0;
+    if (d->trackUnread) {
+        modelToGroup = d->channelWatcherProxy.data();
+    } else {
+        modelToGroup = d->source;
+    }
+
     //delete any previous proxy
     if (d->proxy) {
         d->proxy.data()->deleteLater();
@@ -94,20 +137,16 @@ void KTp::ContactsModel::updateGroupProxyModels()
 
     switch (d->groupMode) {
     case NoGrouping:
-        setSourceModel(d->source);
+        setSourceModel(modelToGroup);
         break;
     case AccountGrouping:
-        d->proxy = new KTp::AccountsTreeProxyModel(d->source, d->accountManager);
+        d->proxy = new KTp::AccountsTreeProxyModel(modelToGroup, d->accountManager);
         setSourceModel(d->proxy.data());
         break;
     case GroupGrouping:
-        d->proxy = new KTp::GroupsTreeProxyModel(d->source);
+        d->proxy = new KTp::GroupsTreeProxyModel(modelToGroup);
         setSourceModel(d->proxy.data());
         break;
     }
 }
 
-KTp::ContactsModel::GroupMode KTp::ContactsModel::groupMode() const
-{
-    return d->groupMode;
-}
diff --git a/KTp/Models/contacts-model.h b/KTp/Models/contacts-model.h
index 7e91e15..f1f0211 100644
--- a/KTp/Models/contacts-model.h
+++ b/KTp/Models/contacts-model.h
@@ -36,6 +36,8 @@ class KTP_EXPORT ContactsModel : public KTp::ContactsFilterModel
 {
     Q_OBJECT
     Q_PROPERTY(GroupMode groupMode READ groupMode WRITE setGroupMode NOTIFY groupModeChanged)
+    Q_PROPERTY(bool trackUnreadMessages READ trackUnreadMessages WRITE setTrackUnreadMessages NOTIFY trackUnreadMessagesChanged)
+
     Q_PROPERTY(Tp::AccountManagerPtr accountManager READ accountManager WRITE setAccountManager)
 
     Q_ENUMS(GroupMode)
@@ -66,8 +68,16 @@ public:
     /** The currently specified grouping model*/
     GroupMode groupMode() const;
 
+    /** Specify whether to track unread messages or not. Note this adds additional overhead, so only use it if you're going to show the information
+      * Default is False
+    */
+    void setTrackUnreadMessages(bool trackUnread);
+    bool trackUnreadMessages();
+
+
 Q_SIGNALS:
     void groupModeChanged();
+    void trackUnreadMessagesChanged();
 
 private:
     class Private;

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list