diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2020-07-20 20:45:08 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-07-23 09:14:31 +0000 |
commit | bde420f7b7373ad5602ce80383cfe4db6602aa6d (patch) | |
tree | fbc8e6bb4773559d2c6e2e2b904fa62fa658712d | |
parent | 03307d8cb4ecc15f4bf1ac5c7424b35ef7b1a7cf (diff) |
qmlproject: rename lastUsedLanguage -> currentLocale
removed the connection from plugin to
QmlMultiLanguageAspect::setCurrentLocale
but calling it directly in QmlPreviewPlugin::setLocale
Does not matter which method is called it will change the right
thing only once because it is checking if it already have the
set locale.
Change-Id: I6cb4b115788adc103481dcda45e3214a0cd73401
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
5 files changed, 24 insertions, 21 deletions
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 2f491e8f6b..063a2d1e7d 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -547,7 +547,7 @@ void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node, } else if (node.isRootNode() && name == "language@Internal") { const QString languageAsString = value.toString(); if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) - multiLanguageAspect->setLastUsedLanguage(languageAsString); + multiLanguageAspect->setCurrentLocale(languageAsString); nodeInstanceServer()->changeLanguage({languageAsString}); } else if (node.isRootNode() && name == "previewSize@Internal") { nodeInstanceServer()->changePreviewImageSize(value.toSize()); @@ -991,7 +991,7 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand() QString lastUsedLanguage; if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) - lastUsedLanguage = multiLanguageAspect->lastUsedLanguage(); + lastUsedLanguage = multiLanguageAspect->currentLocale(); return CreateSceneCommand( instanceContainerList, diff --git a/src/plugins/qmlpreview/qmlpreviewplugin.cpp b/src/plugins/qmlpreview/qmlpreviewplugin.cpp index b578be4ac0..72927f8cdf 100644 --- a/src/plugins/qmlpreview/qmlpreviewplugin.cpp +++ b/src/plugins/qmlpreview/qmlpreviewplugin.cpp @@ -193,7 +193,10 @@ QmlPreviewPluginPrivate::QmlPreviewPluginPrivate(QmlPreviewPlugin *parent) action->setEnabled(SessionManager::startupProject() != nullptr); connect(SessionManager::instance(), &SessionManager::startupProjectChanged, action, &QAction::setEnabled); - connect(action, &QAction::triggered, this, []() { + connect(action, &QAction::triggered, this, [this]() { + if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current()) + m_locale = multiLanguageAspect->currentLocale(); + ProjectExplorerPlugin::runStartupProject(Constants::QML_PREVIEW_RUN_MODE); }); menu->addAction(Core::ActionManager::registerAction(action, "QmlPreview.Internal"), @@ -334,6 +337,8 @@ QString QmlPreviewPlugin::locale() const void QmlPreviewPlugin::setLocale(const QString &locale) { + if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current()) + multiLanguageAspect->setCurrentLocale(locale); if (d->m_locale == locale) return; diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp index 623e51c66e..1e5e88712e 100644 --- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp +++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp @@ -83,27 +83,24 @@ QmlMultiLanguageAspect::QmlMultiLanguageAspect(ProjectExplorer::Target *target) setDefaultValue(!databaseFilePath().isEmpty()); QVariantMap getDefaultValues; fromMap(getDefaultValues); - - if (auto previewPlugin = getPreviewPlugin()) - connect(previewPlugin, SIGNAL(localeChanged(QString)), this, SLOT(setLastUsedLanguage(QString))); } QmlMultiLanguageAspect::~QmlMultiLanguageAspect() { } -void QmlMultiLanguageAspect::setLastUsedLanguage(const QString &language) +void QmlMultiLanguageAspect::setCurrentLocale(const QString &locale) { + if (m_currentLocale == locale) + return; + m_currentLocale = locale; if (auto previewPlugin = getPreviewPlugin()) - previewPlugin->setProperty("locale", language); - if (m_lastUsedLanguage != language) { - m_lastUsedLanguage = language; - } + previewPlugin->setProperty("locale", locale); } -QString QmlMultiLanguageAspect::lastUsedLanguage() const +QString QmlMultiLanguageAspect::currentLocale() const { - return m_lastUsedLanguage; + return m_currentLocale; } Utils::FilePath QmlMultiLanguageAspect::databaseFilePath() const @@ -116,14 +113,14 @@ Utils::FilePath QmlMultiLanguageAspect::databaseFilePath() const void QmlMultiLanguageAspect::toMap(QVariantMap &map) const { BaseBoolAspect::toMap(map); - if (!m_lastUsedLanguage.isEmpty()) - map.insert(Constants::LAST_USED_LANGUAGE, m_lastUsedLanguage); + if (!m_currentLocale.isEmpty()) + map.insert(Constants::LAST_USED_LANGUAGE, m_currentLocale); } void QmlMultiLanguageAspect::fromMap(const QVariantMap &map) { BaseBoolAspect::fromMap(map); - setLastUsedLanguage(map.value(Constants::LAST_USED_LANGUAGE, "en").toString()); + setCurrentLocale(map.value(Constants::LAST_USED_LANGUAGE, "en").toString()); } QmlMultiLanguageAspect *QmlMultiLanguageAspect::current() diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h index 20db028ed2..c98c5e2aec 100644 --- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h +++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h @@ -40,7 +40,8 @@ public: explicit QmlMultiLanguageAspect(ProjectExplorer::Target *target); ~QmlMultiLanguageAspect() override; - QString lastUsedLanguage() const; + QString currentLocale() const; + void setCurrentLocale(const QString &locale); Utils::FilePath databaseFilePath() const; void toMap(QVariantMap &map) const final; void fromMap(const QVariantMap &map) final; @@ -49,13 +50,13 @@ public: static QmlMultiLanguageAspect *current(ProjectExplorer::Project *project); static QmlMultiLanguageAspect *current(ProjectExplorer::Target *target); -public slots: - void setLastUsedLanguage(const QString &language); +signals: + void currentLocaleChanged(const QString &locale); private: ProjectExplorer::Target *m_target = nullptr; mutable Utils::FilePath m_databaseFilePath; - QString m_lastUsedLanguage; + QString m_currentLocale; }; } // namespace QmlProjectManager diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index a0bfa81211..f7bce125a6 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -117,7 +117,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id) 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->lastUsedLanguage()); + env.set("QT_MULTILANGUAGE_LANGUAGE", m_multiLanguageAspect->currentLocale()); } else { env.unset("QT_MULTILANGUAGE_DATABASE"); env.unset("QT_MULTILANGUAGE_LANGUAGE"); |