LocatorFiltersFilter: Reimplement matchers()

Change-Id: I59d7f005e9e044b0375cb94254392f23a330f3f0
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Jarek Kobus
2023-04-12 20:55:18 +02:00
parent 0ec89bc10f
commit 5a341e087f
2 changed files with 46 additions and 0 deletions

View File

@@ -12,6 +12,8 @@
Q_DECLARE_METATYPE(Core::ILocatorFilter*)
using namespace Utils;
namespace Core::Internal {
LocatorFiltersFilter::LocatorFiltersFilter():
@@ -25,6 +27,48 @@ LocatorFiltersFilter::LocatorFiltersFilter():
setConfigurable(false);
}
LocatorMatcherTasks LocatorFiltersFilter::matchers()
{
using namespace Tasking;
TreeStorage<LocatorStorage> storage;
const auto onSetup = [=] {
if (!storage->input().isEmpty())
return true;
QMap<QString, ILocatorFilter *> uniqueFilters;
const QList<ILocatorFilter *> allFilters = Locator::filters();
for (ILocatorFilter *filter : allFilters) {
const QString filterId = filter->shortcutString() + ',' + filter->displayName();
uniqueFilters.insert(filterId, filter);
}
LocatorFilterEntries entries;
for (ILocatorFilter *filter : std::as_const(uniqueFilters)) {
const QString shortcutString = filter->shortcutString();
if (!shortcutString.isEmpty() && !filter->isHidden() && filter->isEnabled()) {
LocatorFilterEntry entry;
entry.displayName = shortcutString;
entry.acceptor = [shortcutString] {
return AcceptResult{shortcutString + ' ', int(shortcutString.size() + 1)};
};
entry.displayIcon = m_icon;
entry.extraInfo = filter->displayName();
entry.toolTip = filter->description();
QString keyboardShortcut;
if (auto command = ActionManager::command(filter->actionId()))
keyboardShortcut = command->keySequence().toString(QKeySequence::NativeText);
entry.displayExtra = keyboardShortcut;
entries.append(entry);
}
}
storage->reportOutput(entries);
return true;
};
return {{Sync(onSetup), storage}};
}
void LocatorFiltersFilter::prepareSearch(const QString &entry)
{
m_filterShortcutStrings.clear();

View File

@@ -28,6 +28,8 @@ public:
QList<LocatorFilterEntry> matchesFor(QFutureInterface<LocatorFilterEntry> &future,
const QString &entry) override;
private:
LocatorMatcherTasks matchers() final;
QStringList m_filterShortcutStrings;
QStringList m_filterDisplayNames;
QStringList m_filterDescriptions;