diff options
author | Tuomo Pelkonen <tuomo.pelkonen@qt.io> | 2022-01-19 08:24:14 +0200 |
---|---|---|
committer | Tuomo Pelkonen <tuomo.pelkonen@qt.io> | 2022-01-20 09:41:36 +0000 |
commit | bdba99c61b2a797f5c903250293949208943a9d7 (patch) | |
tree | 72bbc061d4837d6dc68439992952f5ef639bb5bf | |
parent | d023dfca1e93e0945a1cd2477540873b1aa86277 (diff) | |
download | qt-creator-bdba99c61b2a797f5c903250293949208943a9d7.tar.gz |
Multilanguage: Add multilanguageSupport option to qmlproject
Change-Id: I1fc1861e17dc62cec91f5fa27f7e01360a42de78
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
7 files changed, 37 insertions, 6 deletions
diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp b/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp index 80b2d08ca7..0b637e24a7 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 249474a224..806c873817 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 a104e90646..01d3b8572e 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 662e904974..cfb2bfaf47 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 8e2dd6048e..83fde3c196 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 143c1697d1..89f5dd3445 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 e0c7cb3045..7eb5a4f678 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<QmlMultiLanguageAspect>(target); + auto buildSystem = qobject_cast<const QmlBuildSystem *>(activeBuildSystem()); + if (buildSystem) + m_multiLanguageAspect->setValue(buildSystem->multilanguageSupport()); auto envAspect = addAspect<EnvironmentAspect>(); - 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<const QmlBuildSystem *>(activeBuildSystem())) + if (auto bs = qobject_cast<const QmlBuildSystem *>(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"); |