[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:38 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=1f6c240
The following commit has been merged in the master branch:
commit 1f6c24077575af342ce085db0b376cf7432aa700
Author: David Edmundson <kde at davidedmundson.co.uk>
Date: Mon Sep 23 02:54:24 2013 +0100
Remove contacts from Nepomuk when removed from Tp.
Also fix adding contacts at runtime
REVIEW:112886
BUG: 325065
---
kpeople/nepomuk-feeder/abstract-storage.h | 9 +++++++++
kpeople/nepomuk-feeder/account.cpp | 14 ++++++++++++--
kpeople/nepomuk-feeder/account.h | 2 ++
kpeople/nepomuk-feeder/controller.cpp | 2 ++
kpeople/nepomuk-feeder/nepomuk-storage.cpp | 13 ++++++++++++-
kpeople/nepomuk-feeder/nepomuk-storage.h | 1 +
6 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/kpeople/nepomuk-feeder/abstract-storage.h b/kpeople/nepomuk-feeder/abstract-storage.h
index 5b93df2..952b4e0 100644
--- a/kpeople/nepomuk-feeder/abstract-storage.h
+++ b/kpeople/nepomuk-feeder/abstract-storage.h
@@ -105,6 +105,15 @@ public Q_SLOTS:
virtual void createContact(const QString &path, const Tp::ContactPtr &contact) = 0;
/**
+ * Invoked when a Telepathy Contact is removed.
+ *
+ * \param path the object path (unique identifier) of the account
+ * \param id the id (e.g. me at example.com) that in conjunction with the \p path uniquely identifies the contact.
+ */
+ virtual void removeContact(const QString &path, const Tp::ContactPtr &contact) = 0;
+
+
+ /**
* Invoked to update the alias of the Telepathy Contact.
*
* \param path the object path (unique identifier) of the account
diff --git a/kpeople/nepomuk-feeder/account.cpp b/kpeople/nepomuk-feeder/account.cpp
index e5ee06f..161ea40 100644
--- a/kpeople/nepomuk-feeder/account.cpp
+++ b/kpeople/nepomuk-feeder/account.cpp
@@ -97,6 +97,9 @@ void Account::onConnectionChanged(const Tp::ConnectionPtr &connection)
connect(m_connection->contactManager().data(),
SIGNAL(stateChanged(Tp::ContactListState)),
SLOT(onContactManagerStateChanged(Tp::ContactListState)));
+ connect(m_connection->contactManager().data(),
+ SIGNAL(allKnownContactsChanged(Tp::Contacts,Tp::Contacts,Tp::Channel::GroupMemberChangeDetails)),
+ SLOT(onAllKnownContactsChanged(Tp::Contacts,Tp::Contacts)));
// Simulate a state change signal in case it is already ready.
onContactManagerStateChanged(m_connection->contactManager()->state());
@@ -139,8 +142,9 @@ void Account::onAllKnownContactsChanged(const Tp::Contacts &added, const Tp::Con
}
}
- // If contacts are removed, we don't actually need to do anything!
- Q_UNUSED(removed);
+ Q_FOREACH (const Tp::ContactPtr &contact, removed) {
+ onContactRemoved(contact);
+ }
}
void Account::onAccountRemoved()
@@ -177,6 +181,12 @@ void Account::onNewContact(const Tp::ContactPtr &contact)
}
}
+void Account::onContactRemoved(const Tp::ContactPtr& contact)
+{
+ m_contacts.removeAll(contact);
+ Q_EMIT contactRemoved(m_account->objectPath(), contact);
+}
+
void Account::onContactAddedToGroup()
{
const Tp::ContactPtr contact(qobject_cast<Tp::Contact*>(sender()));
diff --git a/kpeople/nepomuk-feeder/account.h b/kpeople/nepomuk-feeder/account.h
index 8389d0f..4ab64ab 100644
--- a/kpeople/nepomuk-feeder/account.h
+++ b/kpeople/nepomuk-feeder/account.h
@@ -55,6 +55,7 @@ Q_SIGNALS:
void accountRemoved(const QString &path);
void contactCreated(const QString &path, const Tp::ContactPtr &contact);
+ void contactRemoved(const QString &path, const Tp::ContactPtr &contact);
void contactAliasChanged(const QString &path, const QString &id, const QString &alias);
void contactGroupsChanged(const QString &path, const QString &id, const QStringList &groups);
void contactAvatarChanged(const QString &path, const QString &id, const Tp::AvatarData &avatar);
@@ -65,6 +66,7 @@ private Q_SLOTS:
void onNicknameChanged(const QString &nickname);
void onAllKnownContactsChanged(const Tp::Contacts &added, const Tp::Contacts &removed);
void onNewContact(const Tp::ContactPtr &contact);
+ void onContactRemoved(const Tp::ContactPtr &contact);
void onAccountRemoved();
void onContactAddedToGroup();
diff --git a/kpeople/nepomuk-feeder/controller.cpp b/kpeople/nepomuk-feeder/controller.cpp
index 4270313..fa37b7e 100644
--- a/kpeople/nepomuk-feeder/controller.cpp
+++ b/kpeople/nepomuk-feeder/controller.cpp
@@ -145,6 +145,8 @@ void Controller::onNewAccount(const Tp::AccountPtr &account)
// Connect to all the signals/slots that signify the contacts are changing in some way.
connect(acc, SIGNAL(contactCreated(QString,Tp::ContactPtr)),
m_storage, SLOT(createContact(QString,Tp::ContactPtr)));
+ connect(acc, SIGNAL(contactRemoved(QString,Tp::ContactPtr)),
+ m_storage, SLOT(removeContact(QString, Tp::ContactPtr)));
connect(acc, SIGNAL(contactAliasChanged(QString,QString,QString)),
m_storage, SLOT(setContactAlias(QString,QString,QString)));
connect(acc, SIGNAL(contactGroupsChanged(QString,QString,QStringList)),
diff --git a/kpeople/nepomuk-feeder/nepomuk-storage.cpp b/kpeople/nepomuk-feeder/nepomuk-storage.cpp
index 47a7ea8..8e54a44 100644
--- a/kpeople/nepomuk-feeder/nepomuk-storage.cpp
+++ b/kpeople/nepomuk-feeder/nepomuk-storage.cpp
@@ -568,6 +568,17 @@ void NepomukStorage::onAccountRemoved(const QString &path)
this, SLOT(onContactGraphJob(KJob*)));
}
+void NepomukStorage::removeContact(const QString& path, const Tp::ContactPtr& contact)
+{
+ ContactIdentifier identifier(path, contact->id());
+ if (!m_contacts.contains(identifier)) {
+ return;
+ }
+ QUrl contactUri = m_contacts[identifier].personContact();
+ Nepomuk2::removeResources(QList<QUrl>() << contactUri);
+}
+
+
void NepomukStorage::createContact(const QString &path, const Tp::ContactPtr &contact)
{
if (contact.isNull()) {
@@ -605,7 +616,7 @@ void NepomukStorage::createContact(const QString &path, const Tp::ContactPtr &co
newImAccount.addProperty(NCO::isAccessedBy(), accountUri);
newPersonContact.setProperty(NCO::contactUID(), path + QLatin1Char('_') + contact->id());
-
+
newPersonContact.addProperty(NCO::hasIMAccount(), newImAccount);
updateAlias(newPersonContact, newImAccount, contact->alias());
updateContactGroups(newPersonContact, contact->groups());
diff --git a/kpeople/nepomuk-feeder/nepomuk-storage.h b/kpeople/nepomuk-feeder/nepomuk-storage.h
index 237b19d..3b712da 100644
--- a/kpeople/nepomuk-feeder/nepomuk-storage.h
+++ b/kpeople/nepomuk-feeder/nepomuk-storage.h
@@ -126,6 +126,7 @@ public Q_SLOTS:
virtual void cleanupAccountContacts(const QString &path, const Tp::Contacts &contacts);
virtual void onAccountRemoved(const QString &path);
+ virtual void removeContact(const QString &path, const Tp::ContactPtr &contact);
virtual void createContact(const QString &path, const Tp::ContactPtr &contact);
virtual void setContactAlias(const QString &path, const QString &id, const QString &alias);
virtual void setContactGroups(const QString &path, const QString &id, const QStringList &groups);
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list