Utils: Move SearchResultItem/Color into Utils

It's going to be reused inside FileSearch.

Change-Id: I8993d7158ff31c311c2283d32bc43465a8946a52
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Jarek Kobus
2023-05-05 15:51:11 +02:00
parent 2c61eac1cb
commit 8b3aa900da
38 changed files with 266 additions and 265 deletions

View File

@@ -147,6 +147,7 @@ add_qtc_library(Utils
runextensions.cpp runextensions.h runextensions.cpp runextensions.h
savefile.cpp savefile.h savefile.cpp savefile.h
scopedswap.h scopedswap.h
searchresultitem.cpp searchresultitem.h
set_algorithm.h set_algorithm.h
settingsaccessor.cpp settingsaccessor.h settingsaccessor.cpp settingsaccessor.h
settingsselector.cpp settingsselector.h settingsselector.cpp settingsselector.h

View File

@@ -0,0 +1,59 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "searchresultitem.h"
namespace Utils {
int Search::TextRange::length(const QString &text) const
{
if (begin.line == end.line)
return end.column - begin.column;
const int lineCount = end.line - begin.line;
int index = text.indexOf(QChar::LineFeed);
int currentLine = 1;
while (index > 0 && currentLine < lineCount) {
++index;
index = text.indexOf(QChar::LineFeed, index);
++currentLine;
}
if (index < 0)
return 0;
return index - begin.column + end.column;
}
SearchResultColor::SearchResultColor(const QColor &textBg, const QColor &textFg,
const QColor &highlightBg, const QColor &highlightFg,
const QColor &functionBg, const QColor &functionFg)
: textBackground(textBg)
, textForeground(textFg)
, highlightBackground(highlightBg)
, highlightForeground(highlightFg)
, containingFunctionBackground(functionBg)
, containingFunctionForeground(functionFg)
{
if (!highlightBackground.isValid())
highlightBackground = textBackground;
if (!highlightForeground.isValid())
highlightForeground = textForeground;
if (!containingFunctionBackground.isValid())
containingFunctionBackground = textBackground;
if (!containingFunctionForeground.isValid())
containingFunctionForeground = textForeground;
}
QTCREATOR_UTILS_EXPORT size_t qHash(SearchResultColor::Style style, uint seed)
{
int a = int(style);
return ::qHash(a, seed);
}
void SearchResultItem::setMainRange(int line, int column, int length)
{
m_mainRange = {{line, column}, {line, column + length}};
}
} // namespace Utils

View File

@@ -1,82 +1,78 @@
// Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// 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
#pragma once #pragma once
#include "searchresultcolor.h" #include "utils_global.h"
#include <utils/filepath.h> #include <utils/filepath.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <QColor>
#include <QHash>
#include <QIcon> #include <QIcon>
#include <QStringList> #include <QStringList>
#include <QVariant> #include <QVariant>
#include <optional> #include <optional>
namespace Core { namespace Utils {
namespace Search { namespace Search {
class TextPosition class QTCREATOR_UTILS_EXPORT TextPosition
{ {
public: public:
TextPosition() = default;
TextPosition(int line, int column) : line(line), column(column) {}
int line = -1; // (0 or -1 for no line number) int line = -1; // (0 or -1 for no line number)
int column = -1; // 0-based starting position for a mark (-1 for no mark) int column = -1; // 0-based starting position for a mark (-1 for no mark)
bool operator<(const TextPosition &other) bool operator<(const TextPosition &other) const
{ return line < other.line || (line == other.line && column < other.column); } { return line < other.line || (line == other.line && column < other.column); }
}; };
class TextRange class QTCREATOR_UTILS_EXPORT TextRange
{ {
public: public:
TextRange() = default;
TextRange(TextPosition begin, TextPosition end) : begin(begin), end(end) {}
QString mid(const QString &text) const { return text.mid(begin.column, length(text)); } QString mid(const QString &text) const { return text.mid(begin.column, length(text)); }
int length(const QString &text) const;
int length(const QString &text) const
{
if (begin.line == end.line)
return end.column - begin.column;
const int lineCount = end.line - begin.line;
int index = text.indexOf(QChar::LineFeed);
int currentLine = 1;
while (index > 0 && currentLine < lineCount) {
++index;
index = text.indexOf(QChar::LineFeed, index);
++currentLine;
}
if (index < 0)
return 0;
return index - begin.column + end.column;
}
TextPosition begin; TextPosition begin;
TextPosition end; TextPosition end;
bool operator<(const TextRange &other) bool operator<(const TextRange &other) const { return begin < other.begin; }
{ return begin < other.begin; }
}; };
} // namespace Search } // namespace Search
class CORE_EXPORT SearchResultItem class QTCREATOR_UTILS_EXPORT SearchResultColor
{
public:
enum class Style { Default, Alt1, Alt2 };
SearchResultColor() = default;
SearchResultColor(const QColor &textBg, const QColor &textFg,
const QColor &highlightBg, const QColor &highlightFg,
const QColor &functionBg, const QColor &functionFg);
QColor textBackground;
QColor textForeground;
QColor highlightBackground;
QColor highlightForeground;
QColor containingFunctionBackground;
QColor containingFunctionForeground;
private:
QTCREATOR_UTILS_EXPORT friend size_t qHash(Style style, uint seed);
};
using SearchResultColors = QHash<SearchResultColor::Style, SearchResultColor>;
class QTCREATOR_UTILS_EXPORT SearchResultItem
{ {
public: public:
QStringList path() const { return m_path; } QStringList path() const { return m_path; }
void setPath(const QStringList &path) { m_path = path; } void setPath(const QStringList &path) { m_path = path; }
void setFilePath(const Utils::FilePath &filePath) void setFilePath(const Utils::FilePath &filePath) { m_path = {filePath.toUserOutput()}; }
{
m_path = QStringList{filePath.toUserOutput()};
}
QString lineText() const { return m_lineText; } QString lineText() const { return m_lineText; }
void setLineText(const QString &text) { m_lineText = text; } void setLineText(const QString &text) { m_lineText = text; }
@@ -89,14 +85,7 @@ public:
Search::TextRange mainRange() const { return m_mainRange; } Search::TextRange mainRange() const { return m_mainRange; }
void setMainRange(const Search::TextRange &mainRange) { m_mainRange = mainRange; } void setMainRange(const Search::TextRange &mainRange) { m_mainRange = mainRange; }
void setMainRange(int line, int column, int length) void setMainRange(int line, int column, int length);
{
m_mainRange = {};
m_mainRange.begin.line = line;
m_mainRange.begin.column = column;
m_mainRange.end.line = m_mainRange.begin.line;
m_mainRange.end.column = m_mainRange.begin.column + length;
}
bool useTextEditorFont() const { return m_useTextEditorFont; } bool useTextEditorFont() const { return m_useTextEditorFont; }
void setUseTextEditorFont(bool useTextEditorFont) { m_useTextEditorFont = useTextEditorFont; } void setUseTextEditorFont(bool useTextEditorFont) { m_useTextEditorFont = useTextEditorFont; }
@@ -109,9 +98,9 @@ public:
std::optional<QString> containingFunctionName() const { return m_containingFunctionName; } std::optional<QString> containingFunctionName() const { return m_containingFunctionName; }
void setContainingFunctionName(std::optional<QString> containingFunctionName) void setContainingFunctionName(const std::optional<QString> &containingFunctionName)
{ {
m_containingFunctionName = std::move(containingFunctionName); m_containingFunctionName = containingFunctionName;
} }
private: private:
@@ -126,7 +115,7 @@ private:
std::optional<QString> m_containingFunctionName; std::optional<QString> m_containingFunctionName;
}; };
} // namespace Core } // namespace Utils
Q_DECLARE_METATYPE(Core::SearchResultItem) Q_DECLARE_METATYPE(Utils::SearchResultItem)
Q_DECLARE_METATYPE(Core::Search::TextPosition) Q_DECLARE_METATYPE(Utils::Search::TextPosition)

View File

@@ -275,6 +275,8 @@ Project {
"savefile.cpp", "savefile.cpp",
"savefile.h", "savefile.h",
"scopedswap.h", "scopedswap.h",
"searchresultitem.cpp",
"searchresultitem.h",
"set_algorithm.h", "set_algorithm.h",
"settingsaccessor.cpp", "settingsaccessor.cpp",
"settingsaccessor.h", "settingsaccessor.h",

View File

@@ -3,12 +3,12 @@
#pragma once #pragma once
#include <coreplugin/find/searchresultitem.h>
#include <cppeditor/baseeditordocumentparser.h> #include <cppeditor/baseeditordocumentparser.h>
#include <cppeditor/cppcodemodelsettings.h> #include <cppeditor/cppcodemodelsettings.h>
#include <cppeditor/cursorineditor.h> #include <cppeditor/cursorineditor.h>
#include <languageclient/client.h> #include <languageclient/client.h>
#include <utils/link.h> #include <utils/link.h>
#include <utils/searchresultitem.h>
#include <QVersionNumber> #include <QVersionNumber>
@@ -119,7 +119,7 @@ public:
signals: signals:
void indexingFinished(); void indexingFinished();
void foundReferences(const QList<Core::SearchResultItem> &items); void foundReferences(const QList<Utils::SearchResultItem> &items);
void findUsagesDone(); void findUsagesDone();
void helpItemGathered(const Core::HelpItem &helpItem); void helpItemGathered(const Core::HelpItem &helpItem);
void highlightingResultsReady(const TextEditor::HighlightingResults &results, void highlightingResultsReady(const TextEditor::HighlightingResults &results,

View File

@@ -3,9 +3,9 @@
#pragma once #pragma once
#include <coreplugin/find/searchresultitem.h>
#include <cppeditor/cursorineditor.h> #include <cppeditor/cursorineditor.h>
#include <utils/link.h> #include <utils/link.h>
#include <utils/searchresultitem.h>
#include <QObject> #include <QObject>
@@ -35,7 +35,7 @@ public:
~ClangdFindReferences(); ~ClangdFindReferences();
signals: signals:
void foundReferences(const QList<Core::SearchResultItem> &items); void foundReferences(const QList<Utils::SearchResultItem> &items);
void done(); void done();
private: private:

View File

@@ -43,6 +43,7 @@ using namespace CppEditor::Tests;
using namespace LanguageClient; using namespace LanguageClient;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace TextEditor; using namespace TextEditor;
using namespace Utils;
namespace ClangCodeModel { namespace ClangCodeModel {
namespace Internal { namespace Internal {
@@ -97,7 +98,7 @@ ClangdTest::~ClangdTest()
delete m_projectDir; delete m_projectDir;
} }
Utils::FilePath ClangdTest::filePath(const QString &fileName) const FilePath ClangdTest::filePath(const QString &fileName) const
{ {
return m_projectDir->absolutePath(fileName); return m_projectDir->absolutePath(fileName);
} }
@@ -139,7 +140,7 @@ void ClangdTest::initTestCase()
{ {
const QString clangdFromEnv = Utils::qtcEnvironmentVariable("QTC_CLANGD"); const QString clangdFromEnv = Utils::qtcEnvironmentVariable("QTC_CLANGD");
if (!clangdFromEnv.isEmpty()) if (!clangdFromEnv.isEmpty())
CppEditor::ClangdSettings::setClangdFilePath(Utils::FilePath::fromString(clangdFromEnv)); CppEditor::ClangdSettings::setClangdFilePath(FilePath::fromString(clangdFromEnv));
const auto clangd = CppEditor::ClangdSettings::instance().clangdFilePath(); const auto clangd = CppEditor::ClangdSettings::instance().clangdFilePath();
if (clangd.isEmpty() || !clangd.exists()) if (clangd.isEmpty() || !clangd.exists())
QSKIP("clangd binary not found"); QSKIP("clangd binary not found");
@@ -408,13 +409,13 @@ void ClangdTestFollowSymbol::test()
timer.setSingleShot(true); timer.setSingleShot(true);
QEventLoop loop; QEventLoop loop;
QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit); QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
Utils::Link actualLink; Link actualLink;
const auto handler = [&actualLink, &loop](const Utils::Link &l) { const auto handler = [&actualLink, &loop](const Link &l) {
actualLink = l; actualLink = l;
loop.quit(); loop.quit();
}; };
QTextCursor cursor(doc->document()); QTextCursor cursor(doc->document());
const int pos = Utils::Text::positionInText(doc->document(), sourceLine, sourceColumn); const int pos = Text::positionInText(doc->document(), sourceLine, sourceColumn);
cursor.setPosition(pos); cursor.setPosition(pos);
client()->followSymbol(doc, cursor, nullptr, handler, true, client()->followSymbol(doc, cursor, nullptr, handler, true,
goToType ? FollowTo::SymbolType : FollowTo::SymbolDef, false); goToType ? FollowTo::SymbolType : FollowTo::SymbolDef, false);
@@ -520,15 +521,14 @@ void ClangdTestLocalReferences::test()
QEventLoop loop; QEventLoop loop;
QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit); QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
QList<Range> actualRanges; QList<Range> actualRanges;
const auto handler = [&actualRanges, &loop](const QString &symbol, const auto handler = [&actualRanges, &loop](const QString &symbol, const Links &links, int) {
const Utils::Links &links, int) { for (const Link &link : links)
for (const Utils::Link &link : links)
actualRanges << Range(link.targetLine, link.targetColumn, symbol.length()); actualRanges << Range(link.targetLine, link.targetColumn, symbol.length());
loop.quit(); loop.quit();
}; };
QTextCursor cursor(doc->document()); QTextCursor cursor(doc->document());
const int pos = Utils::Text::positionInText(doc->document(), sourceLine, sourceColumn); const int pos = Text::positionInText(doc->document(), sourceLine, sourceColumn);
cursor.setPosition(pos); cursor.setPosition(pos);
client()->findLocalUsages(doc, cursor, std::move(handler)); client()->findLocalUsages(doc, cursor, std::move(handler));
timer.start(10000); timer.start(10000);
@@ -659,7 +659,7 @@ void ClangdTestTooltips::test()
connect(client(), &ClangdClient::helpItemGathered, &loop, handler); connect(client(), &ClangdClient::helpItemGathered, &loop, handler);
QTextCursor cursor(doc->document()); QTextCursor cursor(doc->document());
const int pos = Utils::Text::positionInText(doc->document(), line, column); const int pos = Text::positionInText(doc->document(), line, column);
cursor.setPosition(pos); cursor.setPosition(pos);
editor->editorWidget()->processTooltipRequest(cursor); editor->editorWidget()->processTooltipRequest(cursor);
@@ -1316,11 +1316,11 @@ void ClangdTestHighlighting::test()
const TextEditor::TextDocument * const doc = document("highlighting.cpp"); const TextEditor::TextDocument * const doc = document("highlighting.cpp");
QVERIFY(doc); QVERIFY(doc);
const int startPos = Utils::Text::positionInText(doc->document(), firstLine, startColumn); const int startPos = Text::positionInText(doc->document(), firstLine, startColumn);
const int endPos = Utils::Text::positionInText(doc->document(), lastLine, endColumn); const int endPos = Text::positionInText(doc->document(), lastLine, endColumn);
const auto lessThan = [=](const TextEditor::HighlightingResult &r, int) { const auto lessThan = [=](const TextEditor::HighlightingResult &r, int) {
return Utils::Text::positionInText(doc->document(), r.line, r.column) < startPos; return Text::positionInText(doc->document(), r.line, r.column) < startPos;
}; };
const auto findResults = [=] { const auto findResults = [=] {
TextEditor::HighlightingResults results; TextEditor::HighlightingResults results;
@@ -1328,7 +1328,7 @@ void ClangdTestHighlighting::test()
if (it == m_results.cend()) if (it == m_results.cend())
return results; return results;
while (it != m_results.cend()) { while (it != m_results.cend()) {
const int resultEndPos = Utils::Text::positionInText(doc->document(), it->line, const int resultEndPos = Text::positionInText(doc->document(), it->line,
it->column) + it->length; it->column) + it->length;
if (resultEndPos > endPos) if (resultEndPos > endPos)
break; break;
@@ -1439,7 +1439,7 @@ public:
{ {
const int pos = currentPosition(); const int pos = currentPosition();
QPair<int, int> lineAndColumn; QPair<int, int> lineAndColumn;
Utils::Text::convertPosition(m_doc, pos, &lineAndColumn.first, &lineAndColumn.second); Text::convertPosition(m_doc, pos, &lineAndColumn.first, &lineAndColumn.second);
return lineAndColumn; return lineAndColumn;
} }
@@ -1864,7 +1864,7 @@ void ClangdTestCompletion::startCollectingHighlightingInfo()
{ {
m_documentsWithHighlighting.clear(); m_documentsWithHighlighting.clear();
connect(client(), &ClangdClient::highlightingResultsReady, this, connect(client(), &ClangdClient::highlightingResultsReady, this,
[this](const HighlightingResults &, const Utils::FilePath &file) { [this](const HighlightingResults &, const FilePath &file) {
m_documentsWithHighlighting.insert(file); m_documentsWithHighlighting.insert(file);
}); });
} }
@@ -1881,7 +1881,7 @@ void ClangdTestCompletion::getProposal(const QString &fileName,
if (cursorPos) if (cursorPos)
*cursorPos = pos; *cursorPos = pos;
int line, column; int line, column;
Utils::Text::convertPosition(doc->document(), pos, &line, &column); Text::convertPosition(doc->document(), pos, &line, &column);
const auto editor = qobject_cast<BaseTextEditor *>( const auto editor = qobject_cast<BaseTextEditor *>(
EditorManager::openEditorAt({doc->filePath(), line, column - 1})); EditorManager::openEditorAt({doc->filePath(), line, column - 1}));
QVERIFY(editor); QVERIFY(editor);

View File

@@ -4,11 +4,11 @@
#pragma once #pragma once
#include <cppeditor/cpptoolstestcase.h> #include <cppeditor/cpptoolstestcase.h>
#include <coreplugin/find/searchresultitem.h>
#include <texteditor/blockrange.h> #include <texteditor/blockrange.h>
#include <texteditor/codeassist/genericproposal.h> #include <texteditor/codeassist/genericproposal.h>
#include <texteditor/semantichighlighter.h> #include <texteditor/semantichighlighter.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/searchresultitem.h>
#include <QHash> #include <QHash>
#include <QObject> #include <QObject>
@@ -74,7 +74,7 @@ private slots:
void test(); void test();
private: private:
QList<Core::SearchResultItem> m_actualResults; QList<Utils::SearchResultItem> m_actualResults;
}; };
class ClangdTestFollowSymbol : public ClangdTest class ClangdTestFollowSymbol : public ClangdTest

View File

@@ -72,8 +72,6 @@ add_qtc_plugin(Core
find/ifindsupport.cpp find/ifindsupport.h find/ifindsupport.cpp find/ifindsupport.h
find/itemviewfind.cpp find/itemviewfind.h find/itemviewfind.cpp find/itemviewfind.h
find/optionspopup.cpp find/optionspopup.h find/optionspopup.cpp find/optionspopup.h
find/searchresultcolor.h
find/searchresultitem.h
find/searchresulttreeitemdelegate.cpp find/searchresulttreeitemdelegate.h find/searchresulttreeitemdelegate.cpp find/searchresulttreeitemdelegate.h
find/searchresulttreeitemroles.h find/searchresulttreeitemroles.h
find/searchresulttreeitems.cpp find/searchresulttreeitems.h find/searchresulttreeitems.cpp find/searchresulttreeitems.h

View File

@@ -35,6 +35,7 @@
#include <utils/mimeutils.h> #include <utils/mimeutils.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/savefile.h> #include <utils/savefile.h>
#include <utils/searchresultitem.h>
#include <utils/stringutils.h> #include <utils/stringutils.h>
#include <utils/theme/theme.h> #include <utils/theme/theme.h>
#include <utils/theme/theme_p.h> #include <utils/theme/theme_p.h>
@@ -71,7 +72,7 @@ void CorePlugin::setupSystemEnvironment()
CorePlugin::CorePlugin() CorePlugin::CorePlugin()
{ {
qRegisterMetaType<Id>(); qRegisterMetaType<Id>();
qRegisterMetaType<Core::Search::TextPosition>(); qRegisterMetaType<Utils::Search::TextPosition>();
qRegisterMetaType<Utils::CommandLine>(); qRegisterMetaType<Utils::CommandLine>();
qRegisterMetaType<Utils::FilePath>(); qRegisterMetaType<Utils::FilePath>();
qRegisterMetaType<Utils::Environment>(); qRegisterMetaType<Utils::Environment>();

View File

@@ -306,8 +306,6 @@ Project {
"itemviewfind.h", "itemviewfind.h",
"optionspopup.cpp", "optionspopup.cpp",
"optionspopup.h", "optionspopup.h",
"searchresultcolor.h",
"searchresultitem.h",
"searchresulttreeitemdelegate.cpp", "searchresulttreeitemdelegate.cpp",
"searchresulttreeitemdelegate.h", "searchresulttreeitemdelegate.h",
"searchresulttreeitemroles.h", "searchresulttreeitemroles.h",

View File

@@ -24,7 +24,6 @@
#include "../editormanager/ieditorfactory_p.h" #include "../editormanager/ieditorfactory_p.h"
#include "../editormanager/iexternaleditor.h" #include "../editormanager/iexternaleditor.h"
#include "../fileutils.h" #include "../fileutils.h"
#include "../find/searchresultitem.h"
#include "../findplaceholder.h" #include "../findplaceholder.h"
#include "../icore.h" #include "../icore.h"
#include "../iversioncontrol.h" #include "../iversioncontrol.h"
@@ -52,6 +51,7 @@
#include <utils/mimeutils.h> #include <utils/mimeutils.h>
#include <utils/overridecursor.h> #include <utils/overridecursor.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/searchresultitem.h>
#include <utils/stringutils.h> #include <utils/stringutils.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>

View File

@@ -22,18 +22,14 @@ QT_BEGIN_NAMESPACE
class QMenu; class QMenu;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace Utils { class MimeType; } namespace Utils { class SearchResultItem; }
namespace Core { namespace Core {
class IDocument; class IDocument;
class LocatorFilterEntry; class LocatorFilterEntry;
class SearchResultItem;
namespace Internal { namespace Internal { class MainWindow; }
class EditorManagerPrivate;
class MainWindow;
} // namespace Internal
class CORE_EXPORT EditorManagerPlaceHolder final : public QWidget class CORE_EXPORT EditorManagerPlaceHolder final : public QWidget
{ {
@@ -79,7 +75,7 @@ public:
bool *newEditor = nullptr); bool *newEditor = nullptr);
static IEditor *openEditor(const LocatorFilterEntry &entry); static IEditor *openEditor(const LocatorFilterEntry &entry);
static void openEditorAtSearchResult(const SearchResultItem &item, static void openEditorAtSearchResult(const Utils::SearchResultItem &item,
Utils::Id editorId = {}, Utils::Id editorId = {},
OpenEditorFlags flags = NoFlags, OpenEditorFlags flags = NoFlags,
bool *newEditor = nullptr); bool *newEditor = nullptr);

View File

@@ -1,52 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "../core_global.h"
#include <QColor>
#include <QHash>
namespace Core {
class CORE_EXPORT SearchResultColor
{
public:
enum class Style { Default, Alt1, Alt2 };
SearchResultColor() = default;
SearchResultColor(const QColor &textBg, const QColor &textFg,
const QColor &highlightBg, const QColor &highlightFg,
const QColor &functionBg, const QColor &functionFg
)
: textBackground(textBg), textForeground(textFg),
highlightBackground(highlightBg), highlightForeground(highlightFg),
containingFunctionBackground(functionBg),containingFunctionForeground(functionFg)
{
if (!highlightBackground.isValid())
highlightBackground = textBackground;
if (!highlightForeground.isValid())
highlightForeground = textForeground;
if (!containingFunctionBackground.isValid())
containingFunctionBackground = textBackground;
if (!containingFunctionForeground.isValid())
containingFunctionForeground = textForeground;
}
friend auto qHash(SearchResultColor::Style style)
{
return QT_PREPEND_NAMESPACE(qHash(int(style)));
}
QColor textBackground;
QColor textForeground;
QColor highlightBackground;
QColor highlightForeground;
QColor containingFunctionBackground;
QColor containingFunctionForeground;
};
using SearchResultColors = QHash<SearchResultColor::Style, SearchResultColor>;
} // namespace Core

View File

@@ -3,10 +3,12 @@
#include "searchresulttreeitems.h" #include "searchresulttreeitems.h"
#include <utils/searchresultitem.h>
namespace Core { namespace Core {
namespace Internal { namespace Internal {
SearchResultTreeItem::SearchResultTreeItem(const SearchResultItem &item, SearchResultTreeItem::SearchResultTreeItem(const Utils::SearchResultItem &item,
SearchResultTreeItem *parent) SearchResultTreeItem *parent)
: item(item), : item(item),
m_parent(parent), m_parent(parent),
@@ -79,7 +81,8 @@ int SearchResultTreeItem::insertionIndex(const QString &text, SearchResultTreeIt
return insertionPosition - m_children.begin(); return insertionPosition - m_children.begin();
} }
int SearchResultTreeItem::insertionIndex(const SearchResultItem &item, SearchResultTreeItem **existingItem) const int SearchResultTreeItem::insertionIndex(const Utils::SearchResultItem &item,
SearchResultTreeItem **existingItem) const
{ {
return insertionIndex(item.lineText(), existingItem); return insertionIndex(item.lineText(), existingItem);
} }
@@ -89,13 +92,13 @@ void SearchResultTreeItem::insertChild(int index, SearchResultTreeItem *child)
m_children.insert(index, child); m_children.insert(index, child);
} }
void SearchResultTreeItem::insertChild(int index, const SearchResultItem &item) void SearchResultTreeItem::insertChild(int index, const Utils::SearchResultItem &item)
{ {
auto child = new SearchResultTreeItem(item, this); auto child = new SearchResultTreeItem(item, this);
insertChild(index, child); insertChild(index, child);
} }
void SearchResultTreeItem::appendChild(const SearchResultItem &item) void SearchResultTreeItem::appendChild(const Utils::SearchResultItem &item)
{ {
insertChild(m_children.count(), item); insertChild(m_children.count(), item);
} }

View File

@@ -5,8 +5,7 @@
#include "searchresultwindow.h" #include "searchresultwindow.h"
#include <QString> #include <utils/searchresultitem.h>
#include <QList>
namespace Core { namespace Core {
namespace Internal { namespace Internal {
@@ -14,7 +13,7 @@ namespace Internal {
class SearchResultTreeItem class SearchResultTreeItem
{ {
public: public:
explicit SearchResultTreeItem(const SearchResultItem &item = SearchResultItem(), explicit SearchResultTreeItem(const Utils::SearchResultItem &item = {},
SearchResultTreeItem *parent = nullptr); SearchResultTreeItem *parent = nullptr);
virtual ~SearchResultTreeItem(); virtual ~SearchResultTreeItem();
@@ -22,10 +21,10 @@ public:
SearchResultTreeItem *parent() const; SearchResultTreeItem *parent() const;
SearchResultTreeItem *childAt(int index) const; SearchResultTreeItem *childAt(int index) const;
int insertionIndex(const QString &text, SearchResultTreeItem **existingItem) const; int insertionIndex(const QString &text, SearchResultTreeItem **existingItem) const;
int insertionIndex(const SearchResultItem &item, SearchResultTreeItem **existingItem) const; int insertionIndex(const Utils::SearchResultItem &item, SearchResultTreeItem **existingItem) const;
void insertChild(int index, SearchResultTreeItem *child); void insertChild(int index, SearchResultTreeItem *child);
void insertChild(int index, const SearchResultItem &item); void insertChild(int index, const Utils::SearchResultItem &item);
void appendChild(const SearchResultItem &item); void appendChild(const Utils::SearchResultItem &item);
int childrenCount() const; int childrenCount() const;
int rowOfItem() const; int rowOfItem() const;
void clearChildren(); void clearChildren();
@@ -36,7 +35,7 @@ public:
bool isGenerated() const { return m_isGenerated; } bool isGenerated() const { return m_isGenerated; }
void setGenerated(bool value) { m_isGenerated = value; } void setGenerated(bool value) { m_isGenerated = value; }
SearchResultItem item; Utils::SearchResultItem item;
private: private:
SearchResultTreeItem *m_parent; SearchResultTreeItem *m_parent;

View File

@@ -6,12 +6,15 @@
#include "searchresulttreeitemroles.h" #include "searchresulttreeitemroles.h"
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/searchresultitem.h>
#include <QApplication> #include <QApplication>
#include <QFont> #include <QFont>
#include <QFontMetrics> #include <QFontMetrics>
#include <QDebug> #include <QDebug>
using namespace Utils;
namespace Core { namespace Core {
namespace Internal { namespace Internal {

View File

@@ -4,7 +4,6 @@
#pragma once #pragma once
#include "searchresultwindow.h" #include "searchresultwindow.h"
#include "searchresultcolor.h"
#include <QFont> #include <QFont>
#include <QSortFilterProxyModel> #include <QSortFilterProxyModel>
@@ -25,8 +24,9 @@ public:
void setFilter(SearchResultFilter *filter); void setFilter(SearchResultFilter *filter);
void setShowReplaceUI(bool show); void setShowReplaceUI(bool show);
void setTextEditorFont(const QFont &font, const SearchResultColors &colors); void setTextEditorFont(const QFont &font, const Utils::SearchResultColors &colors);
QList<QModelIndex> addResults(const QList<SearchResultItem> &items, SearchResult::AddMode mode); QList<QModelIndex> addResults(const QList<Utils::SearchResultItem> &items,
SearchResult::AddMode mode);
void clear(); void clear();
QModelIndex next(const QModelIndex &idx, bool includeGenerated = false, QModelIndex next(const QModelIndex &idx, bool includeGenerated = false,
bool *wrapped = nullptr) const; bool *wrapped = nullptr) const;

View File

@@ -7,11 +7,14 @@
#include "searchresulttreeitemdelegate.h" #include "searchresulttreeitemdelegate.h"
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/searchresultitem.h>
#include <QHeaderView> #include <QHeaderView>
#include <QKeyEvent> #include <QKeyEvent>
#include <QVBoxLayout> #include <QVBoxLayout>
using namespace Utils;
namespace Core { namespace Core {
namespace Internal { namespace Internal {
@@ -31,7 +34,7 @@ public:
}; };
SearchResultTreeView::SearchResultTreeView(QWidget *parent) SearchResultTreeView::SearchResultTreeView(QWidget *parent)
: Utils::TreeView(parent) : TreeView(parent)
, m_model(new SearchResultFilterModel(this)) , m_model(new SearchResultFilterModel(this))
, m_autoExpandResults(false) , m_autoExpandResults(false)
{ {

View File

@@ -6,9 +6,9 @@
#include "searchresultwindow.h" #include "searchresultwindow.h"
#include <utils/itemviews.h> #include <utils/itemviews.h>
#include <utils/searchresultitem.h>
namespace Core { namespace Core {
class SearchResultColor;
namespace Internal { namespace Internal {
@@ -22,11 +22,11 @@ public:
explicit SearchResultTreeView(QWidget *parent = nullptr); explicit SearchResultTreeView(QWidget *parent = nullptr);
void setAutoExpandResults(bool expand); void setAutoExpandResults(bool expand);
void setTextEditorFont(const QFont &font, const SearchResultColors &colors); void setTextEditorFont(const QFont &font, const Utils::SearchResultColors &colors);
void setTabWidth(int tabWidth); void setTabWidth(int tabWidth);
SearchResultFilterModel *model() const; SearchResultFilterModel *model() const;
void addResults(const QList<SearchResultItem> &items, SearchResult::AddMode mode); void addResults(const QList<Utils::SearchResultItem> &items, SearchResult::AddMode mode);
void setFilter(SearchResultFilter *filter); void setFilter(SearchResultFilter *filter);
bool hasFilter() const; bool hasFilter() const;
void showFilterWidget(QWidget *parent); void showFilterWidget(QWidget *parent);
@@ -35,7 +35,7 @@ public:
bool event(QEvent *e) override; bool event(QEvent *e) override;
signals: signals:
void jumpToSearchResult(const SearchResultItem &item); void jumpToSearchResult(const Utils::SearchResultItem &item);
void filterInvalidated(); void filterInvalidated();
void filterChanged(); void filterChanged();

View File

@@ -6,6 +6,7 @@
#include "searchresultwindow.h" #include "searchresultwindow.h"
#include <utils/infobar.h> #include <utils/infobar.h>
#include <utils/searchresultitem.h>
#include <QWidget> #include <QWidget>
@@ -33,7 +34,7 @@ public:
QWidget *additionalReplaceWidget() const; QWidget *additionalReplaceWidget() const;
void setAdditionalReplaceWidget(QWidget *widget); void setAdditionalReplaceWidget(QWidget *widget);
void addResults(const QList<SearchResultItem> &items, SearchResult::AddMode mode); void addResults(const QList<Utils::SearchResultItem> &items, SearchResult::AddMode mode);
int count() const; int count() const;
bool isSearching() const { return m_searching; } bool isSearching() const { return m_searching; }
@@ -52,7 +53,7 @@ public:
void notifyVisibilityChanged(bool visible); void notifyVisibilityChanged(bool visible);
void setTextEditorFont(const QFont &font, const SearchResultColors &colors); void setTextEditorFont(const QFont &font, const Utils::SearchResultColors &colors);
void setTabWidth(int tabWidth); void setTabWidth(int tabWidth);
void setAutoExpandResults(bool expand); void setAutoExpandResults(bool expand);
@@ -76,8 +77,9 @@ public slots:
void sendRequestPopup(); void sendRequestPopup();
signals: signals:
void activated(const Core::SearchResultItem &item); void activated(const Utils::SearchResultItem &item);
void replaceButtonClicked(const QString &replaceText, const QList<Core::SearchResultItem> &checkedItems, bool preserveCase); void replaceButtonClicked(const QString &replaceText,
const QList<Utils::SearchResultItem> &checkedItems, bool preserveCase);
void replaceTextChanged(const QString &replaceText); void replaceTextChanged(const QString &replaceText);
void searchAgainRequested(); void searchAgainRequested();
void canceled(); void canceled();
@@ -91,7 +93,7 @@ signals:
void navigateStateChanged(); void navigateStateChanged();
private: private:
void handleJumpToSearchResult(const SearchResultItem &item); void handleJumpToSearchResult(const Utils::SearchResultItem &item);
void handleReplaceButton(); void handleReplaceButton();
void doReplace(); void doReplace();
void cancel(); void cancel();
@@ -101,7 +103,7 @@ private:
void continueAfterSizeWarning(); void continueAfterSizeWarning();
void cancelAfterSizeWarning(); void cancelAfterSizeWarning();
QList<SearchResultItem> checkedItems() const; QList<Utils::SearchResultItem> checkedItems() const;
void updateMatchesFoundLabel(); void updateMatchesFoundLabel();
SearchResultTreeView *m_searchResultTreeView = nullptr; SearchResultTreeView *m_searchResultTreeView = nullptr;

View File

@@ -52,12 +52,6 @@ namespace Core {
\internal \internal
*/ */
/*!
\class Core::SearchResultItem
\inmodule QtCreator
\internal
*/
namespace Internal { namespace Internal {
class InternalScrollArea : public QScrollArea class InternalScrollArea : public QScrollArea
@@ -110,7 +104,7 @@ namespace Internal {
QList<SearchResult *> m_searchResults; QList<SearchResult *> m_searchResults;
int m_currentIndex; int m_currentIndex;
QFont m_font; QFont m_font;
SearchResultColors m_colors; Utils::SearchResultColors m_colors;
int m_tabWidth; int m_tabWidth;
}; };
@@ -260,14 +254,14 @@ using namespace Core::Internal;
*/ */
/*! /*!
\fn void Core::SearchResult::activated(const Core::SearchResultItem &item) \fn void Core::SearchResult::activated(const Utils::SearchResultItem &item)
Indicates that the user activated the search result \a item by Indicates that the user activated the search result \a item by
double-clicking it, for example. double-clicking it, for example.
*/ */
/*! /*!
\fn void Core::SearchResult::replaceButtonClicked(const QString &replaceText, \fn void Core::SearchResult::replaceButtonClicked(const QString &replaceText,
const QList<Core::SearchResultItem> &checkedItems, const QList<Utils::SearchResultItem> &checkedItems,
bool preserveCase) bool preserveCase)
Indicates that the user initiated a text replace by selecting Indicates that the user initiated a text replace by selecting
@@ -577,7 +571,8 @@ void SearchResultWindow::setFocus()
/*! /*!
\internal \internal
*/ */
void SearchResultWindow::setTextEditorFont(const QFont &font, const SearchResultColors &colors) void SearchResultWindow::setTextEditorFont(const QFont &font,
const Utils::SearchResultColors &colors)
{ {
d->m_font = font; d->m_font = font;
d->m_colors = colors; d->m_colors = colors;
@@ -837,7 +832,7 @@ void SearchResult::setAdditionalReplaceWidget(QWidget *widget)
\sa addResults() \sa addResults()
*/ */
void SearchResult::addResult(const SearchResultItem &item) void SearchResult::addResult(const Utils::SearchResultItem &item)
{ {
m_widget->addResults({item}, AddOrdered); m_widget->addResults({item}, AddOrdered);
} }
@@ -848,7 +843,7 @@ void SearchResult::addResult(const SearchResultItem &item)
\sa addResult() \sa addResult()
*/ */
void SearchResult::addResults(const QList<SearchResultItem> &items, AddMode mode) void SearchResult::addResults(const QList<Utils::SearchResultItem> &items, AddMode mode)
{ {
m_widget->addResults(items, mode); m_widget->addResults(items, mode);
emit countChanged(m_widget->count()); emit countChanged(m_widget->count());

View File

@@ -3,11 +3,10 @@
#pragma once #pragma once
#include "searchresultcolor.h"
#include "searchresultitem.h"
#include <coreplugin/ioutputpane.h> #include <coreplugin/ioutputpane.h>
#include <utils/searchresultitem.h>
#include <QVariant> #include <QVariant>
#include <QStringList> #include <QStringList>
#include <QIcon> #include <QIcon>
@@ -19,6 +18,7 @@ class QFont;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace Core { namespace Core {
namespace Internal { namespace Internal {
class SearchResultWindowPrivate; class SearchResultWindowPrivate;
class SearchResultWidget; class SearchResultWidget;
@@ -31,7 +31,7 @@ class CORE_EXPORT SearchResultFilter : public QObject
public: public:
virtual QWidget *createWidget() = 0; virtual QWidget *createWidget() = 0;
virtual bool matches(const SearchResultItem &item) const = 0; virtual bool matches(const Utils::SearchResultItem &item) const = 0;
signals: signals:
void filterChanged(); void filterChanged();
@@ -59,8 +59,8 @@ public:
bool isInteractive() const { return !m_finishedHandler; } bool isInteractive() const { return !m_finishedHandler; }
public slots: public slots:
void addResult(const SearchResultItem &item); void addResult(const Utils::SearchResultItem &item);
void addResults(const QList<SearchResultItem> &items, AddMode mode); void addResults(const QList<Utils::SearchResultItem> &items, AddMode mode);
void setFilter(SearchResultFilter *filter); // Takes ownership void setFilter(SearchResultFilter *filter); // Takes ownership
void finishSearch(bool canceled, const QString &reason = {}); void finishSearch(bool canceled, const QString &reason = {});
void setTextToReplace(const QString &textToReplace); void setTextToReplace(const QString &textToReplace);
@@ -70,8 +70,8 @@ public slots:
void popup(); void popup();
signals: signals:
void activated(const Core::SearchResultItem &item); void activated(const Utils::SearchResultItem &item);
void replaceButtonClicked(const QString &replaceText, const QList<Core::SearchResultItem> &checkedItems, bool preserveCase); void replaceButtonClicked(const QString &replaceText, const QList<Utils::SearchResultItem> &checkedItems, bool preserveCase);
void replaceTextChanged(const QString &replaceText); void replaceTextChanged(const QString &replaceText);
void canceled(); void canceled();
void paused(bool paused); void paused(bool paused);
@@ -125,7 +125,7 @@ public:
void goToPrev() override; void goToPrev() override;
bool canNavigate() const override; bool canNavigate() const override;
void setTextEditorFont(const QFont &font, const SearchResultColors &colors); void setTextEditorFont(const QFont &font, const Utils::SearchResultColors &colors);
void setTabWidth(int width); void setTabWidth(int width);
void openNewSearchPanel(); void openNewSearchPanel();

View File

@@ -743,8 +743,7 @@ void CppFindReferences::findMacroUses(const CPlusPlus::Macro &macro, const QStri
setupSearch(search); setupSearch(search);
SearchResultWindow::instance()->popup(IOutputPane::ModeSwitch | IOutputPane::WithFocus); SearchResultWindow::instance()->popup(IOutputPane::ModeSwitch | IOutputPane::WithFocus);
connect(search, &SearchResult::activated, connect(search, &SearchResult::activated, search, [](const SearchResultItem &item) {
[](const Core::SearchResultItem& item) {
Core::EditorManager::openEditorAtSearchResult(item); Core::EditorManager::openEditorAtSearchResult(item);
}); });

View File

@@ -9,30 +9,29 @@
#include <cplusplus/FindUsages.h> #include <cplusplus/FindUsages.h>
#include <utils/filepath.h> #include <utils/filepath.h>
#include <utils/link.h> #include <utils/link.h>
#include <utils/searchresultitem.h>
#include <QObject>
#include <QPointer>
#include <QFuture> #include <QFuture>
#include <QPointer>
#include <functional> #include <functional>
QT_FORWARD_DECLARE_CLASS(QTimer) QT_BEGIN_NAMESPACE
class QTimer;
QT_END_NAMESPACE
namespace Core { namespace Core { class SearchResult; }
class SearchResultItem;
class SearchResult;
} // namespace Core
namespace CppEditor { namespace CppEditor {
class CppModelManager; class CppModelManager;
Core::SearchResultColor::Style CPPEDITOR_EXPORT Utils::SearchResultColor::Style CPPEDITOR_EXPORT
colorStyleForUsageType(CPlusPlus::Usage::Tags tags); colorStyleForUsageType(CPlusPlus::Usage::Tags tags);
class CPPEDITOR_EXPORT CppSearchResultFilter : public Core::SearchResultFilter class CPPEDITOR_EXPORT CppSearchResultFilter : public Core::SearchResultFilter
{ {
QWidget *createWidget() override; QWidget *createWidget() override;
bool matches(const Core::SearchResultItem &item) const override; bool matches(const Utils::SearchResultItem &item) const override;
void setValue(bool &member, bool value); void setValue(bool &member, bool value);
@@ -79,7 +78,7 @@ public:
private: private:
void setupSearch(Core::SearchResult *search); void setupSearch(Core::SearchResult *search);
void onReplaceButtonClicked(Core::SearchResult *search, const QString &text, void onReplaceButtonClicked(Core::SearchResult *search, const QString &text,
const QList<Core::SearchResultItem> &items, bool preserveCase); const QList<Utils::SearchResultItem> &items, bool preserveCase);
void searchAgain(Core::SearchResult *search); void searchAgain(Core::SearchResult *search);
void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context, void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context,

View File

@@ -10,13 +10,13 @@
#include "cppsourceprocessor.h" #include "cppsourceprocessor.h"
#include "searchsymbols.h" #include "searchsymbols.h"
#include <coreplugin/find/searchresultitem.h>
#include <coreplugin/progressmanager/progressmanager.h> #include <coreplugin/progressmanager/progressmanager.h>
#include <cplusplus/LookupContext.h> #include <cplusplus/LookupContext.h>
#include <utils/async.h> #include <utils/async.h>
#include <utils/filepath.h> #include <utils/filepath.h>
#include <utils/searchresultitem.h>
#include <utils/stringutils.h> #include <utils/stringutils.h>
#include <utils/temporarydirectory.h> #include <utils/temporarydirectory.h>
@@ -54,7 +54,7 @@ class WriteTaskFileForDiagnostics
public: public:
WriteTaskFileForDiagnostics() WriteTaskFileForDiagnostics()
{ {
const QString fileName = Utils::TemporaryDirectory::masterDirectoryPath() const QString fileName = TemporaryDirectory::masterDirectoryPath()
+ "/qtc_findErrorsIndexing.diagnostics." + "/qtc_findErrorsIndexing.diagnostics."
+ QDateTime::currentDateTime().toString("yyMMdd_HHmm") + ".tasks"; + QDateTime::currentDateTime().toString("yyMMdd_HHmm") + ".tasks";
@@ -139,7 +139,7 @@ void indexFindErrors(QPromise<void> &promise, const ParseParams params)
BuiltinEditorDocumentParser parser(FilePath::fromString(file)); BuiltinEditorDocumentParser parser(FilePath::fromString(file));
parser.setReleaseSourceAndAST(false); parser.setReleaseSourceAndAST(false);
parser.update({CppModelManager::instance()->workingCopy(), nullptr, parser.update({CppModelManager::instance()->workingCopy(), nullptr,
Utils::Language::Cxx, false}); Language::Cxx, false});
CPlusPlus::Document::Ptr document = parser.document(); CPlusPlus::Document::Ptr document = parser.document();
QTC_ASSERT(document, return); QTC_ASSERT(document, return);
@@ -241,7 +241,7 @@ void parse(QPromise<void> &promise, const ParseParams params)
} // anonymous namespace } // anonymous namespace
void SymbolSearcher::runSearch(QPromise<Core::SearchResultItem> &promise) void SymbolSearcher::runSearch(QPromise<SearchResultItem> &promise)
{ {
promise.setProgressRange(0, m_snapshot.size()); promise.setProgressRange(0, m_snapshot.size());
promise.setProgressValue(0); promise.setProgressValue(0);
@@ -264,7 +264,7 @@ void SymbolSearcher::runSearch(QPromise<Core::SearchResultItem> &promise)
if (promise.isCanceled()) if (promise.isCanceled())
break; break;
if (m_fileNames.isEmpty() || m_fileNames.contains(it.value()->filePath().path())) { if (m_fileNames.isEmpty() || m_fileNames.contains(it.value()->filePath().path())) {
QVector<Core::SearchResultItem> resultItems; QList<SearchResultItem> resultItems;
auto filter = [&](const IndexItem::Ptr &info) -> IndexItem::VisitorResult { auto filter = [&](const IndexItem::Ptr &info) -> IndexItem::VisitorResult {
if (matcher.match(info->symbolName()).hasMatch()) { if (matcher.match(info->symbolName()).hasMatch()) {
QString text = info->symbolName(); QString text = info->symbolName();
@@ -277,7 +277,7 @@ void SymbolSearcher::runSearch(QPromise<Core::SearchResultItem> &promise)
text = info->representDeclaration(); text = info->representDeclaration();
} }
Core::SearchResultItem item; SearchResultItem item;
item.setPath(scope.split(QLatin1String("::"), Qt::SkipEmptyParts)); item.setPath(scope.split(QLatin1String("::"), Qt::SkipEmptyParts));
item.setLineText(text); item.setLineText(text);
item.setIcon(info->icon()); item.setIcon(info->icon());
@@ -288,7 +288,7 @@ void SymbolSearcher::runSearch(QPromise<Core::SearchResultItem> &promise)
return IndexItem::Recurse; return IndexItem::Recurse;
}; };
search(it.value())->visitAllChildren(filter); search(it.value())->visitAllChildren(filter);
for (const Core::SearchResultItem &item : std::as_const(resultItems)) for (const SearchResultItem &item : std::as_const(resultItems))
promise.addResult(item); promise.addResult(item);
} }
++it; ++it;

View File

@@ -11,7 +11,7 @@
#include <QFuture> #include <QFuture>
namespace Core { class SearchResultItem; } namespace Utils { class SearchResultItem; }
namespace CppEditor { namespace CppEditor {
@@ -44,7 +44,7 @@ public:
}; };
SymbolSearcher(const SymbolSearcher::Parameters &parameters, const QSet<QString> &fileNames); SymbolSearcher(const SymbolSearcher::Parameters &parameters, const QSet<QString> &fileNames);
void runSearch(QPromise<Core::SearchResultItem> &promise); void runSearch(QPromise<Utils::SearchResultItem> &promise);
private: private:
const CPlusPlus::Snapshot m_snapshot; const CPlusPlus::Snapshot m_snapshot;

View File

@@ -35,10 +35,10 @@ public:
return m_symbolName == other.m_symbolName && m_scope == other.m_scope; return m_symbolName == other.m_symbolName && m_scope == other.m_scope;
} }
static ResultDataList fromSearchResultList(const QList<Core::SearchResultItem> &entries) static ResultDataList fromSearchResultList(const QList<Utils::SearchResultItem> &entries)
{ {
ResultDataList result; ResultDataList result;
for (const Core::SearchResultItem &entry : entries) for (const Utils::SearchResultItem &entry : entries)
result << ResultData(entry.lineText(), entry.path().join(QLatin1String("::"))); result << ResultData(entry.lineText(), entry.path().join(QLatin1String("::")));
return result; return result;
} }
@@ -77,7 +77,7 @@ public:
const QScopedPointer<SymbolSearcher> symbolSearcher( const QScopedPointer<SymbolSearcher> symbolSearcher(
new SymbolSearcher(searchParameters, QSet<QString>{testFile})); new SymbolSearcher(searchParameters, QSet<QString>{testFile}));
QFuture<Core::SearchResultItem> search QFuture<Utils::SearchResultItem> search
= Utils::asyncRun(&SymbolSearcher::runSearch, symbolSearcher.data()); = Utils::asyncRun(&SymbolSearcher::runSearch, symbolSearcher.data());
search.waitForFinished(); search.waitForFinished();
ResultDataList results = ResultData::fromSearchResultList(search.results()); ResultDataList results = ResultData::fromSearchResultList(search.results());

View File

@@ -6,7 +6,6 @@
#include "searchsymbols.h" #include "searchsymbols.h"
#include <coreplugin/find/ifindfilter.h> #include <coreplugin/find/ifindfilter.h>
#include <coreplugin/find/searchresultitem.h>
#include <coreplugin/find/searchresultwindow.h> #include <coreplugin/find/searchresultwindow.h>
#include <QFutureWatcher> #include <QFutureWatcher>
@@ -16,6 +15,7 @@
#include <QRadioButton> #include <QRadioButton>
namespace Core { class SearchResult; } namespace Core { class SearchResult; }
namespace Utils { class SearchResultItem; }
namespace CppEditor { namespace CppEditor {
class CppModelManager; class CppModelManager;
@@ -52,10 +52,10 @@ signals:
void symbolsToSearchChanged(); void symbolsToSearchChanged();
private: private:
void openEditor(const Core::SearchResultItem &item); void openEditor(const Utils::SearchResultItem &item);
void addResults(QFutureWatcher<Core::SearchResultItem> *watcher, int begin, int end); void addResults(QFutureWatcher<Utils::SearchResultItem> *watcher, int begin, int end);
void finish(QFutureWatcher<Core::SearchResultItem> *watcher); void finish(QFutureWatcher<Utils::SearchResultItem> *watcher);
void cancel(Core::SearchResult *search); void cancel(Core::SearchResult *search);
void setPaused(Core::SearchResult *search, bool paused); void setPaused(Core::SearchResult *search, bool paused);
void onTaskStarted(Utils::Id type); void onTaskStarted(Utils::Id type);
@@ -67,7 +67,7 @@ private:
CppModelManager *m_manager; CppModelManager *m_manager;
bool m_enabled; bool m_enabled;
QMap<QFutureWatcher<Core::SearchResultItem> *, QPointer<Core::SearchResult> > m_watchers; QMap<QFutureWatcher<Utils::SearchResultItem> *, QPointer<Core::SearchResult> > m_watchers;
QPointer<Core::SearchResult> m_currentSearch; QPointer<Core::SearchResult> m_currentSearch;
SearchSymbols::SymbolTypes m_symbolsToSearch; SearchSymbols::SymbolTypes m_symbolsToSearch;
SearchScope m_scope; SearchScope m_scope;

View File

@@ -5,9 +5,14 @@
#include <texteditor/basefilefind.h> #include <texteditor/basefilefind.h>
QT_FORWARD_DECLARE_CLASS(QCheckBox); QT_BEGIN_NAMESPACE
class QCheckBox;
QT_END_NAMESPACE
namespace Utils { class FancyLineEdit; } namespace Utils {
class FancyLineEdit;
class SearchResultItem;
}
namespace Git::Internal { namespace Git::Internal {
@@ -28,7 +33,7 @@ public:
QFuture<Utils::FileSearchResultList> executeSearch( QFuture<Utils::FileSearchResultList> executeSearch(
const TextEditor::FileFindParameters &parameters, const TextEditor::FileFindParameters &parameters,
TextEditor::BaseFileFind *baseFileFind) override; TextEditor::BaseFileFind *baseFileFind) override;
Core::IEditor *openEditor(const Core::SearchResultItem &item, Core::IEditor *openEditor(const Utils::SearchResultItem &item,
const TextEditor::FileFindParameters &parameters) override; const TextEditor::FileFindParameters &parameters) override;
private: private:

View File

@@ -193,7 +193,7 @@ bool SymbolSupport::supportsFindUsages(TextEditor::TextDocument *document) const
struct ItemData struct ItemData
{ {
Core::Search::TextRange range; Utils::Search::TextRange range;
QVariant userData; QVariant userData;
}; };
@@ -216,12 +216,12 @@ QStringList SymbolSupport::getFileContents(const Utils::FilePath &filePath)
return fileContent.split("\n"); return fileContent.split("\n");
} }
QList<Core::SearchResultItem> generateSearchResultItems( QList<Utils::SearchResultItem> generateSearchResultItems(
const QMap<Utils::FilePath, QList<ItemData>> &rangesInDocument, const QMap<Utils::FilePath, QList<ItemData>> &rangesInDocument,
Core::SearchResult *search = nullptr, Core::SearchResult *search = nullptr,
bool limitToProjects = false) bool limitToProjects = false)
{ {
QList<Core::SearchResultItem> result; QList<Utils::SearchResultItem> result;
const bool renaming = search && search->supportsReplace(); const bool renaming = search && search->supportsReplace();
QString oldSymbolName; QString oldSymbolName;
QVariantList userData; QVariantList userData;
@@ -233,7 +233,7 @@ QList<Core::SearchResultItem> generateSearchResultItems(
for (auto it = rangesInDocument.begin(); it != rangesInDocument.end(); ++it) { for (auto it = rangesInDocument.begin(); it != rangesInDocument.end(); ++it) {
const Utils::FilePath &filePath = it.key(); const Utils::FilePath &filePath = it.key();
Core::SearchResultItem item; Utils::SearchResultItem item;
item.setFilePath(filePath); item.setFilePath(filePath);
item.setUseTextEditorFont(true); item.setUseTextEditorFont(true);
if (renaming && limitToProjects) { if (renaming && limitToProjects) {
@@ -264,7 +264,7 @@ QList<Core::SearchResultItem> generateSearchResultItems(
return result; return result;
} }
QList<Core::SearchResultItem> generateSearchResultItems( QList<Utils::SearchResultItem> generateSearchResultItems(
const LanguageClientArray<Location> &locations, const DocumentUri::PathMapper &pathMapper) const LanguageClientArray<Location> &locations, const DocumentUri::PathMapper &pathMapper)
{ {
if (locations.isNull()) if (locations.isNull())
@@ -291,7 +291,7 @@ void SymbolSupport::handleFindReferencesResponse(const FindReferencesRequest::Re
Tr::tr("Find References with %1 for:").arg(m_client->name()), "", wordUnderCursor); Tr::tr("Find References with %1 for:").arg(m_client->name()), "", wordUnderCursor);
search->addResults(generateSearchResultItems(*result, m_client->hostPathMapper()), search->addResults(generateSearchResultItems(*result, m_client->hostPathMapper()),
Core::SearchResult::AddOrdered); Core::SearchResult::AddOrdered);
connect(search, &Core::SearchResult::activated, [](const Core::SearchResultItem &item) { connect(search, &Core::SearchResult::activated, [](const Utils::SearchResultItem &item) {
Core::EditorManager::openEditorAtSearchResult(item); Core::EditorManager::openEditorAtSearchResult(item);
}); });
search->finishSearch(false); search->finishSearch(false);
@@ -463,7 +463,7 @@ void SymbolSupport::requestRename(const TextDocumentPositionParams &positionPara
search->popup(); search->popup();
} }
QList<Core::SearchResultItem> generateReplaceItems(const WorkspaceEdit &edits, QList<Utils::SearchResultItem> generateReplaceItems(const WorkspaceEdit &edits,
Core::SearchResult *search, Core::SearchResult *search,
bool limitToProjects, bool limitToProjects,
const DocumentUri::PathMapper &pathMapper) const DocumentUri::PathMapper &pathMapper)
@@ -506,7 +506,7 @@ Core::SearchResult *SymbolSupport::createSearch(const TextDocumentPositionParams
if (callback) if (callback)
search->makeNonInteractive(callback); search->makeNonInteractive(callback);
connect(search, &Core::SearchResult::activated, [](const Core::SearchResultItem &item) { connect(search, &Core::SearchResult::activated, [](const Utils::SearchResultItem &item) {
Core::EditorManager::openEditorAtSearchResult(item); Core::EditorManager::openEditorAtSearchResult(item);
}); });
connect(search, &Core::SearchResult::replaceTextChanged, this, [this, search, positionParams]() { connect(search, &Core::SearchResult::replaceTextChanged, this, [this, search, positionParams]() {
@@ -524,7 +524,7 @@ Core::SearchResult *SymbolSupport::createSearch(const TextDocumentPositionParams
connect(search, &Core::SearchResult::replaceButtonClicked, this, connect(search, &Core::SearchResult::replaceButtonClicked, this,
[this, search, resetConnection](const QString & /*replaceText*/, [this, search, resetConnection](const QString & /*replaceText*/,
const QList<Core::SearchResultItem> &checkedItems) { const QList<Utils::SearchResultItem> &checkedItems) {
applyRename(checkedItems, search); applyRename(checkedItems, search);
disconnect(resetConnection); disconnect(resetConnection);
}); });
@@ -571,12 +571,12 @@ void SymbolSupport::handleRenameResponse(Core::SearchResult *search,
} }
} }
void SymbolSupport::applyRename(const QList<Core::SearchResultItem> &checkedItems, void SymbolSupport::applyRename(const QList<Utils::SearchResultItem> &checkedItems,
Core::SearchResult *search) Core::SearchResult *search)
{ {
QSet<Utils::FilePath> affectedNonOpenFilePaths; QSet<Utils::FilePath> affectedNonOpenFilePaths;
QMap<Utils::FilePath, QList<TextEdit>> editsForDocuments; QMap<Utils::FilePath, QList<TextEdit>> editsForDocuments;
for (const Core::SearchResultItem &item : checkedItems) { for (const Utils::SearchResultItem &item : checkedItems) {
const auto filePath = Utils::FilePath::fromString(item.path().value(0)); const auto filePath = Utils::FilePath::fromString(item.path().value(0));
if (!m_client->documentForFilePath(filePath)) if (!m_client->documentForFilePath(filePath))
affectedNonOpenFilePaths << filePath; affectedNonOpenFilePaths << filePath;
@@ -616,12 +616,12 @@ QString SymbolSupport::derivePlaceholder(const QString &oldSymbol, const QString
return m_defaultSymbolMapper ? m_defaultSymbolMapper(oldSymbol) : oldSymbol; return m_defaultSymbolMapper ? m_defaultSymbolMapper(oldSymbol) : oldSymbol;
} }
Core::Search::TextRange SymbolSupport::convertRange(const Range &range) Utils::Search::TextRange SymbolSupport::convertRange(const Range &range)
{ {
auto convertPosition = [](const Position &pos) { const auto convertPosition = [](const Position &pos) {
return Core::Search::TextPosition(pos.line() + 1, pos.character()); return Utils::Search::TextPosition{pos.line() + 1, pos.character()};
}; };
return Core::Search::TextRange(convertPosition(range.start()), convertPosition(range.end())); return {convertPosition(range.start()), convertPosition(range.end())};
} }
void SymbolSupport::setDefaultRenamingSymbolMapper(const SymbolMapper &mapper) void SymbolSupport::setDefaultRenamingSymbolMapper(const SymbolMapper &mapper)

View File

@@ -5,18 +5,15 @@
#include "languageclient_global.h" #include "languageclient_global.h"
#include <coreplugin/find/searchresultitem.h>
#include <texteditor/textdocument.h> #include <texteditor/textdocument.h>
#include <languageserverprotocol/languagefeatures.h> #include <languageserverprotocol/languagefeatures.h>
#include <utils/searchresultitem.h>
#include <functional> #include <functional>
namespace Core { namespace Core { class SearchResult; }
class SearchResult;
class SearchResultItem;
}
namespace LanguageServerProtocol { class MessageId; } namespace LanguageServerProtocol { class MessageId; }
namespace LanguageClient { namespace LanguageClient {
@@ -46,7 +43,7 @@ public:
const std::function<void()> &callback = {}, const std::function<void()> &callback = {},
bool preferLowerCaseFileNames = true); bool preferLowerCaseFileNames = true);
static Core::Search::TextRange convertRange(const LanguageServerProtocol::Range &range); static Utils::Search::TextRange convertRange(const LanguageServerProtocol::Range &range);
static QStringList getFileContents(const Utils::FilePath &filePath); static QStringList getFileContents(const Utils::FilePath &filePath);
using SymbolMapper = std::function<QString(const QString &)>; using SymbolMapper = std::function<QString(const QString &)>;
@@ -76,7 +73,7 @@ private:
const std::function<void()> &callback, bool preferLowerCaseFileNames); const std::function<void()> &callback, bool preferLowerCaseFileNames);
void handleRenameResponse(Core::SearchResult *search, void handleRenameResponse(Core::SearchResult *search,
const LanguageServerProtocol::RenameRequest::Response &response); const LanguageServerProtocol::RenameRequest::Response &response);
void applyRename(const QList<Core::SearchResultItem> &checkedItems, Core::SearchResult *search); void applyRename(const QList<Utils::SearchResultItem> &checkedItems, Core::SearchResult *search);
QString derivePlaceholder(const QString &oldSymbol, const QString &newSymbol); QString derivePlaceholder(const QString &oldSymbol, const QString &newSymbol);
Client *m_client = nullptr; Client *m_client = nullptr;

View File

@@ -992,7 +992,7 @@ void FindReferences::displayResults(int first, int last)
this, &FindReferences::onReplaceButtonClicked); this, &FindReferences::onReplaceButtonClicked);
} }
connect(m_currentSearch.data(), &SearchResult::activated, connect(m_currentSearch.data(), &SearchResult::activated,
[](const Core::SearchResultItem& item) { [](const Utils::SearchResultItem& item) {
Core::EditorManager::openEditorAtSearchResult(item); Core::EditorManager::openEditorAtSearchResult(item);
}); });
connect(m_currentSearch.data(), &SearchResult::canceled, this, &FindReferences::cancel); connect(m_currentSearch.data(), &SearchResult::canceled, this, &FindReferences::cancel);
@@ -1013,7 +1013,7 @@ void FindReferences::displayResults(int first, int last)
} }
for (int index = first; index != last; ++index) { for (int index = first; index != last; ++index) {
Usage result = m_watcher.future().resultAt(index); Usage result = m_watcher.future().resultAt(index);
SearchResultItem item; Utils::SearchResultItem item;
item.setFilePath(result.path); item.setFilePath(result.path);
item.setLineText(result.lineText); item.setLineText(result.lineText);
item.setMainRange(result.line, result.col, result.len); item.setMainRange(result.line, result.col, result.len);
@@ -1041,7 +1041,8 @@ void FindReferences::setPaused(bool paused)
m_watcher.setPaused(paused); m_watcher.setPaused(paused);
} }
void FindReferences::onReplaceButtonClicked(const QString &text, const QList<SearchResultItem> &items, bool preserveCase) void FindReferences::onReplaceButtonClicked(const QString &text,
const QList<Utils::SearchResultItem> &items, bool preserveCase)
{ {
const Utils::FilePaths filePaths = TextEditor::BaseFileFind::replaceAll(text, const Utils::FilePaths filePaths = TextEditor::BaseFileFind::replaceAll(text,
items, items,

View File

@@ -7,6 +7,7 @@
#include <utils/filepath.h> #include <utils/filepath.h>
#include <utils/futuresynchronizer.h> #include <utils/futuresynchronizer.h>
#include <utils/searchresultitem.h>
#include <QObject> #include <QObject>
#include <QFutureWatcher> #include <QFutureWatcher>
@@ -14,10 +15,7 @@
QT_FORWARD_DECLARE_CLASS(QTimer) QT_FORWARD_DECLARE_CLASS(QTimer)
namespace Core { namespace Core { class SearchResult; }
class SearchResultItem;
class SearchResult;
} // namespace Core
namespace QmlJSEditor { namespace QmlJSEditor {
@@ -64,7 +62,8 @@ private:
void searchFinished(); void searchFinished();
void cancel(); void cancel();
void setPaused(bool paused); void setPaused(bool paused);
void onReplaceButtonClicked(const QString &text, const QList<Core::SearchResultItem> &items, bool preserveCase); void onReplaceButtonClicked(const QString &text, const QList<Utils::SearchResultItem> &items,
bool preserveCase);
QPointer<Core::SearchResult> m_currentSearch; QPointer<Core::SearchResult> m_currentSearch;
QFutureWatcher<Usage> m_watcher; QFutureWatcher<Usage> m_watcher;

View File

@@ -33,7 +33,7 @@ public:
void writeSettings(QSettings *settings) const override; void writeSettings(QSettings *settings) const override;
QFuture<Utils::FileSearchResultList> executeSearch( QFuture<Utils::FileSearchResultList> executeSearch(
const TextEditor::FileFindParameters &parameters, TextEditor::BaseFileFind *) override; const TextEditor::FileFindParameters &parameters, TextEditor::BaseFileFind *) override;
Core::IEditor *openEditor(const Core::SearchResultItem &item, Core::IEditor *openEditor(const Utils::SearchResultItem &item,
const TextEditor::FileFindParameters &parameters) override; const TextEditor::FileFindParameters &parameters) override;
private: private:

View File

@@ -51,7 +51,7 @@ public:
QVariant parameters() const override { return {}; } QVariant parameters() const override { return {}; }
void readSettings(QSettings * /*settings*/) override {} void readSettings(QSettings * /*settings*/) override {}
void writeSettings(QSettings * /*settings*/) const override {} void writeSettings(QSettings * /*settings*/) const override {}
QFuture<Utils::FileSearchResultList> executeSearch( QFuture<FileSearchResultList> executeSearch(
const TextEditor::FileFindParameters &parameters, const TextEditor::FileFindParameters &parameters,
BaseFileFind *baseFileFind) override BaseFileFind *baseFileFind) override
{ {
@@ -65,7 +65,7 @@ public:
TextDocument::openedTextDocumentContents()); TextDocument::openedTextDocumentContents());
} }
Core::IEditor *openEditor(const Core::SearchResultItem &/*item*/, Core::IEditor *openEditor(const SearchResultItem &/*item*/,
const TextEditor::FileFindParameters &/*parameters*/) override const TextEditor::FileFindParameters &/*parameters*/) override
{ {
return nullptr; return nullptr;

View File

@@ -4,20 +4,24 @@
#pragma once #pragma once
#include "texteditor_global.h" #include "texteditor_global.h"
#include <utils/filesearch.h>
#include <coreplugin/find/ifindfilter.h> #include <coreplugin/find/ifindfilter.h>
#include <coreplugin/find/searchresultwindow.h> #include <coreplugin/find/searchresultwindow.h>
#include <utils/filesearch.h>
#include <utils/searchresultitem.h>
#include <QFuture> #include <QFuture>
namespace Utils { class FileIterator; }
namespace Core { namespace Core {
class IEditor; class IEditor;
class SearchResult; class SearchResult;
class SearchResultItem;
} // namespace Core } // namespace Core
namespace Utils {
class FileIterator;
}
namespace TextEditor { namespace TextEditor {
namespace Internal { namespace Internal {
@@ -54,7 +58,7 @@ public:
virtual void writeSettings(QSettings *settings) const = 0; virtual void writeSettings(QSettings *settings) const = 0;
virtual QFuture<Utils::FileSearchResultList> executeSearch( virtual QFuture<Utils::FileSearchResultList> executeSearch(
const FileFindParameters &parameters, BaseFileFind *baseFileFind) = 0; const FileFindParameters &parameters, BaseFileFind *baseFileFind) = 0;
virtual Core::IEditor *openEditor(const Core::SearchResultItem &item, virtual Core::IEditor *openEditor(const Utils::SearchResultItem &item,
const FileFindParameters &parameters) = 0; const FileFindParameters &parameters) = 0;
bool isEnabled() const; bool isEnabled() const;
void setEnabled(bool enabled); void setEnabled(bool enabled);
@@ -82,7 +86,7 @@ public:
/* returns the list of unique files that were passed in items */ /* returns the list of unique files that were passed in items */
static Utils::FilePaths replaceAll(const QString &txt, static Utils::FilePaths replaceAll(const QString &txt,
const QList<Core::SearchResultItem> &items, const QList<Utils::SearchResultItem> &items,
bool preserveCase = false); bool preserveCase = false);
virtual Utils::FileIterator *files(const QStringList &nameFilters, virtual Utils::FileIterator *files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
@@ -111,9 +115,9 @@ signals:
void currentSearchEngineChanged(); void currentSearchEngineChanged();
private: private:
void openEditor(Core::SearchResult *result, const Core::SearchResultItem &item); void openEditor(Core::SearchResult *result, const Utils::SearchResultItem &item);
void doReplace(const QString &txt, void doReplace(const QString &txt,
const QList<Core::SearchResultItem> &items, const QList<Utils::SearchResultItem> &items,
bool preserveCase); bool preserveCase);
void hideHighlightAll(bool visible); void hideHighlightAll(bool visible);
void searchAgain(Core::SearchResult *search); void searchAgain(Core::SearchResult *search);

View File

@@ -3,9 +3,9 @@
#pragma once #pragma once
#include <coreplugin/find/searchresultitem.h> #include <utils/searchresultitem.h>
namespace Core { namespace Utils {
namespace Search { namespace Search {
inline inline