From c4a6746e4420b580fe35cc89783de4dbc3205ac6 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 19 Nov 2015 18:14:09 +0100 Subject: The parent is always an object, so we might as well make that explicit --- common/facade.h | 13 +++++++++---- common/modelresult.h | 17 ++++------------- common/resultprovider.h | 8 ++++---- 3 files changed, 17 insertions(+), 21 deletions(-) (limited to 'common') diff --git a/common/facade.h b/common/facade.h index d150d60..8b8a2a8 100644 --- a/common/facade.h +++ b/common/facade.h @@ -172,7 +172,7 @@ public: KAsync::Job load(const Akonadi2::Query &query, Akonadi2::ResultProviderInterface &resultProvider) Q_DECL_OVERRIDE { //We delegate loading of initial data to the result provider, os it can decide for itself what it needs to load. - resultProvider.setFetcher([this, query, &resultProvider](const QByteArray &parent) { + resultProvider.setFetcher([this, query, &resultProvider](const typename DomainType::Ptr &parent) { const qint64 newRevision = executeInitialQuery(query, parent, resultProvider); mResourceAccess->sendRevisionReplayedCommand(newRevision); }); @@ -358,11 +358,16 @@ private: }, resultProvider); } - qint64 executeInitialQuery(const Akonadi2::Query &query, const QByteArray &parent, Akonadi2::ResultProviderInterface &resultProvider) + qint64 executeInitialQuery(const Akonadi2::Query &query, const typename DomainType::Ptr &parent, Akonadi2::ResultProviderInterface &resultProvider) { - Trace() << "Running initial query for parent:" << parent; auto modifiedQuery = query; - modifiedQuery.propertyFilter.insert("parent", parent); + if (parent) { + Trace() << "Running initial query for parent:" << parent->identifier(); + modifiedQuery.propertyFilter.insert("parent", parent->identifier()); + } else { + Trace() << "Running initial query for toplevel"; + modifiedQuery.propertyFilter.insert("parent", QVariant()); + } return load(modifiedQuery, [&](Akonadi2::Storage::Transaction &transaction, QSet &remainingFilters) -> ResultSet { return loadInitialResultSet(modifiedQuery, transaction, remainingFilters); }, resultProvider); diff --git a/common/modelresult.h b/common/modelresult.h index 1675e60..26f96d8 100644 --- a/common/modelresult.h +++ b/common/modelresult.h @@ -179,20 +179,11 @@ public: { const auto id = getIdentifier(parent); mEntityChildrenFetched[id] = true; - QByteArray parentIdentifier; - if (!parent.isValid()) { - qDebug() << "no parent"; - } else { - qDebug() << "parent is valid"; - auto object = parent.data(DomainObjectRole).template value(); - Q_ASSERT(object); - parentIdentifier = object->identifier(); - } - Trace() << "Loading child entities of: " << parentIdentifier; - loadEntities(parentIdentifier); + Trace() << "Loading child entities"; + loadEntities(parent.data(DomainObjectRole).template value()); } - void setFetcher(const std::function &fetcher) + void setFetcher(const std::function &fetcher) { Trace() << "Setting fetcher"; loadEntities = fetcher; @@ -206,6 +197,6 @@ private: QMap mEntityChildrenFetched; QList mPropertyColumns; Akonadi2::Query mQuery; - std::function loadEntities; + std::function loadEntities; }; diff --git a/common/resultprovider.h b/common/resultprovider.h index 0d23127..921cd6b 100644 --- a/common/resultprovider.h +++ b/common/resultprovider.h @@ -53,7 +53,7 @@ public: virtual void initialResultSetComplete() = 0; virtual void complete() = 0; virtual void clear() = 0; - virtual void setFetcher(const std::function &fetcher) + virtual void setFetcher(const std::function &fetcher) { } @@ -141,7 +141,7 @@ public: return true; } - void setFetcher(const std::function &fetcher) + void setFetcher(const std::function &fetcher) { if (auto model = mModel.toStrongRef()) { model->setFetcher(fetcher); @@ -297,9 +297,9 @@ public: return mResultEmitter.toStrongRef().isNull(); } - void setFetcher(const std::function &fetcher) + void setFetcher(const std::function &fetcher) { - fetcher(QByteArray()); + fetcher(T()); } private: -- cgit v1.2.3