Changeset View
Changeset View
Standalone View
Standalone View
src/akonadi/akonadilivequeryhelpers.cpp
Show All 33 Lines | |||||
34 | 34 | | |||
35 | LiveQueryHelpers::LiveQueryHelpers(const SerializerInterface::Ptr &serializer, | 35 | LiveQueryHelpers::LiveQueryHelpers(const SerializerInterface::Ptr &serializer, | ||
36 | const StorageInterface::Ptr &storage) | 36 | const StorageInterface::Ptr &storage) | ||
37 | : m_serializer(serializer), | 37 | : m_serializer(serializer), | ||
38 | m_storage(storage) | 38 | m_storage(storage) | ||
39 | { | 39 | { | ||
40 | } | 40 | } | ||
41 | 41 | | |||
42 | LiveQueryHelpers::CollectionFetchFunction LiveQueryHelpers::fetchAllCollections() const | 42 | LiveQueryHelpers::CollectionFetchFunction LiveQueryHelpers::fetchAllCollections(QObject *parent) const | ||
43 | { | 43 | { | ||
44 | auto storage = m_storage; | 44 | auto storage = m_storage; | ||
45 | return [storage] (const Domain::LiveQueryInput<Collection>::AddFunction &add) { | 45 | return [storage, parent] (const Domain::LiveQueryInput<Collection>::AddFunction &add) { | ||
46 | auto job = storage->fetchCollections(Collection::root(), StorageInterface::Recursive); | 46 | auto job = storage->fetchCollections(Collection::root(), StorageInterface::Recursive, parent); | ||
47 | Utils::JobHandler::install(job->kjob(), [job, add] { | 47 | Utils::JobHandler::install(job->kjob(), [job, add] { | ||
48 | if (job->kjob()->error()) | 48 | if (job->kjob()->error()) | ||
49 | return; | 49 | return; | ||
50 | 50 | | |||
51 | foreach (const auto &collection, job->collections()) | 51 | foreach (const auto &collection, job->collections()) | ||
52 | add(collection); | 52 | add(collection); | ||
53 | }); | 53 | }); | ||
54 | }; | 54 | }; | ||
55 | } | 55 | } | ||
56 | 56 | | |||
57 | LiveQueryHelpers::CollectionFetchFunction LiveQueryHelpers::fetchCollections(const Collection &root) const | 57 | LiveQueryHelpers::CollectionFetchFunction LiveQueryHelpers::fetchCollections(const Collection &root, QObject *parent) const | ||
58 | { | 58 | { | ||
59 | auto storage = m_storage; | 59 | auto storage = m_storage; | ||
60 | return [storage, root] (const Domain::LiveQueryInput<Collection>::AddFunction &add) { | 60 | return [storage, root, parent] (const Domain::LiveQueryInput<Collection>::AddFunction &add) { | ||
61 | auto job = storage->fetchCollections(root, StorageInterface::Recursive); | 61 | auto job = storage->fetchCollections(root, StorageInterface::Recursive, parent); | ||
62 | Utils::JobHandler::install(job->kjob(), [root, job, add] { | 62 | Utils::JobHandler::install(job->kjob(), [root, job, add] { | ||
63 | if (job->kjob()->error()) | 63 | if (job->kjob()->error()) | ||
64 | return; | 64 | return; | ||
65 | 65 | | |||
66 | auto directChildren = QHash<Collection::Id, Collection>(); | 66 | auto directChildren = QHash<Collection::Id, Collection>(); | ||
67 | foreach (const auto &collection, job->collections()) { | 67 | foreach (const auto &collection, job->collections()) { | ||
68 | auto directChild = collection; | 68 | auto directChild = collection; | ||
69 | while (directChild.parentCollection() != root) | 69 | while (directChild.parentCollection() != root) | ||
Show All 9 Lines | |||||
79 | } | 79 | } | ||
80 | 80 | | |||
81 | LiveQueryHelpers::ItemFetchFunction LiveQueryHelpers::fetchItems(QObject *parent) const | 81 | LiveQueryHelpers::ItemFetchFunction LiveQueryHelpers::fetchItems(QObject *parent) const | ||
82 | { | 82 | { | ||
83 | auto serializer = m_serializer; | 83 | auto serializer = m_serializer; | ||
84 | auto storage = m_storage; | 84 | auto storage = m_storage; | ||
85 | return [serializer, storage, parent] (const Domain::LiveQueryInput<Item>::AddFunction &add) { | 85 | return [serializer, storage, parent] (const Domain::LiveQueryInput<Item>::AddFunction &add) { | ||
86 | auto job = storage->fetchCollections(Akonadi::Collection::root(), | 86 | auto job = storage->fetchCollections(Akonadi::Collection::root(), | ||
87 | StorageInterface::Recursive); | 87 | StorageInterface::Recursive, | ||
88 | parent); | ||||
88 | Utils::JobHandler::install(job->kjob(), [serializer, storage, job, add, parent] { | 89 | Utils::JobHandler::install(job->kjob(), [serializer, storage, job, add, parent] { | ||
89 | if (job->kjob()->error() != KJob::NoError) | 90 | if (job->kjob()->error() != KJob::NoError) | ||
90 | return; | 91 | return; | ||
91 | 92 | | |||
92 | foreach (const auto &collection, job->collections()) { | 93 | foreach (const auto &collection, job->collections()) { | ||
93 | if (!serializer->isSelectedCollection(collection)) | 94 | if (!serializer->isSelectedCollection(collection)) | ||
94 | continue; | 95 | continue; | ||
95 | 96 | | |||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Line(s) | 167 | while (!parentUid.isEmpty()) { | |||
173 | } | 174 | } | ||
174 | add(*parent); | 175 | add(*parent); | ||
175 | parentUid = serializer->relatedUidFromItem(*parent); | 176 | parentUid = serializer->relatedUidFromItem(*parent); | ||
176 | } | 177 | } | ||
177 | }); | 178 | }); | ||
178 | }; | 179 | }; | ||
179 | } | 180 | } | ||
180 | 181 | | |||
181 | LiveQueryHelpers::CollectionFetchFunction LiveQueryHelpers::fetchItemCollection(const Item& item) const | 182 | LiveQueryHelpers::CollectionFetchFunction LiveQueryHelpers::fetchItemCollection(const Item& item, QObject *parent) const | ||
182 | { | 183 | { | ||
183 | auto storage = m_storage; | 184 | auto storage = m_storage; | ||
184 | return [storage, item] (const Domain::LiveQueryInput<Collection>::AddFunction &add) { | 185 | return [storage, item, parent] (const Domain::LiveQueryInput<Collection>::AddFunction &add) { | ||
185 | auto job = storage->fetchCollections(item.parentCollection(), StorageInterface::Base); | 186 | auto job = storage->fetchCollections(item.parentCollection(), StorageInterface::Base, parent); | ||
186 | Utils::JobHandler::install(job->kjob(), [storage, job, add] { | 187 | Utils::JobHandler::install(job->kjob(), [storage, job, add] { | ||
187 | if (job->kjob()->error() != KJob::NoError) | 188 | if (job->kjob()->error() != KJob::NoError) | ||
188 | return; | 189 | return; | ||
189 | auto collection = job->collections().at(0); | 190 | auto collection = job->collections().at(0); | ||
190 | add(collection); | 191 | add(collection); | ||
191 | }); | 192 | }); | ||
192 | }; | 193 | }; | ||
193 | } | 194 | } | ||
Show All 25 Lines |