aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangrefactoring/clangqueryprojectsfindfilter.cpp
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2017-07-03 12:35:58 +0200
committerTim Jenssen <tim.jenssen@qt.io>2017-07-20 13:32:39 +0000
commita31eae4d0ad1ffd5a06cd5beff9e16473f929615 (patch)
treefa0ed3976b9c6822fe24a05346f980a5bd8f3026 /src/plugins/clangrefactoring/clangqueryprojectsfindfilter.cpp
parent8c4127ebacd0508f12db79689ef976a814729d91 (diff)
Clang: Add clang query pane
We now support highlighting for an example text and for the query. Change-Id: I88c415ff871cf3e4c2d4fc83d60a8555bf0ce08a Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/clangrefactoring/clangqueryprojectsfindfilter.cpp')
-rw-r--r--src/plugins/clangrefactoring/clangqueryprojectsfindfilter.cpp94
1 files changed, 75 insertions, 19 deletions
diff --git a/src/plugins/clangrefactoring/clangqueryprojectsfindfilter.cpp b/src/plugins/clangrefactoring/clangqueryprojectsfindfilter.cpp
index e22bc7e2ad6..2289746db34 100644
--- a/src/plugins/clangrefactoring/clangqueryprojectsfindfilter.cpp
+++ b/src/plugins/clangrefactoring/clangqueryprojectsfindfilter.cpp
@@ -30,20 +30,23 @@
#include "searchinterface.h"
#include <refactoringserverinterface.h>
-#include <requestsourcerangesanddiagnosticsforquerymessage.h>
+#include <clangrefactoringservermessages.h>
#include <cpptools/clangcompileroptionsbuilder.h>
+#include <QPointer>
+
namespace ClangRefactoring {
ClangQueryProjectsFindFilter::ClangQueryProjectsFindFilter(
ClangBackEnd::RefactoringServerInterface &server,
SearchInterface &searchInterface,
RefactoringClient &refactoringClient)
- : server(server),
- searchInterface(searchInterface),
- refactoringClient(refactoringClient)
+ : m_server(server),
+ m_searchInterface(searchInterface),
+ m_refactoringClient(refactoringClient)
{
+ temporaryFile.open();
}
QString ClangQueryProjectsFindFilter::id() const
@@ -61,19 +64,57 @@ bool ClangQueryProjectsFindFilter::isEnabled() const
return true;
}
-void ClangQueryProjectsFindFilter::findAll(const QString &queryText, Core::FindFlags)
+namespace {
+Utils::SmallString toNative(const QString &path)
{
- searchHandle = searchInterface.startNewSearch(tr("Clang Query"), queryText);
+ Utils::SmallString nativePath = path;
+
+#ifdef Q_OS_WIN
+ nativePath.replace('/', '\\');
+#endif
+
+ return nativePath;
+}
+}
- searchHandle->setRefactoringServer(&server);
+void ClangQueryProjectsFindFilter::requestSourceRangesAndDiagnostics(const QString &queryText,
+ const QString &exampleContent)
+{
+ const QString filePath = temporaryFile.fileName();
- refactoringClient.setSearchHandle(searchHandle.get());
+ ClangBackEnd::RequestSourceRangesAndDiagnosticsForQueryMessage message(queryText,
+ {ClangBackEnd::FilePath(filePath),
+ exampleContent,
+ {"cc", toNative(filePath)}});
+
+ m_server.requestSourceRangesAndDiagnosticsForQueryMessage(std::move(message));
+}
+
+SearchHandle *ClangQueryProjectsFindFilter::find(const QString &queryText)
+{
+ m_searchHandle = m_searchInterface.startNewSearch(tr("Clang Query"), queryText);
+
+ m_searchHandle->setRefactoringServer(&m_server);
+
+ m_refactoringClient.setSearchHandle(m_searchHandle.get());
auto message = createMessage(queryText);
- refactoringClient.setExpectedResultCount(uint(message.sources().size()));
+ m_refactoringClient.setExpectedResultCount(uint(message.sources().size()));
+
+ m_server.requestSourceRangesForQueryMessage(std::move(message));
- server.requestSourceRangesAndDiagnosticsForQueryMessage(std::move(message));
+ return m_searchHandle.get();
+}
+
+void ClangQueryProjectsFindFilter::findAll(const QString &, Core::FindFlags)
+{
+ find(queryText());
+}
+
+bool ClangQueryProjectsFindFilter::showSearchTermInput() const
+{
+ return false;
}
Core::FindFlags ClangQueryProjectsFindFilter::supportedFindFlags() const
@@ -83,28 +124,28 @@ Core::FindFlags ClangQueryProjectsFindFilter::supportedFindFlags() const
void ClangQueryProjectsFindFilter::setProjectParts(const std::vector<CppTools::ProjectPart::Ptr> &projectParts)
{
- this->projectParts = projectParts;
+ this->m_projectParts = projectParts;
}
bool ClangQueryProjectsFindFilter::isUsable() const
{
- return server.isUsable();
+ return m_server.isUsable();
}
void ClangQueryProjectsFindFilter::setUsable(bool isUsable)
{
- server.setUsable(isUsable);
+ m_server.setUsable(isUsable);
}
SearchHandle *ClangQueryProjectsFindFilter::searchHandleForTestOnly() const
{
- return searchHandle.get();
+ return m_searchHandle.get();
}
void ClangQueryProjectsFindFilter::setUnsavedContent(
std::vector<ClangBackEnd::V2::FileContainer> &&unsavedContent)
{
- this->unsavedContent = std::move(unsavedContent);
+ this->m_unsavedContent = std::move(unsavedContent);
}
Utils::SmallStringVector ClangQueryProjectsFindFilter::compilerArguments(CppTools::ProjectPart *projectPart,
@@ -141,6 +182,11 @@ Utils::SmallStringVector ClangQueryProjectsFindFilter::compilerArguments(CppTool
return Utils::SmallStringVector(builder.options());
}
+QWidget *ClangQueryProjectsFindFilter::widget() const
+{
+ return nullptr;
+}
+
namespace {
Utils::SmallStringVector createCommandLine(CppTools::ProjectPart *projectPart,
@@ -205,12 +251,22 @@ createSources(const std::vector<CppTools::ProjectPart::Ptr> &projectParts,
}
-ClangBackEnd::RequestSourceRangesAndDiagnosticsForQueryMessage ClangQueryProjectsFindFilter::createMessage(const QString &queryText) const
+ClangBackEnd::RequestSourceRangesForQueryMessage ClangQueryProjectsFindFilter::createMessage(const QString &queryText) const
{
- return ClangBackEnd::RequestSourceRangesAndDiagnosticsForQueryMessage(
+ return ClangBackEnd::RequestSourceRangesForQueryMessage(
Utils::SmallString(queryText),
- createSources(projectParts, unsavedContent),
- Utils::clone(unsavedContent));
+ createSources(m_projectParts, m_unsavedContent),
+ Utils::clone(m_unsavedContent));
+}
+
+QString ClangQueryProjectsFindFilter::queryText() const
+{
+ return QString();
+}
+
+RefactoringClient &ClangQueryProjectsFindFilter::refactoringClient()
+{
+ return m_refactoringClient;
}