diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2021-04-29 15:02:25 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2021-05-03 07:24:05 +0000 |
commit | c63148fa2129783e267f3d07e101fbdacfff047c (patch) | |
tree | ffe4fef6dc9d7087b93d492681cf03e817c4b687 /src/plugins/cpptools/cppfindreferences.cpp | |
parent | 248ebb494d6902bb743b162a93429fba28968bf3 (diff) | |
download | qt-creator-c63148fa2129783e267f3d07e101fbdacfff047c.tar.gz |
CppTools: Export some symbol search-related functionality
We want to re-use it elsewhere.
Change-Id: Iefd8464c56ddc8bb2fc5a3349cd833b094c61da7
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cppfindreferences.cpp')
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.cpp | 152 |
1 files changed, 76 insertions, 76 deletions
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 64b7244e2b..3ac9bcdf1d 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -55,10 +55,80 @@ #include <functional> using namespace Core; -using namespace CppTools::Internal; -using namespace CppTools; using namespace ProjectExplorer; +namespace CppTools { + +SearchResultColor::Style colorStyleForUsageType(CPlusPlus::Usage::Type type) +{ + switch (type) { + case CPlusPlus::Usage::Type::Read: + return SearchResultColor::Style::Alt1; + case CPlusPlus::Usage::Type::Initialization: + case CPlusPlus::Usage::Type::Write: + case CPlusPlus::Usage::Type::WritableRef: + return SearchResultColor::Style::Alt2; + case CPlusPlus::Usage::Type::Declaration: + case CPlusPlus::Usage::Type::Other: + return SearchResultColor::Style::Default; + } + return SearchResultColor::Style::Default; // For dumb compilers. +} + +QWidget *CppSearchResultFilter::createWidget() +{ + const auto widget = new QWidget; + const auto layout = new QVBoxLayout(widget); + layout->setContentsMargins(0, 0, 0, 0); + const auto readsCheckBox = new QCheckBox(Internal::CppFindReferences::tr("Reads")); + readsCheckBox->setChecked(m_showReads); + const auto writesCheckBox = new QCheckBox(Internal::CppFindReferences::tr("Writes")); + writesCheckBox->setChecked(m_showWrites); + const auto declsCheckBox = new QCheckBox(Internal::CppFindReferences::tr("Declarations")); + declsCheckBox->setChecked(m_showDecls); + const auto otherCheckBox = new QCheckBox(Internal::CppFindReferences::tr("Other")); + otherCheckBox->setChecked(m_showOther); + layout->addWidget(readsCheckBox); + layout->addWidget(writesCheckBox); + layout->addWidget(declsCheckBox); + layout->addWidget(otherCheckBox); + connect(readsCheckBox, &QCheckBox::toggled, + this, [this](bool checked) { setValue(m_showReads, checked); }); + connect(writesCheckBox, &QCheckBox::toggled, + this, [this](bool checked) { setValue(m_showWrites, checked); }); + connect(declsCheckBox, &QCheckBox::toggled, + this, [this](bool checked) { setValue(m_showDecls, checked); }); + connect(otherCheckBox, &QCheckBox::toggled, + this, [this](bool checked) { setValue(m_showOther, checked); }); + return widget; +} + +bool CppSearchResultFilter::matches(const SearchResultItem &item) const +{ + switch (static_cast<CPlusPlus::Usage::Type>(item.userData().toInt())) { + case CPlusPlus::Usage::Type::Read: + return m_showReads; + case CPlusPlus::Usage::Type::Write: + case CPlusPlus::Usage::Type::WritableRef: + case CPlusPlus::Usage::Type::Initialization: + return m_showWrites; + case CPlusPlus::Usage::Type::Declaration: + return m_showDecls; + case CPlusPlus::Usage::Type::Other: + return m_showOther; + } + return false; +} + +void CppSearchResultFilter::setValue(bool &member, bool value) +{ + member = value; + emit filterChanged(); +} + +namespace Internal { + + static QByteArray getSource(const Utils::FilePath &fileName, const WorkingCopy &workingCopy) { @@ -171,65 +241,6 @@ static QList<QByteArray> fullIdForSymbol(CPlusPlus::Symbol *symbol) namespace { -class Filter : public Core::SearchResultFilter -{ - QWidget *createWidget() override - { - const auto widget = new QWidget; - const auto layout = new QVBoxLayout(widget); - layout->setContentsMargins(0, 0, 0, 0); - const auto readsCheckBox = new QCheckBox(CppFindReferences::tr("Reads")); - readsCheckBox->setChecked(m_showReads); - const auto writesCheckBox = new QCheckBox(CppFindReferences::tr("Writes")); - writesCheckBox->setChecked(m_showWrites); - const auto declsCheckBox = new QCheckBox(CppFindReferences::tr("Declarations")); - declsCheckBox->setChecked(m_showDecls); - const auto otherCheckBox = new QCheckBox(CppFindReferences::tr("Other")); - otherCheckBox->setChecked(m_showOther); - layout->addWidget(readsCheckBox); - layout->addWidget(writesCheckBox); - layout->addWidget(declsCheckBox); - layout->addWidget(otherCheckBox); - connect(readsCheckBox, &QCheckBox::toggled, - this, [this](bool checked) { setValue(m_showReads, checked); }); - connect(writesCheckBox, &QCheckBox::toggled, - this, [this](bool checked) { setValue(m_showWrites, checked); }); - connect(declsCheckBox, &QCheckBox::toggled, - this, [this](bool checked) { setValue(m_showDecls, checked); }); - connect(otherCheckBox, &QCheckBox::toggled, - this, [this](bool checked) { setValue(m_showOther, checked); }); - return widget; - } - - bool matches(const SearchResultItem &item) const override - { - switch (static_cast<CPlusPlus::Usage::Type>(item.userData().toInt())) { - case CPlusPlus::Usage::Type::Read: - return m_showReads; - case CPlusPlus::Usage::Type::Write: - case CPlusPlus::Usage::Type::WritableRef: - case CPlusPlus::Usage::Type::Initialization: - return m_showWrites; - case CPlusPlus::Usage::Type::Declaration: - return m_showDecls; - case CPlusPlus::Usage::Type::Other: - return m_showOther; - } - return false; - } - - void setValue(bool &member, bool value) - { - member = value; - emit filterChanged(); - } - - bool m_showReads = true; - bool m_showWrites = true; - bool m_showDecls = true; - bool m_showOther = true; -}; - class ProcessFile { const WorkingCopy workingCopy; @@ -400,7 +411,7 @@ void CppFindReferences::findUsages(CPlusPlus::Symbol *symbol, SearchResultWindow::PreserveCaseDisabled, QLatin1String("CppEditor")); search->setTextToReplace(replacement); - search->setFilter(new Filter); + search->setFilter(new CppSearchResultFilter); auto renameFilesCheckBox = new QCheckBox(); renameFilesCheckBox->setVisible(false); search->setAdditionalReplaceWidget(renameFilesCheckBox); @@ -615,20 +626,6 @@ static void displayResults(SearchResult *search, QFutureWatcher<CPlusPlus::Usage { CppFindReferencesParameters parameters = search->userData().value<CppFindReferencesParameters>(); - static const auto colorStyleForUsageType = [](CPlusPlus::Usage::Type type) { - switch (type) { - case CPlusPlus::Usage::Type::Read: - return SearchResultColor::Style::Alt1; - case CPlusPlus::Usage::Type::Initialization: - case CPlusPlus::Usage::Type::Write: - case CPlusPlus::Usage::Type::WritableRef: - return SearchResultColor::Style::Alt2; - case CPlusPlus::Usage::Type::Declaration: - case CPlusPlus::Usage::Type::Other: - return SearchResultColor::Style::Default; - } - return SearchResultColor::Style::Default; // For dumb compilers. - }; for (int index = first; index != last; ++index) { const CPlusPlus::Usage result = watcher->future().resultAt(index); SearchResultItem item; @@ -881,3 +878,6 @@ void CppFindReferences::createWatcher(const QFuture<CPlusPlus::Usage> &future, S watcher->setPendingResultsLimit(1); watcher->setFuture(future); } + +} // namespace Internal +} // namespace CppTools |