void QGalleryTrackerResultSetPrivate::_q_parseFinished() { processSyncEvents(); if (parseWatcher.result()) { Q_ASSERT(rCache.offset == rCache.count); Q_ASSERT(iCache.cutoff == iCache.count); rCache.values.clear(); rCache.count = 0; flags &= ~Active; if (flags & Refresh) update(); else emit q_func()->progressChanged(progressMaximum, progressMaximum); q_func()->finish(flags & Live); } else if (flags & Canceled) { iCache.count = 0; flags &= ~Active; q_func()->QGalleryAbstractResponse::cancel(); } else { const int offset = queryOffset + iCache.count; const int limit = queryLimit < 1 || queryLimit - iCache.count > 1024 ? 1024 : queryLimit - iCache.count; QDBusPendingCall call = queryInterface->asyncCallWithArgumentList( queryMethod, QVariantList(queryArguments) << offset << limit); if (call.isFinished()) { queryFinished(call); } else { queryWatcher.reset(new QDBusPendingCallWatcher(call)); QObject::connect( queryWatcher.data(), SIGNAL(finished(QDBusPendingCallWatcher*)), q_func(), SLOT(_q_queryFinished(QDBusPendingCallWatcher*))); progressMaximum += 2; emit q_func()->progressChanged(progressMaximum - 2, progressMaximum); } } }
bool QGalleryTrackerResultSetPrivate::waitForSyncFinish(int msecs) { QTime timer; timer.start(); do { processSyncEvents(); if (flags & SyncFinished) { return true; } if (!syncEvents.waitForEvent(msecs)) return false; } while ((msecs -= timer.restart()) > 0); return false; }
void QGalleryTrackerResultSetPrivate::_q_parseFinished() { processSyncEvents(); Q_ASSERT(rCache.offset == rCache.count); Q_ASSERT(iCache.cutoff == iCache.count); rCache.values.clear(); rCache.count = 0; flags &= ~Active; if (flags & Refresh) update(); else emit q_func()->progressChanged(progressMaximum, progressMaximum); if (queryError != QDocumentGallery::NoError) { q_func()->finish(flags & Live); } else { q_func()->error(queryError, queryErrorString); queryError = QDocumentGallery::NoError; } }