diff options
Diffstat (limited to 'common/resourcefacade.cpp')
-rw-r--r-- | common/resourcefacade.cpp | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/common/resourcefacade.cpp b/common/resourcefacade.cpp index c702777..dee0711 100644 --- a/common/resourcefacade.cpp +++ b/common/resourcefacade.cpp | |||
@@ -351,7 +351,7 @@ QPair<KAsync::Job<void>, typename Sink::ResultEmitter<typename ApplicationDomain | |||
351 | const auto resources = Store::read<ApplicationDomain::SinkResource>(query); | 351 | const auto resources = Store::read<ApplicationDomain::SinkResource>(query); |
352 | SinkTraceCtx(ctx) << "Found resource belonging to the account " << account.identifier() << " : " << resources; | 352 | SinkTraceCtx(ctx) << "Found resource belonging to the account " << account.identifier() << " : " << resources; |
353 | auto accountIdentifier = account.identifier(); | 353 | auto accountIdentifier = account.identifier(); |
354 | ApplicationDomain::Status status = ApplicationDomain::ConnectedStatus; | 354 | QList<int> states; |
355 | for (const auto &resource : resources) { | 355 | for (const auto &resource : resources) { |
356 | auto resourceAccess = ResourceAccessFactory::instance().getAccess(resource.identifier(), ResourceConfig::getResourceType(resource.identifier())); | 356 | auto resourceAccess = ResourceAccessFactory::instance().getAccess(resource.identifier(), ResourceConfig::getResourceType(resource.identifier())); |
357 | if (!monitoredResources->contains(resource.identifier())) { | 357 | if (!monitoredResources->contains(resource.identifier())) { |
@@ -364,27 +364,20 @@ QPair<KAsync::Job<void>, typename Sink::ResultEmitter<typename ApplicationDomain | |||
364 | Q_ASSERT(ret); | 364 | Q_ASSERT(ret); |
365 | monitoredResources->insert(resource.identifier()); | 365 | monitoredResources->insert(resource.identifier()); |
366 | } | 366 | } |
367 | 367 | states << resourceAccess->getResourceStatus(); | |
368 | //Figure out overall status | ||
369 | auto s = resourceAccess->getResourceStatus(); | ||
370 | switch (s) { | ||
371 | case ApplicationDomain::ErrorStatus: | ||
372 | status = ApplicationDomain::ErrorStatus; | ||
373 | break; | ||
374 | case ApplicationDomain::OfflineStatus: | ||
375 | if (status == ApplicationDomain::ConnectedStatus) { | ||
376 | status = ApplicationDomain::OfflineStatus; | ||
377 | } | ||
378 | break; | ||
379 | case ApplicationDomain::ConnectedStatus: | ||
380 | break; | ||
381 | case ApplicationDomain::BusyStatus: | ||
382 | if (status != ApplicationDomain::ErrorStatus) { | ||
383 | status = ApplicationDomain::BusyStatus; | ||
384 | } | ||
385 | break; | ||
386 | } | ||
387 | } | 368 | } |
369 | const auto status = [&] { | ||
370 | if (states.contains(ApplicationDomain::ErrorStatus)) { | ||
371 | return ApplicationDomain::ErrorStatus; | ||
372 | } | ||
373 | if (states.contains(ApplicationDomain::BusyStatus)) { | ||
374 | return ApplicationDomain::BusyStatus; | ||
375 | } | ||
376 | if (states.contains(ApplicationDomain::ConnectedStatus)) { | ||
377 | return ApplicationDomain::ConnectedStatus; | ||
378 | } | ||
379 | return ApplicationDomain::OfflineStatus; | ||
380 | }(); | ||
388 | account.setStatusStatus(status); | 381 | account.setStatusStatus(status); |
389 | }); | 382 | }); |
390 | return qMakePair(KAsync::null<void>(), runner->emitter()); | 383 | return qMakePair(KAsync::null<void>(), runner->emitter()); |