From 15cf2ecf258d4dedbbbe329bb3cc81ffd49b2f49 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 12 Jan 2023 13:24:15 +0100 Subject: [PATCH] LanguageClient: Export ProgressManager Change-Id: I737b7097878aacf9d1cf5b72af05b1471ab36891 Reviewed-by: Reviewed-by: Christian Kandeler --- src/plugins/clangcodemodel/clangdclient.cpp | 5 +++-- src/plugins/languageclient/client.cpp | 11 ++--------- src/plugins/languageclient/client.h | 6 ++---- src/plugins/languageclient/progressmanager.h | 4 +++- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index b20fd19e42c..886bd434366 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -413,10 +414,10 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir, c setClientCapabilities(caps); setLocatorsEnabled(false); setAutoRequestCodeActions(false); // clangd sends code actions inside diagnostics - setProgressTitleForToken(indexingToken(), + progressManager()->setTitleForToken(indexingToken(), project ? tr("Indexing %1 with clangd").arg(project->displayName()) : tr("Indexing session with clangd")); - setClickHandlerForToken(indexingToken(), [] { + progressManager()->setClickHandlerForToken(indexingToken(), [] { // don't directly open modal dialog from click handler, because that would mess // up the stack QMetaObject::invokeMethod( diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 1866bda8348..70461a86dc3 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -1572,16 +1572,9 @@ void Client::setError(const QString &message) d->m_state = Error; } -void Client::setProgressTitleForToken(const LanguageServerProtocol::ProgressToken &token, - const QString &message) +ProgressManager *Client::progressManager() { - d->m_progressManager.setTitleForToken(token, message); -} - -void Client::setClickHandlerForToken(const LanguageServerProtocol::ProgressToken &token, - const std::function &handler) -{ - d->m_progressManager.setClickHandlerForToken(token, handler); + return &d->m_progressManager; } void Client::handleMessage(const LanguageServerProtocol::JsonRpcMessage &message) diff --git a/src/plugins/languageclient/client.h b/src/plugins/languageclient/client.h index 3d5017de941..9d36ecc9f79 100644 --- a/src/plugins/languageclient/client.h +++ b/src/plugins/languageclient/client.h @@ -42,6 +42,7 @@ class InterfaceController; class LanguageClientCompletionAssistProvider; class LanguageClientQuickFixProvider; class LanguageFilter; +class ProgressManager; class SymbolSupport; class LANGUAGECLIENT_EXPORT Client : public QObject @@ -199,10 +200,7 @@ signals: protected: void setError(const QString &message); - void setProgressTitleForToken(const LanguageServerProtocol::ProgressToken &token, - const QString &message); - void setClickHandlerForToken(const LanguageServerProtocol::ProgressToken &token, - const std::function &handler); + ProgressManager *progressManager(); void handleMessage(const LanguageServerProtocol::JsonRpcMessage &message); virtual void handleDiagnostics(const LanguageServerProtocol::PublishDiagnosticsParams ¶ms); virtual DiagnosticManager *createDiagnosticManager(); diff --git a/src/plugins/languageclient/progressmanager.h b/src/plugins/languageclient/progressmanager.h index c48931f1a1a..e2afaa62ab4 100644 --- a/src/plugins/languageclient/progressmanager.h +++ b/src/plugins/languageclient/progressmanager.h @@ -3,6 +3,8 @@ #pragma once +#include "languageclient_global.h" + #include #include @@ -19,7 +21,7 @@ class WorkDoneProgressEnd; namespace LanguageClient { -class ProgressManager +class LANGUAGECLIENT_EXPORT ProgressManager { public: ProgressManager();