diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-04-27 10:56:50 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-04-27 10:56:50 +0200 |
commit | ed73e44d5ee7aaaeaa5130a08243909f2d45dcce (patch) | |
tree | d557d752bbd6244f83122ae5bdf151da89a1affe /common/facade.h | |
parent | 71fd88a5b5839b228c824e61028787be8e825dad (diff) | |
download | sink-ed73e44d5ee7aaaeaa5130a08243909f2d45dcce.tar.gz sink-ed73e44d5ee7aaaeaa5130a08243909f2d45dcce.zip |
Moved the non-generic code back to dummyresource.
The dummy resource could now implement incremental queries.
Diffstat (limited to 'common/facade.h')
-rw-r--r-- | common/facade.h | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/common/facade.h b/common/facade.h index b6ae4a6..541d1ce 100644 --- a/common/facade.h +++ b/common/facade.h | |||
@@ -148,7 +148,7 @@ public: | |||
148 | auto runner = QSharedPointer<QueryRunner>::create(query); | 148 | auto runner = QSharedPointer<QueryRunner>::create(query); |
149 | QWeakPointer<Akonadi2::ResultProvider<typename DomainType::Ptr> > weakResultProvider = resultProvider; | 149 | QWeakPointer<Akonadi2::ResultProvider<typename DomainType::Ptr> > weakResultProvider = resultProvider; |
150 | runner->setQuery([this, weakResultProvider, query] (qint64 oldRevision, qint64 newRevision) -> Async::Job<qint64> { | 150 | runner->setQuery([this, weakResultProvider, query] (qint64 oldRevision, qint64 newRevision) -> Async::Job<qint64> { |
151 | return Async::start<qint64>([this, weakResultProvider, query](Async::Future<qint64> &future) { | 151 | return Async::start<qint64>([this, weakResultProvider, query, oldRevision, newRevision](Async::Future<qint64> &future) { |
152 | auto resultProvider = weakResultProvider.toStrongRef(); | 152 | auto resultProvider = weakResultProvider.toStrongRef(); |
153 | if (!resultProvider) { | 153 | if (!resultProvider) { |
154 | Warning() << "Tried executing query after result provider is already gone"; | 154 | Warning() << "Tried executing query after result provider is already gone"; |
@@ -156,11 +156,7 @@ public: | |||
156 | future.setFinished(); | 156 | future.setFinished(); |
157 | return; | 157 | return; |
158 | } | 158 | } |
159 | //TODO only emit changes and don't replace everything | 159 | load(query, resultProvider, oldRevision, newRevision).template then<void, qint64>([&future](qint64 queriedRevision) { |
160 | resultProvider->clear(); | ||
161 | //rerun query | ||
162 | auto addCallback = std::bind(&Akonadi2::ResultProvider<typename DomainType::Ptr>::add, resultProvider, std::placeholders::_1); | ||
163 | load(query, addCallback).template then<void, qint64>([resultProvider, &future](qint64 queriedRevision) { | ||
164 | //TODO set revision in result provider? | 160 | //TODO set revision in result provider? |
165 | //TODO update all existing results with new revision | 161 | //TODO update all existing results with new revision |
166 | future.setValue(queriedRevision); | 162 | future.setValue(queriedRevision); |
@@ -214,7 +210,7 @@ protected: | |||
214 | return Async::null<void>(); | 210 | return Async::null<void>(); |
215 | } | 211 | } |
216 | 212 | ||
217 | virtual Async::Job<qint64> load(const Akonadi2::Query &query, const std::function<void(const typename DomainType::Ptr &)> &resultCallback) { return Async::null<qint64>(); }; | 213 | virtual Async::Job<qint64> load(const Akonadi2::Query &query, const QSharedPointer<Akonadi2::ResultProvider<Akonadi2::ApplicationDomain::Event::Ptr> > &resultProvider, qint64 oldRevision, qint64 newRevision) { return Async::null<qint64>(); }; |
218 | 214 | ||
219 | protected: | 215 | protected: |
220 | //TODO use one resource access instance per application => make static | 216 | //TODO use one resource access instance per application => make static |