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

View File

@@ -3,43 +3,8 @@
#pragma once #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 { namespace SilverSearcher {
class FindInFilesSilverSearcher : public TextEditor::SearchEngine void setupFindInFilesSilverSearcher();
{
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;
};
} // namespace SilverSearcher } // namespace SilverSearcher

View File

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