diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index 959f3150b90..c4af8fcd0ef 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -277,6 +277,13 @@ QList LanguageClientManager::currentSettings() return managerInstance->m_currentSettings; } +void LanguageClientManager::registerClientSettings(BaseSettings *settings) +{ + QTC_ASSERT(managerInstance, return); + LanguageClientSettings::addSettings(settings); + managerInstance->applySettings(); +} + QVector LanguageClientManager::clientForSetting(const BaseSettings *setting) { QTC_ASSERT(managerInstance, return {}); diff --git a/src/plugins/languageclient/languageclientmanager.h b/src/plugins/languageclient/languageclientmanager.h index 2b9542dc48a..6aba7594b5e 100644 --- a/src/plugins/languageclient/languageclientmanager.h +++ b/src/plugins/languageclient/languageclientmanager.h @@ -75,6 +75,7 @@ public: static void applySettings(); static QList currentSettings(); + static void registerClientSettings(BaseSettings *settings); static QVector clientForSetting(const BaseSettings *setting); static const BaseSettings *settingForClient(Client *setting); static Client *clientForDocument(TextEditor::TextDocument *document); diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp index 5e8261b47c8..9f304417653 100644 --- a/src/plugins/languageclient/languageclientsettings.cpp +++ b/src/plugins/languageclient/languageclientsettings.cpp @@ -100,6 +100,7 @@ public: void reset(const QList &settings); QList settings() const { return m_settings; } + void insertSettings(BaseSettings *settings); QList removed() const { return m_removed; } BaseSettings *settingForIndex(const QModelIndex &index) const; QModelIndex indexForSetting(BaseSettings *setting) const; @@ -146,6 +147,7 @@ public: void finish() override; QList settings() const; + void addSettings(BaseSettings *settings); private: LanguageClientSettingsModel m_model; @@ -304,6 +306,11 @@ QList LanguageClientSettingsPage::settings() const return m_model.settings(); } +void LanguageClientSettingsPage::addSettings(BaseSettings *settings) +{ + m_model.insertSettings(settings); +} + LanguageClientSettingsModel::~LanguageClientSettingsModel() { qDeleteAll(m_settings); @@ -420,6 +427,14 @@ void LanguageClientSettingsModel::reset(const QList &settings) endResetModel(); } +void LanguageClientSettingsModel::insertSettings(BaseSettings *settings) +{ + int row = rowCount(); + beginInsertRows(QModelIndex(), row, row); + m_settings.insert(row, settings); + endInsertRows(); +} + BaseSettings *LanguageClientSettingsModel::settingForIndex(const QModelIndex &index) const { if (!index.isValid() || index.row() >= m_settings.size()) @@ -528,6 +543,11 @@ QList LanguageClientSettings::currentPageSettings() return settingsPage().settings(); } +void LanguageClientSettings::addSettings(BaseSettings *settings) +{ + settingsPage().addSettings(settings); +} + void LanguageClientSettings::toSettings(QSettings *settings, const QList &languageClientSettings) { diff --git a/src/plugins/languageclient/languageclientsettings.h b/src/plugins/languageclient/languageclientsettings.h index 79657409cf0..27437d15386 100644 --- a/src/plugins/languageclient/languageclientsettings.h +++ b/src/plugins/languageclient/languageclientsettings.h @@ -135,6 +135,7 @@ public: static void init(); static QList fromSettings(QSettings *settings); static QList currentPageSettings(); + static void addSettings(BaseSettings *settings); static void toSettings(QSettings *settings, const QList &languageClientSettings); };