forked from qt-creator/qt-creator
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:
@@ -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();
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user