diff options
author | David Schulz <david.schulz@qt.io> | 2021-02-08 11:24:28 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2021-02-16 11:35:24 +0000 |
commit | 8106a01e9ca6e59be105b2f755789c6bd2cce167 (patch) | |
tree | 9d97fc93c7e64a280d881667088598ce94e2733c /src/plugins/languageclient/languageclientsettings.h | |
parent | 7dc82b1af941040a8e1aea6cff5438b757c7c051 (diff) | |
download | qt-creator-8106a01e9ca6e59be105b2f755789c6bd2cce167.tar.gz |
LanguageClient: Add generic way to provide specialized settings
Change-Id: Iab482220ec7fd73ecd4cbf3d8b1b121e93148059
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/languageclient/languageclientsettings.h')
-rw-r--r-- | src/plugins/languageclient/languageclientsettings.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/plugins/languageclient/languageclientsettings.h b/src/plugins/languageclient/languageclientsettings.h index c9efb78e48..afd557d7c1 100644 --- a/src/plugins/languageclient/languageclientsettings.h +++ b/src/plugins/languageclient/languageclientsettings.h @@ -83,6 +83,7 @@ public: QString m_name = QString("New Language Server"); QString m_id = QUuid::createUuid().toString(); + Utils::Id m_settingsTypeId; bool m_enabled = true; StartBehavior m_startBehavior = RequiresFile; LanguageFilter m_languageFilter; @@ -137,13 +138,27 @@ protected: StdIOSettings &operator=(StdIOSettings &&other) = default; }; -class LanguageClientSettings +struct ClientType { + Utils::Id id; + QString name; + using SettingsGenerator = std::function<BaseSettings*()>; + SettingsGenerator generator = nullptr; +}; + +class LANGUAGECLIENT_EXPORT LanguageClientSettings { + Q_DECLARE_TR_FUNCTIONS(LanguageClientSettings) public: static void init(); static QList<BaseSettings *> fromSettings(QSettings *settings); static QList<BaseSettings *> pageSettings(); static QList<BaseSettings *> changedSettings(); + + /** + * must be called before the delayed initialize phase + * otherwise the settings are not loaded correctly + */ + static void registerClientType(const ClientType &type); static void addSettings(BaseSettings *settings); static void enableSettings(const QString &id); static void toSettings(QSettings *settings, const QList<BaseSettings *> &languageClientSettings); |