[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