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


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

The following commit has been merged in the master branch:
commit 0ef7ba3fec76890d73ee46e3a08df17e87030f94
Author: Martin Klapetek <martin.klapetek at gmail.com>
Date:   Thu Feb 7 13:14:39 2013 +0100

    Remove account and its contacts from Nepomuk when the account is removed from Tp
    
    REVIEW: 108820
    BUG: 246219
---
 kpeople/nepomuk-feeder/abstract-storage.h  |  7 +++++++
 kpeople/nepomuk-feeder/account.cpp         | 14 ++++++++++++++
 kpeople/nepomuk-feeder/account.h           |  2 ++
 kpeople/nepomuk-feeder/controller.cpp      |  2 ++
 kpeople/nepomuk-feeder/nepomuk-storage.cpp | 24 ++++++++++++++++++++++++
 kpeople/nepomuk-feeder/nepomuk-storage.h   |  1 +
 6 files changed, 50 insertions(+)

diff --git a/kpeople/nepomuk-feeder/abstract-storage.h b/kpeople/nepomuk-feeder/abstract-storage.h
index 9218554..0614336 100644
--- a/kpeople/nepomuk-feeder/abstract-storage.h
+++ b/kpeople/nepomuk-feeder/abstract-storage.h
@@ -88,6 +88,13 @@ public Q_SLOTS:
      */
     virtual void cleanupAccountContacts(const QString &path, const QList<QString> &ids) = 0;
 
+    /**
+     * Invoked when the Tp account is removed from AccountManager
+     *
+     * \param path the object path of the account
+     */
+    virtual void onAccountRemoved(const QString &path) = 0;
+
 
     /**
      * Invoked when a Telepathy Contact is constructed.
diff --git a/kpeople/nepomuk-feeder/account.cpp b/kpeople/nepomuk-feeder/account.cpp
index 22531aa..7409d9e 100644
--- a/kpeople/nepomuk-feeder/account.cpp
+++ b/kpeople/nepomuk-feeder/account.cpp
@@ -51,6 +51,10 @@ void Account::init()
             SIGNAL(connectionChanged(Tp::ConnectionPtr)),
             SLOT(onConnectionChanged(Tp::ConnectionPtr)));
 
+    connect(m_account.data(),
+            SIGNAL(removed()),
+            SLOT(onAccountRemoved()));
+
     QString protocolName = m_account->serviceName().isEmpty() ? m_account->protocolName() : m_account->serviceName();
     // Emit a signal to notify the storage that a new account has been constructed
     // FIXME: Some IM Accounts don't have an ID as such, e.g. Link-Local-XMPP.
@@ -151,6 +155,16 @@ void Account::onAllKnownContactsChanged(const Tp::Contacts &added, const Tp::Con
     Q_UNUSED(removed);
 }
 
+void Account::onAccountRemoved()
+{
+    Tp::AccountPtr account(qobject_cast<Tp::Account*>(sender()));
+    Q_ASSERT(account);
+
+    kDebug() << "Account being removed";
+
+    emit accountRemoved(account->objectPath());
+}
+
 void Account::onNewContact(const Tp::ContactPtr &contact)
 {
     // Only create a new contact if one doesn't already exist.
diff --git a/kpeople/nepomuk-feeder/account.h b/kpeople/nepomuk-feeder/account.h
index 42d7a9b..2b40da5 100644
--- a/kpeople/nepomuk-feeder/account.h
+++ b/kpeople/nepomuk-feeder/account.h
@@ -52,6 +52,7 @@ Q_SIGNALS:
     void accountDestroyed(const QString &path);
     void nicknameChanged(const QString &path, const QString &nickname);
     void initialContactsLoaded(const QString &path, const QList<QString> &ids);
+    void accountRemoved(const QString &path);
 
     void contactCreated(const QString &path, const QString &id);
     void contactAliasChanged(const QString &path, const QString &id, const QString &alias);
@@ -64,6 +65,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 onAccountRemoved();
 
     void onContactAddedToGroup(const QString &group);
     void onContactRemovedFromGroup(const QString &group);
diff --git a/kpeople/nepomuk-feeder/controller.cpp b/kpeople/nepomuk-feeder/controller.cpp
index 449a1c4..c1cec56 100644
--- a/kpeople/nepomuk-feeder/controller.cpp
+++ b/kpeople/nepomuk-feeder/controller.cpp
@@ -138,6 +138,8 @@ void Controller::onNewAccount(const Tp::AccountPtr &account)
             m_storage, SLOT(setAccountNickname(QString,QString)));
     connect(acc, SIGNAL(initialContactsLoaded(QString,QList<QString>)),
             m_storage, SLOT(cleanupAccountContacts(QString,QList<QString>)));
+    connect(acc, SIGNAL(accountRemoved(QString)),
+            m_storage, SLOT(onAccountRemoved(QString)));
 
     // Connect to all the signals/slots that signify the contacts are changing in some way.
     connect(acc, SIGNAL(contactCreated(QString,QString)),
diff --git a/kpeople/nepomuk-feeder/nepomuk-storage.cpp b/kpeople/nepomuk-feeder/nepomuk-storage.cpp
index a11471e..85e2c0d 100644
--- a/kpeople/nepomuk-feeder/nepomuk-storage.cpp
+++ b/kpeople/nepomuk-feeder/nepomuk-storage.cpp
@@ -535,6 +535,30 @@ void NepomukStorage::cleanupAccountContacts(const QString &path, const QList<QSt
     }
 }
 
+void NepomukStorage::onAccountRemoved(const QString &path)
+{
+    AccountResources accountRes = m_accounts.value(path);
+    QUrl accountUri = accountRes.account();
+
+    QList<QUrl> urisToDelete;
+    urisToDelete << accountUri;
+
+    QList<ContactIdentifier> keys = m_contacts.keys(); // Splitting it so that the keys do not need to be reconstructed each time
+
+    for (int i = 0; i < m_contacts.keys().size(); i++) {
+        ContactIdentifier ci = keys.at(i);
+        if (ci.accountId() == path) {
+            ContactResources cr = m_contacts.value(ci);
+            urisToDelete << cr.personContact();
+            urisToDelete << cr.imAccount();
+        }
+    }
+
+    KJob *removeJob = Nepomuk2::removeDataByApplication(urisToDelete);
+    connect(removeJob, SIGNAL(finished(KJob*)),
+            this, SLOT(onContactGraphJob(KJob*)));
+}
+
 void NepomukStorage::createContact(const QString &path, const QString &id)
 {
     // First, check that we don't already have a record for this contact.
diff --git a/kpeople/nepomuk-feeder/nepomuk-storage.h b/kpeople/nepomuk-feeder/nepomuk-storage.h
index 2aab888..3f981b7 100644
--- a/kpeople/nepomuk-feeder/nepomuk-storage.h
+++ b/kpeople/nepomuk-feeder/nepomuk-storage.h
@@ -124,6 +124,7 @@ public Q_SLOTS:
     virtual void createAccount(const QString &path, const QString &id, const QString &protocol);
     virtual void setAccountNickname(const QString &path, const QString &nickname);
     virtual void cleanupAccountContacts(const QString &path, const QList<QString> &ids);
+    virtual void onAccountRemoved(const QString &path);
 
     virtual void createContact(const QString &path, const QString &id);
     virtual void setContactAlias(const QString &path, const QString &id, const QString &alias);

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list