[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:20 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=5538924
The following commit has been merged in the master branch:
commit 5538924037ce60fc9c6acd80339bd0beb1f8eed2
Author: George Goldberg <george.goldberg at collabora.co.uk>
Date: Wed Jun 15 19:11:37 2011 +0100
Reinstate avatar support for remote contacts.
Reviewed-By: Daniele Domenichelli <daniele.domenichelli at gmail.com>
REVIEW: 101633
BUG: 270864
---
kpeople/nepomuk-feeder/abstract-storage.h | 1 +
kpeople/nepomuk-feeder/account.cpp | 8 ++
kpeople/nepomuk-feeder/account.h | 2 +
kpeople/nepomuk-feeder/contact.cpp | 17 ++++
kpeople/nepomuk-feeder/contact.h | 2 +
kpeople/nepomuk-feeder/controller.cpp | 2 +
kpeople/nepomuk-feeder/nepomuk-storage.cpp | 46 +++++++++
kpeople/nepomuk-feeder/nepomuk-storage.h | 1 +
kpeople/nepomuk-feeder/telepathy.trig | 10 +-
kpeople/nepomuk-feeder/tests/controller-test.h | 2 +
kpeople/nepomuk-feeder/tests/storage-test.cpp | 131 +++++++++++++++++++++++++
kpeople/nepomuk-feeder/tests/storage-test.h | 1 +
12 files changed, 221 insertions(+), 2 deletions(-)
diff --git a/kpeople/nepomuk-feeder/abstract-storage.h b/kpeople/nepomuk-feeder/abstract-storage.h
index 72aa703..24b47b5 100644
--- a/kpeople/nepomuk-feeder/abstract-storage.h
+++ b/kpeople/nepomuk-feeder/abstract-storage.h
@@ -57,6 +57,7 @@ public Q_SLOTS:
virtual void setContactPublishState(const QString &path, const QString &id, const Tp::Contact::PresenceState &state) = 0;
virtual void setContactSubscriptionState(const QString &path, const QString &id, const Tp::Contact::PresenceState &state) = 0;
virtual void setContactCapabilities(const QString &path, const QString &id, const Tp::ContactCapabilities &capabilities) = 0;
+ virtual void setContactAvatar(const QString &path, const QString &id, const Tp::AvatarData &avatar) = 0;
private:
Q_DISABLE_COPY(AbstractStorage);
diff --git a/kpeople/nepomuk-feeder/account.cpp b/kpeople/nepomuk-feeder/account.cpp
index 3aa197c..79d5ec6 100644
--- a/kpeople/nepomuk-feeder/account.cpp
+++ b/kpeople/nepomuk-feeder/account.cpp
@@ -185,6 +185,9 @@ void Account::onNewContact(const Tp::ContactPtr &contact)
connect(c,
SIGNAL(capabilitiesChanged(QString,Tp::ContactCapabilities)),
SLOT(onContactCapabilitiesChanged(QString,Tp::ContactCapabilities)));
+ connect(c,
+ SIGNAL(avatarChanged(QString,Tp::AvatarData)),
+ SLOT(onContactAvatarChanged(QString,Tp::AvatarData)));
c->init();
}
@@ -238,6 +241,11 @@ void Account::onContactCapabilitiesChanged(const QString &id, const Tp::ContactC
emit contactCapabilitiesChanged(m_account->objectPath(), id, capabilities);
}
+void Account::onContactAvatarChanged(const QString &id, const Tp::AvatarData &avatar)
+{
+ emit contactAvatarChanged(m_account->objectPath(), id, avatar);
+}
+
#include "account.moc"
diff --git a/kpeople/nepomuk-feeder/account.h b/kpeople/nepomuk-feeder/account.h
index f52e1d7..265fb86 100644
--- a/kpeople/nepomuk-feeder/account.h
+++ b/kpeople/nepomuk-feeder/account.h
@@ -64,6 +64,7 @@ Q_SIGNALS:
void contactPublishStateChanged(const QString &path, const QString &id, const Tp::Contact::PresenceState &state);
void contactSubscriptionStateChanged(const QString &path, const QString &id, const Tp::Contact::PresenceState &state);
void contactCapabilitiesChanged(const QString &path, const QString &id, const Tp::ContactCapabilities &capabilities);
+ void contactAvatarChanged(const QString &path, const QString &id, const Tp::AvatarData &avatar);
private Q_SLOTS:
void onConnectionStatusChanged(Tp::ConnectionStatus status);
@@ -81,6 +82,7 @@ private Q_SLOTS:
void onContactPublishStateChanged(const QString &id, const Tp::Contact::PresenceState &state);
void onContactSubscriptionStateChanged(const QString &id, const Tp::Contact::PresenceState &state);
void onContactCapabilitiesChanged(const QString &id, const Tp::ContactCapabilities &capabilities);
+ void onContactAvatarChanged(const QString &id, const Tp::AvatarData &avatar);
private:
Q_DISABLE_COPY(Account);
diff --git a/kpeople/nepomuk-feeder/contact.cpp b/kpeople/nepomuk-feeder/contact.cpp
index cb5dcfd..9b77c65 100644
--- a/kpeople/nepomuk-feeder/contact.cpp
+++ b/kpeople/nepomuk-feeder/contact.cpp
@@ -22,6 +22,7 @@
#include "contact.h"
#include <TelepathyQt4/Connection>
+#include <TelepathyQt4/Contact>
#include <TelepathyQt4/ContactCapabilities>
#include <TelepathyQt4/ContactManager>
@@ -69,6 +70,9 @@ void Contact::init()
connect(m_contact.data(),
SIGNAL(blockStatusChanged(bool)),
SLOT(onBlockStatusChanged(bool)));
+ connect(m_contact.data(),
+ SIGNAL(avatarDataChanged(Tp::AvatarData)),
+ SLOT(onAvatarDataChanged(Tp::AvatarData)));
// FIXME: Connect to any other signals of sync-worthy properties here.
// Emit a signal to notify the controller that a new contact has been created.
@@ -84,6 +88,14 @@ void Contact::init()
onSubscriptionStateChanged(m_contact->subscriptionState());
onPublishStateChanged(m_contact->publishState());
onBlockStatusChanged(m_contact->isBlocked());
+
+ // Become ready asynchronously with the avatar data, since this may take some time and we
+ // don't want to delay the rest of the contact's attributes being ready.
+ // Fire and forget because we can't do anything even if this fails.
+ Tp::Features f;
+ f << Tp::Contact::FeatureAvatarData
+ << Tp::Contact::FeatureAvatarToken;
+ m_contact->manager()->upgradeContacts(QList<Tp::ContactPtr>() << m_contact, f);
}
Contact::~Contact()
@@ -142,6 +154,11 @@ void Contact::onCapabilitiesChanged(const Tp::ContactCapabilities &capabilities)
emit capabilitiesChanged(m_contact->id(), capabilities);
}
+void Contact::onAvatarDataChanged(const Tp::AvatarData &avatar)
+{
+ emit avatarChanged(m_contact->id(), avatar);
+}
+
#include "contact.moc"
diff --git a/kpeople/nepomuk-feeder/contact.h b/kpeople/nepomuk-feeder/contact.h
index 54630c3..de1500d 100644
--- a/kpeople/nepomuk-feeder/contact.h
+++ b/kpeople/nepomuk-feeder/contact.h
@@ -52,6 +52,7 @@ Q_SIGNALS:
void publishStateChanged(const QString &id, const Tp::Contact::PresenceState &state);
void subscriptionStateChanged(const QString &id, const Tp::Contact::PresenceState &state);
void capabilitiesChanged(const QString &id, const Tp::ContactCapabilities &capabilities);
+ void avatarChanged(const QString &id, const Tp::AvatarData &avatar);
private Q_SLOTS:
void onAliasChanged(const QString &alias);
@@ -62,6 +63,7 @@ private Q_SLOTS:
void onPublishStateChanged(Tp::Contact::PresenceState state);
void onSubscriptionStateChanged(Tp::Contact::PresenceState state);
void onCapabilitiesChanged(const Tp::ContactCapabilities &capabilities);
+ void onAvatarDataChanged(const Tp::AvatarData &avatar);
private:
Q_DISABLE_COPY(Contact);
diff --git a/kpeople/nepomuk-feeder/controller.cpp b/kpeople/nepomuk-feeder/controller.cpp
index 9e0b2af..3ab1392 100644
--- a/kpeople/nepomuk-feeder/controller.cpp
+++ b/kpeople/nepomuk-feeder/controller.cpp
@@ -142,6 +142,8 @@ void Controller::onNewAccount(const Tp::AccountPtr &account)
m_storage, SLOT(setContactSubscriptionState(QString,QString,Tp::Contact::PresenceState)));
connect(acc, SIGNAL(contactCapabilitiesChanged(QString,QString,Tp::ContactCapabilities)),
m_storage, SLOT(setContactCapabilities(QString,QString,Tp::ContactCapabilities)));
+ connect(acc, SIGNAL(contactAvatarChanged(QString,QString,Tp::AvatarData)),
+ m_storage, SLOT(setContactAvatar(QString,QString,Tp::AvatarData)));
// Now the signal connections are done, initialise the account.
acc->init();
diff --git a/kpeople/nepomuk-feeder/nepomuk-storage.cpp b/kpeople/nepomuk-feeder/nepomuk-storage.cpp
index d1ec631..9278064 100644
--- a/kpeople/nepomuk-feeder/nepomuk-storage.cpp
+++ b/kpeople/nepomuk-feeder/nepomuk-storage.cpp
@@ -26,6 +26,8 @@
#include "ontologies/pimo.h"
#include "ontologies/telepathy.h"
#include "ontologies/imcapability.h"
+#include "ontologies/personcontact.h"
+#include "ontologies/dataobject.h"
#include <KDebug>
@@ -47,6 +49,7 @@
#include <QtCore/QSharedData>
#include <TelepathyQt4/Constants>
+#include <TelepathyQt4/AvatarData>
class ContactIdentifier::Data : public QSharedData {
public:
@@ -752,6 +755,49 @@ void NepomukStorage::setContactCapabilities(const QString &path,
imAccount.setIMCapabilitys(caps.toList());
}
+void NepomukStorage::setContactAvatar(const QString &path,
+ const QString &id,
+ const Tp::AvatarData &avatar)
+{
+ ContactIdentifier identifier(path, id);
+
+ // Check the Contact exists.
+ Q_ASSERT(m_contacts.contains(identifier));
+ if (!m_contacts.contains(identifier)) {
+ kWarning() << "Contact not found.";
+ return;
+ }
+
+ ContactResources resources = m_contacts.value(identifier);
+
+ Nepomuk::PersonContact personContact = resources.personContact();
+ Nepomuk::IMAccount imAccount = resources.imAccount();
+
+ // Get the resource uri of the avatar.
+ Nepomuk::DataObject avatarPhoto = imAccount.avatar();
+
+ // Get all the photos of the person contact
+ QList<Nepomuk::DataObject> photos = personContact.photos();
+
+ // Remove the one we are removing.
+ photos.removeAll(avatarPhoto);
+
+ // Update the photos
+ personContact.setPhotos(photos);
+
+ if (avatar.fileName.isEmpty()) {
+ kDebug() << "No avatar set.";
+ // Remove the avatar property
+ imAccount.removeProperty(Nepomuk::Vocabulary::Telepathy::avatar());
+
+ } else {
+ // Add the new avatar to Nepomuk, both as the avatar and as a photo.
+ Nepomuk::Resource newAvatarPhoto(avatar.fileName);
+ personContact.addPhoto(newAvatarPhoto);
+ imAccount.setAvatar(newAvatarPhoto);
+ }
+}
+
int qHash(ContactIdentifier c)
{
diff --git a/kpeople/nepomuk-feeder/nepomuk-storage.h b/kpeople/nepomuk-feeder/nepomuk-storage.h
index 8ffb779..8077c56 100644
--- a/kpeople/nepomuk-feeder/nepomuk-storage.h
+++ b/kpeople/nepomuk-feeder/nepomuk-storage.h
@@ -99,6 +99,7 @@ public Q_SLOTS:
virtual void setContactPublishState(const QString &path, const QString &id, const Tp::Contact::PresenceState &state);
virtual void setContactSubscriptionState(const QString &path, const QString &id, const Tp::Contact::PresenceState &state);
virtual void setContactCapabilities(const QString &path, const QString &id, const Tp::ContactCapabilities &capabilities);
+ virtual void setContactAvatar(const QString &path, const QString &id, const Tp::AvatarData &avatar);
private Q_SLOTS:
void onNepomukError(const QString &uri, int errorCode);
diff --git a/kpeople/nepomuk-feeder/telepathy.trig b/kpeople/nepomuk-feeder/telepathy.trig
index d5a07d2..8c331a0 100644
--- a/kpeople/nepomuk-feeder/telepathy.trig
+++ b/kpeople/nepomuk-feeder/telepathy.trig
@@ -4,6 +4,7 @@
@prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
@prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
@prefix nco: <http://www.semanticdesktop.org/ontologies/2007/03/22/nco#> .
+ at prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie/#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
telepathy: {telepathy:accountIdentifier
@@ -23,8 +24,13 @@ telepathy: {telepathy:accountIdentifier
rdfs:range xsd:integer ;
nrl:maxCardinality "1" .
-
-
+ telepathy:avatar
+ a rdf:Property ;
+ rdfs:comment "The photo which is the IM Account's avatar. This is a special case of the nco:photo property of the parent nco:personContact." ;
+ rdfs:domain nco:IMAccount ;
+ rdfs:label "avatar" ;
+ rdfs:range nie:DataObject ;
+ nrl:maxCardinality "1" .
}
<http://nepomuk.kde.org/ontologies/2009/06/20/telepathy/metadata>
diff --git a/kpeople/nepomuk-feeder/tests/controller-test.h b/kpeople/nepomuk-feeder/tests/controller-test.h
index d63a121..be2f3b9 100644
--- a/kpeople/nepomuk-feeder/tests/controller-test.h
+++ b/kpeople/nepomuk-feeder/tests/controller-test.h
@@ -100,6 +100,7 @@ public Q_SLOTS:
virtual void setContactPublishState(const QString &, const QString &, const Tp::Contact::PresenceState &) { }
virtual void setContactSubscriptionState(const QString &, const QString &, const Tp::Contact::PresenceState &) { }
virtual void setContactCapabilities(const QString &, const QString &, const Tp::ContactCapabilities &) { }
+ virtual void setContactAvatar(const QString &, const QString &, const Tp::AvatarData &) { }
private:
ControllerTest *m_test;
@@ -129,6 +130,7 @@ public Q_SLOTS:
virtual void setContactPublishState(const QString &, const QString &, const Tp::Contact::PresenceState &) { }
virtual void setContactSubscriptionState(const QString &, const QString &, const Tp::Contact::PresenceState &) { }
virtual void setContactCapabilities(const QString &, const QString &, const Tp::ContactCapabilities &) { }
+ virtual void setContactAvatar(const QString &, const QString &, const Tp::AvatarData &) { }
private:
ControllerTest *m_test;
diff --git a/kpeople/nepomuk-feeder/tests/storage-test.cpp b/kpeople/nepomuk-feeder/tests/storage-test.cpp
index 4a78582..ed3d35c 100644
--- a/kpeople/nepomuk-feeder/tests/storage-test.cpp
+++ b/kpeople/nepomuk-feeder/tests/storage-test.cpp
@@ -27,6 +27,7 @@
#include "ontologies/imcapability.h"
#include "ontologies/nco.h"
#include "ontologies/pimo.h"
+#include "ontologies/dataobject.h"
#include <KDebug>
@@ -36,6 +37,7 @@
#include <qtest_kde.h>
+#include <TelepathyQt4/AvatarData>
#include <TelepathyQt4/ContactCapabilities>
class FakeContactCapabilities : public Tp::ContactCapabilities {
@@ -1185,6 +1187,135 @@ void StorageTest::testSetContactCapabilities()
pC2.remove();
}
+void StorageTest::testSetAvatar()
+{
+ // Create the Storage.
+ m_storage = new NepomukStorage(this);
+ QVERIFY(m_storage);
+
+ QHash<QString, Nepomuk::IMAccount> *accounts = TestBackdoors::nepomukStorageAccounts(m_storage);
+ QHash<ContactIdentifier, ContactResources> *contacts = TestBackdoors::nepomukStorageContacts(m_storage);
+
+ // Create an account on the storage.
+ m_storage->createAccount(QLatin1String("/foo/bar/baz"),
+ QLatin1String("foo at bar.baz"),
+ QLatin1String("test"));
+
+ // Check the Account is created
+ QCOMPARE(TestBackdoors::nepomukStorageAccounts(m_storage)->size(), 1);
+ QCOMPARE(TestBackdoors::nepomukStorageContacts(m_storage)->size(), 0);
+
+ // And in Nepomuk...
+ Nepomuk::IMAccount imAcc1 = accounts->value(QLatin1String("/foo/bar/baz"));
+ QVERIFY(imAcc1.exists());
+ QCOMPARE(imAcc1.isAccessedByOf().size(), 0);
+
+ // Create a contact
+ m_storage->createContact(QLatin1String("/foo/bar/baz"),
+ QLatin1String("test at remote-contact.com"));
+
+ // Check the Contact is created.
+ QCOMPARE(TestBackdoors::nepomukStorageAccounts(m_storage)->size(), 1);
+ QCOMPARE(TestBackdoors::nepomukStorageContacts(m_storage)->size(), 1);
+
+ // Check its identifier is correct.
+ ContactIdentifier cId2(QLatin1String("/foo/bar/baz"), QLatin1String("test at remote-contact.com"));
+ QVERIFY(contacts->contains(cId2));
+
+ // Check the Nepomuk resources are created correctly.
+ ContactResources cRes2 = contacts->value(cId2);
+ Nepomuk::IMAccount imAcc2 = cRes2.imAccount();
+ Nepomuk::PersonContact pC2 = cRes2.personContact();
+ QVERIFY(imAcc2.exists());
+ QVERIFY(pC2.exists());
+
+ // Check that by default, there is no avatar, and there are no photos.
+ QCOMPARE(pC2.photos().size(), 0);
+ QVERIFY(!imAcc2.avatar().isValid());
+
+ // Set an avatar
+ Tp::AvatarData avatar1(QLatin1String("file:/home/foo/avatar1.png"), QString());
+ m_storage->setContactAvatar(QLatin1String("/foo/bar/baz"),
+ QLatin1String("test at remote-contact.com"),
+ avatar1);
+ QCOMPARE(pC2.photos().size(), 1);
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(avatar1.fileName))));
+ QCOMPARE(imAcc2.avatar(), Nepomuk::Resource(avatar1.fileName));
+
+ // Change the avatar
+ Tp::AvatarData avatar2(QLatin1String("file:/home/foo/avatar2.png"), QString());
+ m_storage->setContactAvatar(QLatin1String("/foo/bar/baz"),
+ QLatin1String("test at remote-contact.com"),
+ avatar2);
+ QCOMPARE(pC2.photos().size(), 1);
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(avatar2.fileName))));
+ QCOMPARE(imAcc2.avatar(), Nepomuk::Resource(avatar2.fileName));
+
+ // Remove the avatar
+ Tp::AvatarData avatar3(QLatin1String(""), QString());
+ m_storage->setContactAvatar(QLatin1String("/foo/bar/baz"),
+ QLatin1String("test at remote-contact.com"),
+ avatar3);
+ QCOMPARE(pC2.photos().size(), 0);
+ QVERIFY(!imAcc2.avatar().isValid());
+
+ // Add a couple of other photos to the PersonContact
+ Nepomuk::DataObject photo1(Nepomuk::Resource(QLatin1String("file:/home/foo/photo1.png")));
+ Nepomuk::DataObject photo2(Nepomuk::Resource(QLatin1String("file:/home/foo/photo2.png")));
+ Nepomuk::DataObject photo3(Nepomuk::Resource(QLatin1String("file:/home/foo/photo3.png")));
+ QList<Nepomuk::DataObject> photos;
+ photos << photo1 << photo2 << photo3;
+ pC2.setPhotos(photos);
+
+ QCOMPARE(pC2.photos().size(), 3);
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo1.png")))));
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo2.png")))));
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo3.png")))));
+
+ // Add an avatar which is NOT already a photo
+ Tp::AvatarData avatar4(QLatin1String("file:/home/foo/avatar4.png"), QString());
+ m_storage->setContactAvatar(QLatin1String("/foo/bar/baz"),
+ QLatin1String("test at remote-contact.com"),
+ avatar4);
+ QCOMPARE(pC2.photos().size(), 4);
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(avatar4.fileName))));
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo1.png")))));
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo2.png")))));
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo3.png")))));
+ QCOMPARE(imAcc2.avatar(), Nepomuk::Resource(avatar4.fileName));
+
+ // Remove the avatar
+ Tp::AvatarData avatar5(QLatin1String(""), QString());
+ m_storage->setContactAvatar(QLatin1String("/foo/bar/baz"),
+ QLatin1String("test at remote-contact.com"),
+ avatar5);
+ QCOMPARE(pC2.photos().size(), 3);
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo1.png")))));
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo2.png")))));
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo3.png")))));
+ QVERIFY(!imAcc2.avatar().isValid());
+
+ // Add an avatar which is already in the photos
+ Tp::AvatarData avatar6(QLatin1String("file:/home/foo/photo1.png"), QString());
+ m_storage->setContactAvatar(QLatin1String("/foo/bar/baz"),
+ QLatin1String("test at remote-contact.com"),
+ avatar6);
+ QCOMPARE(pC2.photos().size(), 3);
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo1.png")))));
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo2.png")))));
+ QVERIFY(pC2.photos().contains(Nepomuk::DataObject(Nepomuk::Resource(QLatin1String("file:/home/foo/photo3.png")))));
+ QCOMPARE(imAcc2.avatar(), Nepomuk::Resource(avatar6.fileName));
+
+ // FIXME: We shouldn't remove from the photos if the avatar was already in the photos when
+ // we added it, when removing the avatar. This should be fixed automatically when the port
+ // to the datamanagement service happens, so there's no point having a unit test for that ATM.
+
+ // Cleanup Nepomuk resources used in this test.
+ imAcc1.remove();
+ imAcc2.remove();
+ pC2.remove();
+}
+
void StorageTest::cleanup()
{
cleanupImpl();
diff --git a/kpeople/nepomuk-feeder/tests/storage-test.h b/kpeople/nepomuk-feeder/tests/storage-test.h
index 4a292de..31c94f1 100644
--- a/kpeople/nepomuk-feeder/tests/storage-test.h
+++ b/kpeople/nepomuk-feeder/tests/storage-test.h
@@ -54,6 +54,7 @@ private Q_SLOTS:
void testSetContactPublishState();
void testSetContactSubscriptionState();
void testSetContactCapabilities();
+ void testSetAvatar();
void cleanup();
void cleanupTestCase();
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list