SilverSearcher: Modernize plugin item setup

Change-Id: I787c28853b1e2993db008f47fe1cc71244471338
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-12-13 18:13:59 +01:00
parent 0af4518724
commit 32193684ef
3 changed files with 48 additions and 88 deletions

View File

@@ -2,6 +2,7 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "findinfilessilversearcher.h"
#include "silversearcherparser.h"
#include "silversearchertr.h"
@@ -16,12 +17,10 @@
#include <QLabel>
#include <QLineEdit>
using namespace Core;
using namespace SilverSearcher;
using namespace TextEditor;
using namespace Utils;
namespace {
namespace SilverSearcher {
const char s_searchOptionsString[] = "SearchOptionsString";
@@ -99,65 +98,61 @@ static void runSilverSeacher(QPromise<SearchResultItems> &promise,
TextEditor::searchInProcessOutput(promise, parameters, setupProcess, outputParser);
}
} // namespace
namespace SilverSearcher {
FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
: SearchEngine(parent)
, m_path("ag")
, m_toolName("SilverSearcher")
class FindInFilesSilverSearcher final : public SearchEngine
{
m_widget = new QWidget;
auto layout = new QHBoxLayout(m_widget);
layout->setContentsMargins(0, 0, 0, 0);
m_searchOptionsLineEdit = new QLineEdit;
m_searchOptionsLineEdit->setPlaceholderText(Tr::tr("Search Options (optional)"));
layout->addWidget(m_searchOptionsLineEdit);
public:
FindInFilesSilverSearcher()
{
m_widget = new QWidget;
auto layout = new QHBoxLayout(m_widget);
layout->setContentsMargins(0, 0, 0, 0);
m_searchOptionsLineEdit = new QLineEdit;
m_searchOptionsLineEdit->setPlaceholderText(Tr::tr("Search Options (optional)"));
layout->addWidget(m_searchOptionsLineEdit);
FindInFiles *findInFiles = FindInFiles::instance();
QTC_ASSERT(findInFiles, return);
findInFiles->addSearchEngine(this);
FindInFiles *findInFiles = FindInFiles::instance();
QTC_ASSERT(findInFiles, return);
findInFiles->addSearchEngine(this);
// TODO: Make disabled by default and run isSilverSearcherAvailable asynchronously
setEnabled(isSilverSearcherAvailable());
if (!isEnabled()) {
QLabel *label = new QLabel(Tr::tr("Silver Searcher is not available on the system."));
label->setStyleSheet("QLabel { color : red; }");
layout->addWidget(label);
// TODO: Make disabled by default and run isSilverSearcherAvailable asynchronously
setEnabled(isSilverSearcherAvailable());
if (!isEnabled()) {
QLabel *label = new QLabel(Tr::tr("Silver Searcher is not available on the system."));
label->setStyleSheet("QLabel { color : red; }");
layout->addWidget(label);
}
}
}
QString FindInFilesSilverSearcher::title() const
{
return "Silver Searcher";
}
QString title() const final { return "Silver Searcher"; }
QString toolTip() const final { return {}; }
QWidget *widget() const final { return m_widget; }
QString FindInFilesSilverSearcher::toolTip() const
{
return {};
}
void readSettings(QtcSettings *settings) final
{
m_searchOptionsLineEdit->setText(settings->value(s_searchOptionsString).toString());
}
QWidget *FindInFilesSilverSearcher::widget() const
{
return m_widget;
}
void writeSettings(QtcSettings *settings) const final
{
settings->setValue(s_searchOptionsString, m_searchOptionsLineEdit->text());
}
void FindInFilesSilverSearcher::writeSettings(QtcSettings *settings) const
{
settings->setValue(s_searchOptionsString, m_searchOptionsLineEdit->text());
}
SearchExecutor searchExecutor() const final
{
return [searchOptions = m_searchOptionsLineEdit->text()](const FileFindParameters &parameters) {
return Utils::asyncRun(runSilverSeacher, parameters, searchOptions);
};
}
SearchExecutor FindInFilesSilverSearcher::searchExecutor() const
{
return [searchOptions = m_searchOptionsLineEdit->text()](const FileFindParameters &parameters) {
return Utils::asyncRun(runSilverSeacher, parameters, searchOptions);
};
}
private:
FilePath m_directorySetting;
QPointer<QWidget> m_widget;
QPointer<QLineEdit> m_searchOptionsLineEdit;
};
void FindInFilesSilverSearcher::readSettings(QtcSettings *settings)
void setupFindInFilesSilverSearcher()
{
m_searchOptionsLineEdit->setText(settings->value(s_searchOptionsString).toString());
static FindInFilesSilverSearcher theFindInFilesSilverSearcher;
}
} // namespace SilverSearcher

View File

@@ -3,43 +3,8 @@
#pragma once
#include <texteditor/basefilefind.h>
#include <utils/filepath.h>
#include <QPointer>
QT_BEGIN_NAMESPACE
class QLineEdit;
QT_END_NAMESPACE
namespace Core { class IFindSupport; }
namespace SilverSearcher {
class FindInFilesSilverSearcher : public TextEditor::SearchEngine
{
Q_OBJECT
public:
explicit FindInFilesSilverSearcher(QObject *parent);
// TextEditor::FileFindExtension
QString title() const override;
QString toolTip() const override;
QWidget *widget() const override;
void readSettings(Utils::QtcSettings *settings) override;
void writeSettings(Utils::QtcSettings *settings) const override;
TextEditor::SearchExecutor searchExecutor() const override;
private:
QPointer<Core::IFindSupport> m_currentFindSupport;
Utils::FilePath m_directorySetting;
QPointer<QWidget> m_widget;
QPointer<QLineEdit> m_searchOptionsLineEdit;
QString m_path;
QString m_toolName;
};
void setupFindInFilesSilverSearcher();
} // namespace SilverSearcher

View File

@@ -15,7 +15,7 @@ class SilverSearcherPlugin final : public ExtensionSystem::IPlugin
void initialize() final
{
new FindInFilesSilverSearcher(this);
setupFindInFilesSilverSearcher();
#ifdef WITH_TESTS
addTest<OutputParserTest>();