void tst_QFutureWatcher::resultAt() { QFutureWatcher<int> futureWatcher; futureWatcher.setFuture((new IntTask())->start()); futureWatcher.waitForFinished(); QCOMPARE(futureWatcher.result(), 10); QCOMPARE(futureWatcher.resultAt(0), 10); }
void SymbolsFindFilter::addResults(int begin, int end) { QFutureWatcher<SearchResultItem> *watcher = static_cast<QFutureWatcher<SearchResultItem> *>(sender()); SearchResult *search = m_watchers.value(watcher); if (!search) { // search was removed from search history while the search is running watcher->cancel(); return; } QList<SearchResultItem> items; for (int i = begin; i < end; ++i) items << watcher->resultAt(i); search->addResults(items, SearchResult::AddSorted); }
void TagFetcher::fingerprintFound(int index) { QFutureWatcher<QString>* watcher = reinterpret_cast<QFutureWatcher<QString>*>(sender()); if (!watcher || index >= m_tracks.count()) { return; } const QString fingerprint = watcher->resultAt(index); const TrackPointer ptrack = m_tracks[index]; if (fingerprint.isEmpty()) { emit(resultAvailable(ptrack, QList<TrackPointer>())); return; } emit(fetchProgress(tr("Identifying track"))); // qDebug() << "start to look up the MBID"; m_AcoustidClient.start(index, fingerprint, ptrack->getDurationInt()); }
void TagFetcher::FingerprintFound(int index) { QFutureWatcher<QString>* watcher = reinterpret_cast<QFutureWatcher<QString>*>(sender()); if (!watcher || index >= songs_.count()) { return; } const QString fingerprint = watcher->resultAt(index); const Song& song = songs_[index]; if (fingerprint.isEmpty()) { emit ResultAvailable(song, SongList()); return; } emit Progress(song, tr("Identifying song")); acoustid_client_->Start(index, fingerprint, song.length_nanosec() / kNsecPerMsec); }
IAssistProposal *DocumentContentCompletionProcessor::perform(const AssistInterface *interface) { QScopedPointer<const AssistInterface> assistInterface(interface); if (running()) return nullptr; int pos = interface->position(); QChar chr; // Skip to the start of a name do { chr = interface->characterAt(--pos); } while (chr.isLetterOrNumber() || chr == '_'); ++pos; int length = interface->position() - pos; if (interface->reason() == IdleEditor) { QChar characterUnderCursor = interface->characterAt(interface->position()); if (characterUnderCursor.isLetterOrNumber() || length < 3) return nullptr; } const QString wordUnderCursor = interface->textAt(pos, length); const QString text = interface->textDocument()->toPlainText(); m_watcher.setFuture(Utils::runAsync(&createProposal, text, wordUnderCursor)); QObject::connect(&m_watcher, &QFutureWatcher<QStringList>::resultReadyAt, &m_watcher, [this, pos](int index){ const TextEditor::SnippetAssistCollector snippetCollector( m_snippetGroup, QIcon(":/texteditor/images/snippet.png")); QList<AssistProposalItemInterface *> items = snippetCollector.collect(); for (const QString &word : m_watcher.resultAt(index)) { auto item = new AssistProposalItem(); item->setText(word); items.append(item); } setAsyncProposalAvailable(new GenericProposal(pos, items)); }); return nullptr; }
void BaseFileFind::displayResult(int index) { QFutureWatcher<FileSearchResultList> *watcher = static_cast<QFutureWatcher<FileSearchResultList> *>(sender()); SearchResult *search = d->m_watchers.value(watcher); if (!search) { // search was removed from search history while the search is running watcher->cancel(); return; } FileSearchResultList results = watcher->resultAt(index); QList<SearchResultItem> items; foreach (const FileSearchResult &result, results) { SearchResultItem item; item.path = QStringList() << QDir::toNativeSeparators(result.fileName); item.lineNumber = result.lineNumber; item.text = result.matchingLine; item.textMarkLength = result.matchLength; item.textMarkPos = result.matchStart; item.useTextEditorFont = true; item.userData = result.regexpCapturedTexts; items << item; }