summaryrefslogtreecommitdiffstats
path: root/common/clientapi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/clientapi.cpp')
-rw-r--r--common/clientapi.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/common/clientapi.cpp b/common/clientapi.cpp
index 644d60c..46f7534 100644
--- a/common/clientapi.cpp
+++ b/common/clientapi.cpp
@@ -98,22 +98,24 @@ QSharedPointer<QAbstractItemModel> Store::loadModel(Query query)
98 resultProvider->initialResultSetComplete(typename DomainType::Ptr()); 98 resultProvider->initialResultSetComplete(typename DomainType::Ptr());
99 return model; 99 return model;
100 } 100 }
101 auto aggregatingEmitter = AggregatingResultEmitter<typename DomainType::Ptr>::Ptr::create();
102 model->setEmitter(aggregatingEmitter);
101 KAsync::iterate(resources) 103 KAsync::iterate(resources)
102 .template each<void, QByteArray>([query, model](const QByteArray &resource, KAsync::Future<void> &future) { 104 .template each<void, QByteArray>([query, aggregatingEmitter](const QByteArray &resource, KAsync::Future<void> &future) {
103 auto facade = FacadeFactory::instance().getFacade<DomainType>(resourceName(resource), resource); 105 auto facade = FacadeFactory::instance().getFacade<DomainType>(resourceName(resource), resource);
104 if (facade) { 106 if (facade) {
105 Trace() << "Trying to fetch from resource"; 107 Trace() << "Trying to fetch from resource " << resource;
106 auto result = facade->load(query); 108 auto result = facade->load(query);
107 auto emitter = result.second; 109 aggregatingEmitter->addEmitter(result.second);
108 //TODO use aggregating emitter instead
109 model->setEmitter(emitter);
110 model->fetchMore(QModelIndex());
111 result.first.template then<void>([&future](){future.setFinished();}).exec(); 110 result.first.template then<void>([&future](){future.setFinished();}).exec();
112 } else { 111 } else {
112 Trace() << "Couldn' find a facade for " << resource;
113 //Ignore the error and carry on 113 //Ignore the error and carry on
114 future.setFinished(); 114 future.setFinished();
115 } 115 }
116 }).exec(); 116 }).exec();
117 //TODO if the aggregatingEmitter is still empty we're done
118 model->fetchMore(QModelIndex());
117 119
118 return model; 120 return model;
119} 121}