[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