RunConfigurationFilter: Remove the old matchesFor() implementation

Since the base class vanished, rename the filters so that they have
the common prefix now.

Change-Id: I21c8d1f3ea3c3ad22063d7db8be72e66d449e701
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
Jarek Kobus
2023-04-24 22:45:42 +02:00
parent ef0cc8a1d9
commit bc11440256

View File

@@ -408,40 +408,19 @@ protected:
void restoreState(const QJsonObject &object) override; void restoreState(const QJsonObject &object) override;
}; };
// TODO: Remove the base class class RunConfigurationStartFilter final : public ILocatorFilter
class RunConfigurationLocatorFilter : public ILocatorFilter
{ {
public: public:
RunConfigurationLocatorFilter(); RunConfigurationStartFilter();
void prepareSearch(const QString &entry) override;
QList<LocatorFilterEntry> matchesFor(QFutureInterface<LocatorFilterEntry> &future,
const QString &entry) override;
using RunAcceptor = std::function<void(RunConfiguration *)>;
protected:
void setRunAcceptor(const RunAcceptor &acceptor) { m_acceptor = acceptor; }
private:
void targetListUpdated();
QList<LocatorFilterEntry> m_result;
RunAcceptor m_acceptor;
};
// TODO: Don't derive, flatten the hierarchy
class RunRunConfigurationLocatorFilter final : public RunConfigurationLocatorFilter
{
public:
RunRunConfigurationLocatorFilter();
private: private:
Core::LocatorMatcherTasks matchers() final; Core::LocatorMatcherTasks matchers() final;
}; };
// TODO: Don't derive, flatten the hierarchy class RunConfigurationSwitchFilter final : public ILocatorFilter
class SwitchToRunConfigurationLocatorFilter final : public RunConfigurationLocatorFilter
{ {
public: public:
SwitchToRunConfigurationLocatorFilter(); RunConfigurationSwitchFilter();
private: private:
Core::LocatorMatcherTasks matchers() final; Core::LocatorMatcherTasks matchers() final;
@@ -682,8 +661,8 @@ public:
AllProjectsFilter m_allProjectsFilter; AllProjectsFilter m_allProjectsFilter;
CurrentProjectFilter m_currentProjectFilter; CurrentProjectFilter m_currentProjectFilter;
AllProjectFilesFilter m_allProjectDirectoriesFilter; AllProjectFilesFilter m_allProjectDirectoriesFilter;
RunRunConfigurationLocatorFilter m_runConfigurationLocatorFilter; RunConfigurationStartFilter m_runConfigurationStartFilter;
SwitchToRunConfigurationLocatorFilter m_switchRunConfigurationLocatorFilter; RunConfigurationSwitchFilter m_runConfigurationSwitchFilter;
CopyFileStepFactory m_copyFileStepFactory; CopyFileStepFactory m_copyFileStepFactory;
CopyDirectoryStepFactory m_copyDirectoryFactory; CopyDirectoryStepFactory m_copyDirectoryFactory;
@@ -4390,14 +4369,15 @@ void AllProjectFilesFilter::restoreState(const QJsonObject &object)
DirectoryFilter::restoreState(withoutDirectories); DirectoryFilter::restoreState(withoutDirectories);
} }
RunConfigurationLocatorFilter::RunConfigurationLocatorFilter() static void setupFilter(ILocatorFilter *filter)
{ {
connect(ProjectManager::instance(), &ProjectManager::startupProjectChanged, QObject::connect(ProjectManager::instance(), &ProjectManager::startupProjectChanged,
this, &RunConfigurationLocatorFilter::targetListUpdated); filter, [filter] { filter->setEnabled(ProjectManager::startupProject()); });
filter->setEnabled(ProjectManager::startupProject());
targetListUpdated();
} }
using RunAcceptor = std::function<void(RunConfiguration *)>;
static RunConfiguration *runConfigurationForDisplayName(const QString &displayName) static RunConfiguration *runConfigurationForDisplayName(const QString &displayName)
{ {
const Target *target = ProjectManager::startupTarget(); const Target *target = ProjectManager::startupTarget();
@@ -4409,8 +4389,7 @@ static RunConfiguration *runConfigurationForDisplayName(const QString &displayNa
}); });
} }
static LocatorMatcherTasks runConfigurationMatchers( static LocatorMatcherTasks runConfigurationMatchers(const RunAcceptor &acceptor)
const RunConfigurationLocatorFilter::RunAcceptor &acceptor)
{ {
using namespace Tasking; using namespace Tasking;
@@ -4442,58 +4421,23 @@ static LocatorMatcherTasks runConfigurationMatchers(
return {{Sync(onSetup), storage}}; return {{Sync(onSetup), storage}};
} }
void RunConfigurationLocatorFilter::prepareSearch(const QString &entry)
{
m_result.clear();
const Target *target = ProjectManager::startupTarget();
if (!target)
return;
for (auto rc : target->runConfigurations()) {
if (rc->displayName().contains(entry, Qt::CaseInsensitive)) {
LocatorFilterEntry entry;
entry.displayName = rc->displayName();
entry.acceptor = [name = entry.displayName, acceptor = m_acceptor] {
RunConfiguration *config = runConfigurationForDisplayName(name);
if (!config)
return AcceptResult();
acceptor(config);
return AcceptResult();
};
m_result.append(entry);
}
}
}
QList<LocatorFilterEntry> RunConfigurationLocatorFilter::matchesFor(
QFutureInterface<LocatorFilterEntry> &future, const QString &entry)
{
Q_UNUSED(future)
Q_UNUSED(entry)
return m_result;
}
void RunConfigurationLocatorFilter::targetListUpdated()
{
setEnabled(ProjectManager::startupProject()); // at least one project opened
}
static void runAcceptor(RunConfiguration *config) static void runAcceptor(RunConfiguration *config)
{ {
if (!BuildManager::isBuilding(config->project())) if (!BuildManager::isBuilding(config->project()))
ProjectExplorerPlugin::runRunConfiguration(config, Constants::NORMAL_RUN_MODE, true); ProjectExplorerPlugin::runRunConfiguration(config, Constants::NORMAL_RUN_MODE, true);
} }
RunRunConfigurationLocatorFilter::RunRunConfigurationLocatorFilter() RunConfigurationStartFilter::RunConfigurationStartFilter()
{ {
setId("Run run configuration"); setId("Run run configuration");
setDisplayName(Tr::tr("Run Run Configuration")); setDisplayName(Tr::tr("Run Run Configuration"));
setDescription(Tr::tr("Runs a run configuration of the active project.")); setDescription(Tr::tr("Runs a run configuration of the active project."));
setDefaultShortcutString("rr"); setDefaultShortcutString("rr");
setPriority(Medium); setPriority(Medium);
setRunAcceptor(&runAcceptor); setupFilter(this);
} }
LocatorMatcherTasks RunRunConfigurationLocatorFilter::matchers() LocatorMatcherTasks RunConfigurationStartFilter::matchers()
{ {
return runConfigurationMatchers(&runAcceptor); return runConfigurationMatchers(&runAcceptor);
} }
@@ -4510,17 +4454,17 @@ static void switchAcceptor(RunConfiguration *config)
}); });
} }
SwitchToRunConfigurationLocatorFilter::SwitchToRunConfigurationLocatorFilter() RunConfigurationSwitchFilter::RunConfigurationSwitchFilter()
{ {
setId("Switch run configuration"); setId("Switch run configuration");
setDisplayName(Tr::tr("Switch Run Configuration")); setDisplayName(Tr::tr("Switch Run Configuration"));
setDescription(Tr::tr("Switches the active run configuration of the active project.")); setDescription(Tr::tr("Switches the active run configuration of the active project."));
setDefaultShortcutString("sr"); setDefaultShortcutString("sr");
setPriority(Medium); setPriority(Medium);
setRunAcceptor(&switchAcceptor); setupFilter(this);
} }
LocatorMatcherTasks SwitchToRunConfigurationLocatorFilter::matchers() LocatorMatcherTasks RunConfigurationSwitchFilter::matchers()
{ {
return runConfigurationMatchers(&switchAcceptor); return runConfigurationMatchers(&switchAcceptor);
} }