ExternalToolsFilter: Use Acceptor for LocatorFilterEntry

Change-Id: I1d9073f9849be7ada05a9f12237db2a32a5c802b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Jarek Kobus
2023-04-11 22:42:25 +02:00
parent 64f946445c
commit 107d16fe34
2 changed files with 16 additions and 26 deletions

View File

@@ -4,6 +4,7 @@
#include "externaltoolsfilter.h"
#include "../coreconstants.h"
#include "../coreplugin.h"
#include "../coreplugintr.h"
#include "../externaltool.h"
#include "../externaltoolmanager.h"
@@ -30,26 +31,6 @@ QList<LocatorFilterEntry> ExternalToolsFilter::matchesFor(QFutureInterface<Locat
return m_results;
}
void ExternalToolsFilter::accept(const LocatorFilterEntry &selection,
QString *newText, int *selectionStart, int *selectionLength) const
{
Q_UNUSED(newText)
Q_UNUSED(selectionStart)
Q_UNUSED(selectionLength)
if (!selection.internalData.isValid()) {
ICore::showOptionsDialog(Constants::SETTINGS_ID_TOOLS);
return;
}
auto tool = selection.internalData.value<ExternalTool *>();
QTC_ASSERT(tool, return);
auto runner = new ExternalToolRunner(tool);
if (runner->hasError())
MessageManager::writeFlashing(runner->errorString());
}
void ExternalToolsFilter::prepareSearch(const QString &entry)
{
QList<LocatorFilterEntry> bestEntries;
@@ -66,8 +47,14 @@ void ExternalToolsFilter::prepareSearch(const QString &entry)
}
if (index >= 0) {
LocatorFilterEntry filterEntry(this, tool->displayName());
filterEntry.internalData = QVariant::fromValue(tool);
LocatorFilterEntry filterEntry;
filterEntry.displayName = tool->displayName();
filterEntry.acceptor = [tool] {
auto runner = new ExternalToolRunner(tool);
if (runner->hasError())
MessageManager::writeFlashing(runner->errorString());
return AcceptResult();
};
filterEntry.extraInfo = tool->description();
filterEntry.highlightInfo = LocatorFilterEntry::HighlightInfo(index, entry.length(), hDataType);
@@ -81,6 +68,12 @@ void ExternalToolsFilter::prepareSearch(const QString &entry)
}
LocatorFilterEntry configEntry(this, "Configure External Tool...");
configEntry.extraInfo = "Opens External Tool settings";
configEntry.acceptor = [] {
QMetaObject::invokeMethod(CorePlugin::instance(), [] {
ICore::showOptionsDialog(Constants::SETTINGS_ID_TOOLS);
}, Qt::QueuedConnection);
return AcceptResult();
};
m_results = {};
m_results << bestEntries << betterEntries << goodEntries << configEntry;
}

View File

@@ -14,12 +14,9 @@ class ExternalToolsFilter : public ILocatorFilter
public:
ExternalToolsFilter();
void prepareSearch(const QString &entry) override;
QList<LocatorFilterEntry> matchesFor(QFutureInterface<LocatorFilterEntry> &future,
const QString &entry) override;
void accept(const LocatorFilterEntry &selection,
QString *newText, int *selectionStart, int *selectionLength) const override;
void prepareSearch(const QString &entry) override;
private:
QList<LocatorFilterEntry> m_results;
};