[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