Abort expensive cancelled computations.

This commit is contained in:
Roberto Raggi
2010-09-07 11:41:48 +02:00
parent 5ea1efb55f
commit f7b555b785
22 changed files with 50 additions and 24 deletions

View File

@@ -70,7 +70,7 @@ ILocatorFilter::Priority HelpIndexFilter::priority() const
return Medium;
}
QList<FilterEntry> HelpIndexFilter::matchesFor(const QString &entry)
QList<FilterEntry> HelpIndexFilter::matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString &entry)
{
QStringList keywords;
if (entry.length() < 2)
@@ -79,8 +79,11 @@ QList<FilterEntry> HelpIndexFilter::matchesFor(const QString &entry)
keywords = Core::HelpManager::instance()->findKeywords(entry);
QList<FilterEntry> entries;
foreach (const QString &keyword, keywords)
foreach (const QString &keyword, keywords) {
if (future.isCanceled())
break;
entries.append(FilterEntry(this, keyword, QVariant(), m_icon));
}
return entries;
}

View File

@@ -49,7 +49,7 @@ public:
QString displayName() const;
QString id() const;
Priority priority() const;
QList<Locator::FilterEntry> matchesFor(const QString &entry);
QList<Locator::FilterEntry> matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString &entry);
void accept(Locator::FilterEntry selection) const;
void refresh(QFutureInterface<void> &future);

View File

@@ -100,10 +100,13 @@ Locator::ILocatorFilter::Priority RemoteHelpFilter::priority() const
return Medium;
}
QList<Locator::FilterEntry> RemoteHelpFilter::matchesFor(const QString &pattern)
QList<Locator::FilterEntry> RemoteHelpFilter::matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString &pattern)
{
QList<Locator::FilterEntry> entries;
foreach (const QString &url, m_remoteUrls) {
if (future.isCanceled())
break;
entries.append(Locator::FilterEntry(this, url.arg(pattern), QVariant(),
m_icon));
}

View File

@@ -50,7 +50,7 @@ public:
QString displayName() const;
QString id() const;
Priority priority() const;
QList<Locator::FilterEntry> matchesFor(const QString &entry);
QList<Locator::FilterEntry> matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString &entry);
void accept(Locator::FilterEntry selection) const;
void refresh(QFutureInterface<void> &future);
QByteArray saveState() const;