Branch 'feature/remoterelationsyc' - resources/kolab
Aaron Seigo
seigo at kolabsys.com
Tue Nov 11 12:33:57 CET 2014
resources/kolab/kolabresource.cpp | 9 ++++++++-
resources/kolab/kolabresource.h | 1 +
resources/kolab/kolabretrievetagstask.cpp | 13 ++++++-------
resources/kolab/kolabretrievetagstask.h | 8 +++++++-
resources/kolab/tests/testretrievetagstask.cpp | 2 +-
5 files changed, 23 insertions(+), 10 deletions(-)
New commits:
commit a5d3abff423c66b3a705592741779d6b0e910a06
Author: Aaron Seigo <aseigo at kde.org>
Date: Tue Nov 11 12:32:42 2014 +0100
split retrieval of tags and relations
diff --git a/resources/kolab/kolabresource.cpp b/resources/kolab/kolabresource.cpp
index 7c7576e..704d998 100644
--- a/resources/kolab/kolabresource.cpp
+++ b/resources/kolab/kolabresource.cpp
@@ -98,6 +98,7 @@ void KolabResource::retrieveCollections()
startTask(new KolabRetrieveCollectionsTask(createResourceState(TaskArguments()), this));
synchronizeTags();
+ synchronizeRelations();
}
void KolabResource::itemAdded(const Akonadi::Item& item, const Akonadi::Collection& collection)
@@ -197,7 +198,13 @@ void KolabResource::itemsTagsChanged(const Akonadi::Item::List &items, const QSe
void KolabResource::retrieveTags()
{
- KolabRetrieveTagTask *task = new KolabRetrieveTagTask(createResourceState(TaskArguments()), this);
+ KolabRetrieveTagTask *task = new KolabRetrieveTagTask(createResourceState(TaskArguments()), KolabRetrieveTagTask::RetrieveTags, this);
+ startTask(task);
+}
+
+void KolabResource::retrieveRelations()
+{
+ KolabRetrieveTagTask *task = new KolabRetrieveTagTask(createResourceState(TaskArguments()), KolabRetrieveTagTask::RetrieveRelations, this);
startTask(task);
}
diff --git a/resources/kolab/kolabresource.h b/resources/kolab/kolabresource.h
index 44fb725..72fea8f 100644
--- a/resources/kolab/kolabresource.h
+++ b/resources/kolab/kolabresource.h
@@ -66,6 +66,7 @@ protected:
private Q_SLOTS:
void retrieveTags();
+ void retrieveRelations();
};
#endif
diff --git a/resources/kolab/kolabretrievetagstask.cpp b/resources/kolab/kolabretrievetagstask.cpp
index 43e540d..1783867 100644
--- a/resources/kolab/kolabretrievetagstask.cpp
+++ b/resources/kolab/kolabretrievetagstask.cpp
@@ -25,9 +25,10 @@
#include <kimap/fetchjob.h>
#include <kolabobject.h>
-KolabRetrieveTagTask::KolabRetrieveTagTask(ResourceStateInterface::Ptr resource, QObject *parent)
+KolabRetrieveTagTask::KolabRetrieveTagTask(ResourceStateInterface::Ptr resource, RetrieveType type, QObject *parent)
: KolabRelationResourceTask(resource, parent)
, mSession(0)
+ , mRetrieveType(type)
{
}
@@ -102,9 +103,9 @@ void KolabRetrieveTagTask::onHeadersReceived(const QString &mailBox,
const Kolab::KolabObjectReader reader(msg);
switch (reader.getType()) {
case Kolab::RelationConfigurationObject:
- if (reader.isTag()) {
+ if (mRetrieveType == RetrieveTags && reader.isTag()) {
extractTag(reader, uids[number]);
- } else if (reader.isRelation()) {
+ } else if (mRetrieveType == RetrieveRelations && reader.isRelation()) {
extractRelation(reader, uids[number]);
}
break;
@@ -174,12 +175,10 @@ void KolabRetrieveTagTask::onHeadersFetchDone(KJob *job)
return;
}
- if (!mTags.isEmpty() || !mTagMembers.isEmpty()) {
+ if (mRetrieveType == RetrieveTags) {
kDebug() << "Fetched tags: " << mTags.size() << mTagMembers.keys().size();
resourceState()->tagsRetrieved(mTags, mTagMembers);
- }
-
- if (!mRelations.isEmpty()) {
+ } else if (mRetrieveType == RetrieveRelations) {
kDebug() << "Fetched relations:" << mRelations.size();
resourceState()->relationsRetrieved(mRelations);
}
diff --git a/resources/kolab/kolabretrievetagstask.h b/resources/kolab/kolabretrievetagstask.h
index 0dab163..8ea371f 100644
--- a/resources/kolab/kolabretrievetagstask.h
+++ b/resources/kolab/kolabretrievetagstask.h
@@ -32,7 +32,12 @@ class KolabRetrieveTagTask : public KolabRelationResourceTask
{
Q_OBJECT
public:
- explicit KolabRetrieveTagTask(ResourceStateInterface::Ptr resource, QObject *parent = 0);
+ enum RetrieveType {
+ RetrieveTags,
+ RetrieveRelations
+ };
+
+ explicit KolabRetrieveTagTask(ResourceStateInterface::Ptr resource, RetrieveType type, QObject *parent = 0);
protected:
virtual void startRelationTask(KIMAP::Session *session);
@@ -42,6 +47,7 @@ private:
Akonadi::Tag::List mTags;
QHash<QString, Akonadi::Item::List> mTagMembers;
Akonadi::Relation::List mRelations;
+ RetrieveType mRetrieveType;
private Q_SLOTS:
// void onItemsFetchDone(KJob *job);
diff --git a/resources/kolab/tests/testretrievetagstask.cpp b/resources/kolab/tests/testretrievetagstask.cpp
index 6ae2609..767c737 100644
--- a/resources/kolab/tests/testretrievetagstask.cpp
+++ b/resources/kolab/tests/testretrievetagstask.cpp
@@ -133,7 +133,7 @@ private slots:
DummyResourceState::Ptr state = DummyResourceState::Ptr(new DummyResourceState);
state->setServerCapabilities(QStringList() << "METADATA" << "ACL");
state->setUserName("Hans");
- KolabRetrieveTagTask *task = new KolabRetrieveTagTask(state);
+ KolabRetrieveTagTask *task = new KolabRetrieveTagTask(state, KolabRetrieveTagTask::RetrieveTags);
task->start(&pool);
More information about the commits
mailing list