qmlls: port old settings to new ones

Load the values from the BaseAspect settings (where they were
previously stored before the introduction of QmllsClientSettings).
if the new qmlls settings do no exist yet.

Task-number: QTCREATORBUG-31897
Change-Id: I438f1489671ed1843d2390910f46730a270eac6b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Sami Shalayel
2024-11-14 16:06:40 +01:00
parent 68309a5e85
commit 3d3323fa0e

View File

@@ -233,7 +233,6 @@ void QmllsClientSettings::fromMap(const Store &map)
m_generateQmllsIniFiles = map[generateQmllsIniFilesKey].toBool(); m_generateQmllsIniFiles = map[generateQmllsIniFilesKey].toBool();
m_ignoreMinimumQmllsVersion = map[ignoreMinimumQmllsVersionKey].toBool(); m_ignoreMinimumQmllsVersion = map[ignoreMinimumQmllsVersionKey].toBool();
m_useQmllsSemanticHighlighting = map[useQmllsSemanticHighlightingKey].toBool(); m_useQmllsSemanticHighlighting = map[useQmllsSemanticHighlightingKey].toBool();
return;
} }
bool QmllsClientSettings::isEnabledOnProjectFile(const Utils::FilePath &file) const bool QmllsClientSettings::isEnabledOnProjectFile(const Utils::FilePath &file) const
@@ -252,6 +251,34 @@ bool QmllsClientSettings::useQmllsWithBuiltinCodemodelOnProject(const Utils::Fil
return isEnabledOnProject(project); return isEnabledOnProject(project);
} }
// first time initialization: port old settings from the QmlJsEditingSettings AspectContainer
static void portFromOldSettings(QmllsClientSettings* qmllsClientSettings)
{
QtcSettings *settings = BaseAspect::qtcSettings();
const Key baseKey = Key{QmlJSEditor::Constants::SETTINGS_CATEGORY_QML} + "/";
auto portSetting = [&settings](const Key &key, bool *output) {
if (settings->contains(key))
*output = settings->value(key).toBool();
};
constexpr char USE_QMLLS[] = "QmlJSEditor.UseQmlls";
constexpr char USE_LATEST_QMLLS[] = "QmlJSEditor.UseLatestQmlls";
constexpr char DISABLE_BUILTIN_CODEMODEL[] = "QmlJSEditor.DisableBuiltinCodemodel";
constexpr char GENERATE_QMLLS_INI_FILES[] = "QmlJSEditor.GenerateQmllsIniFiles";
constexpr char IGNORE_MINIMUM_QMLLS_VERSION[] = "QmlJSEditor.IgnoreMinimumQmllsVersion";
constexpr char USE_QMLLS_SEMANTIC_HIGHLIGHTING[]
= "QmlJSEditor.EnableQmllsSemanticHighlighting";
portSetting(baseKey + USE_QMLLS, &qmllsClientSettings->m_enabled);
portSetting(baseKey + USE_LATEST_QMLLS, &qmllsClientSettings->m_useLatestQmlls);
portSetting(baseKey + DISABLE_BUILTIN_CODEMODEL, &qmllsClientSettings->m_disableBuiltinCodemodel);
portSetting(baseKey + GENERATE_QMLLS_INI_FILES, &qmllsClientSettings->m_generateQmllsIniFiles);
portSetting(baseKey + IGNORE_MINIMUM_QMLLS_VERSION, &qmllsClientSettings->m_ignoreMinimumQmllsVersion);
portSetting(baseKey + USE_QMLLS_SEMANTIC_HIGHLIGHTING, &qmllsClientSettings->m_useQmllsSemanticHighlighting);
}
void setupQmllsClientSettings() void setupQmllsClientSettings()
{ {
using namespace LanguageClient; using namespace LanguageClient;
@@ -267,6 +294,8 @@ void setupQmllsClientSettings()
if (!savedSettings.isEmpty()) if (!savedSettings.isEmpty())
clientSettings->fromMap(savedSettings.first()); clientSettings->fromMap(savedSettings.first());
else
portFromOldSettings(clientSettings);
LanguageClientManager::registerClientSettings(clientSettings); LanguageClientManager::registerClientSettings(clientSettings);
LanguageClientSettings::registerClientType(type); LanguageClientSettings::registerClientType(type);