From e2857def8e67c3a95656f9d4737beba93a38c53a Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sat, 18 Apr 2015 10:26:47 +0200 Subject: Moved generic part of load to GenericFacade --- dummyresource/facade.cpp | 42 +----------------------------------------- dummyresource/facade.h | 1 - 2 files changed, 1 insertion(+), 42 deletions(-) (limited to 'dummyresource') diff --git a/dummyresource/facade.cpp b/dummyresource/facade.cpp index da2a27a..e50e4f3 100644 --- a/dummyresource/facade.cpp +++ b/dummyresource/facade.cpp @@ -147,49 +147,9 @@ void DummyResourceFacade::readValue(QSharedPointer storage, c }); } -Async::Job DummyResourceFacade::load(const Akonadi2::Query &query, const QSharedPointer > &resultProvider) -{ - auto runner = QSharedPointer::create(query); - QWeakPointer > weakResultProvider = resultProvider; - runner->setQuery([this, weakResultProvider, query] (qint64 oldRevision, qint64 newRevision) -> Async::Job { - return Async::start([this, weakResultProvider, query](Async::Future &future) { - auto resultProvider = weakResultProvider.toStrongRef(); - if (!resultProvider) { - Warning() << "Tried executing query after result provider is already gone"; - future.setError(0, QString()); - future.setFinished(); - return; - } - //TODO only emit changes and don't replace everything - resultProvider->clear(); - //rerun query - auto addCallback = std::bind(&Akonadi2::ResultProvider::add, resultProvider, std::placeholders::_1); - load(query, addCallback).then([resultProvider, &future](qint64 queriedRevision) { - //TODO set revision in result provider? - //TODO update all existing results with new revision - resultProvider->complete(); - future.setValue(queriedRevision); - future.setFinished(); - }).exec(); - }); - }); - - //In case of a live query we keep the runner for as long alive as the result provider exists - if (query.liveQuery) { - resultProvider->setQueryRunner(runner); - QObject::connect(mResourceAccess.data(), &Akonadi2::ResourceAccess::revisionChanged, runner.data(), &QueryRunner::revisionChanged); - } - - return Async::start([runner](Async::Future &future) { - runner->run().then([&future]() { - future.setFinished(); - }).exec(); - }); -} - Async::Job DummyResourceFacade::load(const Akonadi2::Query &query, const std::function &resultCallback) { - return synchronizeResource(query.syncOnDemand, query.processAll).then([=](Async::Future &future) { + return Async::start([=](Async::Future &future) { //Now that the sync is complete we can execute the query const auto preparedQuery = prepareQuery(query); diff --git a/dummyresource/facade.h b/dummyresource/facade.h index 3ddfe15..91ae351 100644 --- a/dummyresource/facade.h +++ b/dummyresource/facade.h @@ -38,7 +38,6 @@ public: Async::Job modify(const Akonadi2::ApplicationDomain::Event &domainObject) Q_DECL_OVERRIDE; Async::Job remove(const Akonadi2::ApplicationDomain::Event &domainObject) Q_DECL_OVERRIDE; Async::Job load(const Akonadi2::Query &query, const std::function &resultCallback) Q_DECL_OVERRIDE; - Async::Job load(const Akonadi2::Query &query, const QSharedPointer > &resultProvider) Q_DECL_OVERRIDE; private: void readValue(QSharedPointer storage, const QByteArray &key, const std::function &resultCallback, std::function); -- cgit v1.2.3