From bdba99c61b2a797f5c903250293949208943a9d7 Mon Sep 17 00:00:00 2001 From: Tuomo Pelkonen Date: Wed, 19 Jan 2022 08:24:14 +0200 Subject: [PATCH] Multilanguage: Add multilanguageSupport option to qmlproject Change-Id: I1fc1861e17dc62cec91f5fa27f7e01360a42de78 Reviewed-by: Qt CI Bot Reviewed-by: Reviewed-by: Thomas Hartmann --- .../fileformat/qmlprojectfileformat.cpp | 5 +++++ .../fileformat/qmlprojectitem.cpp | 5 +++++ .../fileformat/qmlprojectitem.h | 4 ++++ .../qmlprojectmanager/qmlmultilanguageaspect.cpp | 5 +++-- src/plugins/qmlprojectmanager/qmlproject.cpp | 7 +++++++ src/plugins/qmlprojectmanager/qmlproject.h | 1 + .../qmlprojectrunconfiguration.cpp | 16 ++++++++++++---- 7 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp b/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp index 80b2d08ca7e..0b637e24a74 100644 --- a/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp +++ b/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp @@ -99,6 +99,11 @@ QmlProjectItem *QmlProjectFileFormat::parseProjectFile(const Utils::FilePath &fi if (fileSelectorsProperty.isValid()) projectItem->setFileSelectors(fileSelectorsProperty.value.toStringList()); + const auto multilanguageSupportProperty = rootNode->property( + QLatin1String("multilanguageSupport")); + if (multilanguageSupportProperty.isValid()) + projectItem->setMultilanguageSupport(multilanguageSupportProperty.value.toBool()); + const auto languagesProperty = rootNode->property(QLatin1String("supportedLanguages")); if (languagesProperty.isValid()) projectItem->setSupportedLanguages(languagesProperty.value.toStringList()); diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.cpp b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.cpp index 249474a224f..806c873817b 100644 --- a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.cpp +++ b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.cpp @@ -77,6 +77,11 @@ void QmlProjectItem::setFileSelectors(const QStringList &selectors) m_fileSelectors = selectors; } +void QmlProjectItem::setMultilanguageSupport(const bool isEnabled) +{ + m_multilanguageSupport = isEnabled; +} + void QmlProjectItem::setSupportedLanguages(const QStringList &languages) { if (m_supportedLanguages != languages) diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h index a104e906464..01d3b8572e0 100644 --- a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h +++ b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h @@ -63,6 +63,9 @@ public: QStringList fileSelectors() const { return m_fileSelectors; } void setFileSelectors(const QStringList &selectors); + bool multilanguageSupport() const { return m_multilanguageSupport; } + void setMultilanguageSupport(const bool isEnabled); + QStringList supportedLanguages() const { return m_supportedLanguages; } void setSupportedLanguages(const QStringList &languages); @@ -94,6 +97,7 @@ protected: QString m_targetDirectory; QStringList m_importPaths; QStringList m_fileSelectors; + bool m_multilanguageSupport; QStringList m_supportedLanguages; QString m_primaryLanguage; QString m_mainFile; diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp index 662e904974f..cfb2bfaf474 100644 --- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp +++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp @@ -75,8 +75,9 @@ QmlMultiLanguageAspect::QmlMultiLanguageAspect(ProjectExplorer::Target *target) { setVisible(isMultilanguagePresent()); setSettingsKey(Constants::USE_MULTILANGUAGE_KEY); - setLabel(tr("Use MultiLanguage translation database."), BoolAspect::LabelPlacement::AtCheckBox); - setToolTip(tr("Enable loading application with special desktop SQLite translation database.")); + setLabel(tr("Use MultiLanguage in Form Editor."), BoolAspect::LabelPlacement::AtCheckBox); + setToolTip(tr("By enabling this Form Editor can read translations\n" + "from MultiLanguage plugin.")); setDefaultValue(!databaseFilePath().isEmpty()); QVariantMap getDefaultValues; diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 8e2dd6048e4..83fde3c196e 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -340,6 +340,13 @@ QStringList QmlBuildSystem::customFileSelectors() const return {}; } +bool QmlBuildSystem::multilanguageSupport() const +{ + if (m_projectItem) + return m_projectItem->multilanguageSupport(); + return false; +} + QStringList QmlBuildSystem::supportedLanguages() const { if (m_projectItem) diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index 143c1697d1b..89f5dd34454 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -88,6 +88,7 @@ public: Utils::EnvironmentItems environment() const; QStringList customImportPaths() const; QStringList customFileSelectors() const; + bool multilanguageSupport() const; QStringList supportedLanguages() const; void setSupportedLanguages(QStringList languages); QString primaryLanguage() const; diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index e0c7cb30459..7eb5a4f6786 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -120,16 +120,24 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id) connect(target, &Target::kitChanged, this, &RunConfiguration::update); m_multiLanguageAspect = addAspect(target); + auto buildSystem = qobject_cast(activeBuildSystem()); + if (buildSystem) + m_multiLanguageAspect->setValue(buildSystem->multilanguageSupport()); auto envAspect = addAspect(); - connect(m_multiLanguageAspect, &QmlMultiLanguageAspect::changed, envAspect, &EnvironmentAspect::environmentChanged); + connect(m_multiLanguageAspect, + &QmlMultiLanguageAspect::changed, + envAspect, + &EnvironmentAspect::environmentChanged); auto envModifier = [this](Environment env) { - if (auto bs = dynamic_cast(activeBuildSystem())) + if (auto bs = qobject_cast(activeBuildSystem())) env.modify(bs->environment()); - if (m_multiLanguageAspect && m_multiLanguageAspect->value() && !m_multiLanguageAspect->databaseFilePath().isEmpty()) { - env.set("QT_MULTILANGUAGE_DATABASE", m_multiLanguageAspect->databaseFilePath().toString()); + if (m_multiLanguageAspect && m_multiLanguageAspect->value() + && !m_multiLanguageAspect->databaseFilePath().isEmpty()) { + env.set("QT_MULTILANGUAGE_DATABASE", + m_multiLanguageAspect->databaseFilePath().toString()); env.set("QT_MULTILANGUAGE_LANGUAGE", m_multiLanguageAspect->currentLocale()); } else { env.unset("QT_MULTILANGUAGE_DATABASE");