diff options
author | David Schulz <david.schulz@qt.io> | 2019-01-31 08:46:23 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2019-02-04 09:43:11 +0000 |
commit | eac1b6059c1abd667457b7a3a6d9f78c49139c30 (patch) | |
tree | d6944f3b8b289ad3636ea5afcd04dfb6826e91d4 /src/plugins/languageclient/languageclientsettings.cpp | |
parent | f7e1354ae563ae6c475ee2e18764127e58073d2b (diff) |
LSP: separate communication interface and client logic
Change-Id: I7d35fa634287b5f858c4a87aa10f99bf18d1ad07
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/languageclient/languageclientsettings.cpp')
-rw-r--r-- | src/plugins/languageclient/languageclientsettings.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp index 36ec211b851..fb30fbe0fc3 100644 --- a/src/plugins/languageclient/languageclientsettings.cpp +++ b/src/plugins/languageclient/languageclientsettings.cpp @@ -28,6 +28,7 @@ #include "baseclient.h" #include "languageclientmanager.h" #include "languageclient_global.h" +#include "languageclientinterface.h" #include <coreplugin/icore.h> #include <utils/algorithm.h> @@ -399,6 +400,13 @@ bool BaseSettings::isValid() const BaseClient *BaseSettings::createClient() const { + BaseClientInterface *interface = createInterface(); + if (QTC_GUARD(interface)) { + auto *client = new BaseClient(interface); + client->setName(m_name); + client->setSupportedLanguage(m_languageFilter); + return client; + } return nullptr; } @@ -467,8 +475,8 @@ bool StdIOSettings::needsRestart() const { if (BaseSettings::needsRestart()) return true; - if (auto stdIOClient = qobject_cast<StdIOClient *>(m_client)) - return stdIOClient->needsRestart(this); + if (auto stdIOInterface = qobject_cast<StdIOClientInterface *>(m_client)) + return stdIOInterface->needsRestart(this); return false; } @@ -477,14 +485,6 @@ bool StdIOSettings::isValid() const return BaseSettings::isValid() && !m_executable.isEmpty(); } -BaseClient *StdIOSettings::createClient() const -{ - auto client = new StdIOClient(m_executable, m_arguments); - client->setName(m_name); - client->setSupportedLanguage(m_languageFilter); - return client; -} - QVariantMap StdIOSettings::toMap() const { QVariantMap map = BaseSettings::toMap(); @@ -500,6 +500,11 @@ void StdIOSettings::fromMap(const QVariantMap &map) m_arguments = map[argumentsKey].toString(); } +BaseClientInterface *StdIOSettings::createInterface() const +{ + return new StdIOClientInterface(m_executable, m_arguments); +} + BaseSettingsWidget::BaseSettingsWidget(const BaseSettings *settings, QWidget *parent) : QWidget(parent) , m_name(new QLineEdit(settings->m_name, this)) |