diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2020-07-21 13:47:14 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-07-21 15:37:41 +0000 |
commit | b45b771581860f26a99950954e5c47e614f36943 (patch) | |
tree | d98ffa49a29b7e6ceea79850492887a6f526bcbb | |
parent | 3659f5b41d3cf533b7cd7aec67281200a0c5d73f (diff) |
qmlproject: add convenience method to QmlMultiLanguageAspect
Change-Id: I88799aa1c5caa5c967b7c680ef9ddcbdd4b01bf5
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
4 files changed, 35 insertions, 17 deletions
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index d87bc128d2..2f491e8f6b 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -546,12 +546,8 @@ void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node, } } else if (node.isRootNode() && name == "language@Internal") { const QString languageAsString = value.toString(); - if (m_currentTarget) { - if (auto rc = m_currentTarget->activeRunConfiguration()) { - if (auto multiLanguageAspect = rc->aspect<QmlProjectManager::QmlMultiLanguageAspect>()) - multiLanguageAspect->setLastUsedLanguage(languageAsString); - } - } + if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) + multiLanguageAspect->setLastUsedLanguage(languageAsString); nodeInstanceServer()->changeLanguage({languageAsString}); } else if (node.isRootNode() && name == "previewSize@Internal") { nodeInstanceServer()->changePreviewImageSize(value.toSize()); @@ -994,12 +990,8 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand() } QString lastUsedLanguage; - if (m_currentTarget) { - if (auto rc = m_currentTarget->activeRunConfiguration()) { - if (auto multiLanguageAspect = rc->aspect<QmlProjectManager::QmlMultiLanguageAspect>()) - lastUsedLanguage = multiLanguageAspect->lastUsedLanguage(); - } - } + if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) + lastUsedLanguage = multiLanguageAspect->lastUsedLanguage(); return CreateSceneCommand( instanceContainerList, diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index 943e21e6f7..7eefa7f1bc 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -512,11 +512,9 @@ QProcessEnvironment PuppetCreator::processEnvironment() const customFileSelectors = m_target->additionalData("CustomFileSelectorsData").toStringList(); - if (auto *rc = m_target->activeRunConfiguration()) { - if (auto multiLanguageAspect = rc->aspect<QmlProjectManager::QmlMultiLanguageAspect>()) { - if (!multiLanguageAspect->databaseFilePath().isEmpty()) - environment.set("QT_MULTILANGUAGE_DATABASE", multiLanguageAspect->databaseFilePath().toString()); - } + if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_target)) { + if (!multiLanguageAspect->databaseFilePath().isEmpty()) + environment.set("QT_MULTILANGUAGE_DATABASE", multiLanguageAspect->databaseFilePath().toString()); } } diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp index 94e36919fe..623e51c66e 100644 --- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp +++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp @@ -30,6 +30,7 @@ #include <projectexplorer/project.h> #include <projectexplorer/projectexplorer.h> +#include <projectexplorer/session.h> #include <projectexplorer/target.h> static bool isMultilanguagePresent() @@ -125,4 +126,27 @@ void QmlMultiLanguageAspect::fromMap(const QVariantMap &map) setLastUsedLanguage(map.value(Constants::LAST_USED_LANGUAGE, "en").toString()); } +QmlMultiLanguageAspect *QmlMultiLanguageAspect::current() +{ + if (auto project = ProjectExplorer::SessionManager::startupProject()) + return current(project); + return {}; +} + +QmlMultiLanguageAspect *QmlMultiLanguageAspect::current(ProjectExplorer::Project *project) +{ + if (auto target = project->activeTarget()) + return current(target); + return {}; +} + +QmlMultiLanguageAspect *QmlMultiLanguageAspect::current(ProjectExplorer::Target *target) +{ + if (auto runConfiguration = target->activeRunConfiguration()) { + if (auto multiLanguageAspect = runConfiguration->aspect<QmlProjectManager::QmlMultiLanguageAspect>()) + return multiLanguageAspect; + } + return {}; +} + } // namespace QmlProjectManager diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h index 163552caf0..20db028ed2 100644 --- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h +++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h @@ -45,6 +45,10 @@ public: void toMap(QVariantMap &map) const final; void fromMap(const QVariantMap &map) final; + static QmlMultiLanguageAspect *current(); + static QmlMultiLanguageAspect *current(ProjectExplorer::Project *project); + static QmlMultiLanguageAspect *current(ProjectExplorer::Target *target); + public slots: void setLastUsedLanguage(const QString &language); |