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>
This commit is contained in:
Tim Jenssen
2020-07-20 20:45:08 +02:00
parent 03307d8cb4
commit bde420f7b7
5 changed files with 24 additions and 21 deletions

View File

@@ -547,7 +547,7 @@ void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node,
} else if (node.isRootNode() && name == "language@Internal") { } else if (node.isRootNode() && name == "language@Internal") {
const QString languageAsString = value.toString(); const QString languageAsString = value.toString();
if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget))
multiLanguageAspect->setLastUsedLanguage(languageAsString); multiLanguageAspect->setCurrentLocale(languageAsString);
nodeInstanceServer()->changeLanguage({languageAsString}); nodeInstanceServer()->changeLanguage({languageAsString});
} else if (node.isRootNode() && name == "previewSize@Internal") { } else if (node.isRootNode() && name == "previewSize@Internal") {
nodeInstanceServer()->changePreviewImageSize(value.toSize()); nodeInstanceServer()->changePreviewImageSize(value.toSize());
@@ -991,7 +991,7 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand()
QString lastUsedLanguage; QString lastUsedLanguage;
if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget))
lastUsedLanguage = multiLanguageAspect->lastUsedLanguage(); lastUsedLanguage = multiLanguageAspect->currentLocale();
return CreateSceneCommand( return CreateSceneCommand(
instanceContainerList, instanceContainerList,

View File

@@ -193,7 +193,10 @@ QmlPreviewPluginPrivate::QmlPreviewPluginPrivate(QmlPreviewPlugin *parent)
action->setEnabled(SessionManager::startupProject() != nullptr); action->setEnabled(SessionManager::startupProject() != nullptr);
connect(SessionManager::instance(), &SessionManager::startupProjectChanged, action, connect(SessionManager::instance(), &SessionManager::startupProjectChanged, action,
&QAction::setEnabled); &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); ProjectExplorerPlugin::runStartupProject(Constants::QML_PREVIEW_RUN_MODE);
}); });
menu->addAction(Core::ActionManager::registerAction(action, "QmlPreview.Internal"), menu->addAction(Core::ActionManager::registerAction(action, "QmlPreview.Internal"),
@@ -334,6 +337,8 @@ QString QmlPreviewPlugin::locale() const
void QmlPreviewPlugin::setLocale(const QString &locale) void QmlPreviewPlugin::setLocale(const QString &locale)
{ {
if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current())
multiLanguageAspect->setCurrentLocale(locale);
if (d->m_locale == locale) if (d->m_locale == locale)
return; return;

View File

@@ -83,27 +83,24 @@ QmlMultiLanguageAspect::QmlMultiLanguageAspect(ProjectExplorer::Target *target)
setDefaultValue(!databaseFilePath().isEmpty()); setDefaultValue(!databaseFilePath().isEmpty());
QVariantMap getDefaultValues; QVariantMap getDefaultValues;
fromMap(getDefaultValues); fromMap(getDefaultValues);
if (auto previewPlugin = getPreviewPlugin())
connect(previewPlugin, SIGNAL(localeChanged(QString)), this, SLOT(setLastUsedLanguage(QString)));
} }
QmlMultiLanguageAspect::~QmlMultiLanguageAspect() 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()) if (auto previewPlugin = getPreviewPlugin())
previewPlugin->setProperty("locale", language); previewPlugin->setProperty("locale", locale);
if (m_lastUsedLanguage != language) {
m_lastUsedLanguage = language;
}
} }
QString QmlMultiLanguageAspect::lastUsedLanguage() const QString QmlMultiLanguageAspect::currentLocale() const
{ {
return m_lastUsedLanguage; return m_currentLocale;
} }
Utils::FilePath QmlMultiLanguageAspect::databaseFilePath() const Utils::FilePath QmlMultiLanguageAspect::databaseFilePath() const
@@ -116,14 +113,14 @@ Utils::FilePath QmlMultiLanguageAspect::databaseFilePath() const
void QmlMultiLanguageAspect::toMap(QVariantMap &map) const void QmlMultiLanguageAspect::toMap(QVariantMap &map) const
{ {
BaseBoolAspect::toMap(map); BaseBoolAspect::toMap(map);
if (!m_lastUsedLanguage.isEmpty()) if (!m_currentLocale.isEmpty())
map.insert(Constants::LAST_USED_LANGUAGE, m_lastUsedLanguage); map.insert(Constants::LAST_USED_LANGUAGE, m_currentLocale);
} }
void QmlMultiLanguageAspect::fromMap(const QVariantMap &map) void QmlMultiLanguageAspect::fromMap(const QVariantMap &map)
{ {
BaseBoolAspect::fromMap(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() QmlMultiLanguageAspect *QmlMultiLanguageAspect::current()

View File

@@ -40,7 +40,8 @@ public:
explicit QmlMultiLanguageAspect(ProjectExplorer::Target *target); explicit QmlMultiLanguageAspect(ProjectExplorer::Target *target);
~QmlMultiLanguageAspect() override; ~QmlMultiLanguageAspect() override;
QString lastUsedLanguage() const; QString currentLocale() const;
void setCurrentLocale(const QString &locale);
Utils::FilePath databaseFilePath() const; Utils::FilePath databaseFilePath() const;
void toMap(QVariantMap &map) const final; void toMap(QVariantMap &map) const final;
void fromMap(const QVariantMap &map) final; void fromMap(const QVariantMap &map) final;
@@ -49,13 +50,13 @@ public:
static QmlMultiLanguageAspect *current(ProjectExplorer::Project *project); static QmlMultiLanguageAspect *current(ProjectExplorer::Project *project);
static QmlMultiLanguageAspect *current(ProjectExplorer::Target *target); static QmlMultiLanguageAspect *current(ProjectExplorer::Target *target);
public slots: signals:
void setLastUsedLanguage(const QString &language); void currentLocaleChanged(const QString &locale);
private: private:
ProjectExplorer::Target *m_target = nullptr; ProjectExplorer::Target *m_target = nullptr;
mutable Utils::FilePath m_databaseFilePath; mutable Utils::FilePath m_databaseFilePath;
QString m_lastUsedLanguage; QString m_currentLocale;
}; };
} // namespace QmlProjectManager } // namespace QmlProjectManager

View File

@@ -117,7 +117,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
if (m_multiLanguageAspect && m_multiLanguageAspect->value() && !m_multiLanguageAspect->databaseFilePath().isEmpty()) { if (m_multiLanguageAspect && m_multiLanguageAspect->value() && !m_multiLanguageAspect->databaseFilePath().isEmpty()) {
env.set("QT_MULTILANGUAGE_DATABASE", m_multiLanguageAspect->databaseFilePath().toString()); 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 { } else {
env.unset("QT_MULTILANGUAGE_DATABASE"); env.unset("QT_MULTILANGUAGE_DATABASE");
env.unset("QT_MULTILANGUAGE_LANGUAGE"); env.unset("QT_MULTILANGUAGE_LANGUAGE");