summaryrefslogtreecommitdiff
path: root/src/plugins/languageclient/languageclientsettings.h
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2021-02-08 11:24:28 +0100
committerDavid Schulz <david.schulz@qt.io>2021-02-16 11:35:24 +0000
commit8106a01e9ca6e59be105b2f755789c6bd2cce167 (patch)
tree9d97fc93c7e64a280d881667088598ce94e2733c /src/plugins/languageclient/languageclientsettings.h
parent7dc82b1af941040a8e1aea6cff5438b757c7c051 (diff)
downloadqt-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.h17
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);