Merge remote-tracking branch 'origin/qds-1.59' into 4.13

Change-Id: Ic720f3adab305c5ef8cd10e713ccabf510eff0c0
This commit is contained in:
Tim Jenssen
2020-08-13 08:34:24 +02:00
93 changed files with 3704 additions and 1066 deletions

View File

@@ -30,6 +30,7 @@
#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/session.h>
#include <projectexplorer/target.h>
static bool isMultilanguagePresent()
@@ -46,7 +47,8 @@ static bool isMultilanguagePresent()
static Utils::FilePath getMultilanguageDatabaseFilePath(ProjectExplorer::Target *target)
{
if (target) {
auto filePath = target->project()->projectDirectory().pathAppended("/multilanguage-experimental-v1.db");
auto filePath = target->project()->projectDirectory().pathAppended(
"multilanguage-experimental-v2.db");
if (filePath.exists())
return filePath;
}
@@ -81,28 +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;
emit changed();
}
previewPlugin->setProperty("locale", locale);
}
QString QmlMultiLanguageAspect::lastUsedLanguage() const
QString QmlMultiLanguageAspect::currentLocale() const
{
return m_lastUsedLanguage;
return m_currentLocale;
}
Utils::FilePath QmlMultiLanguageAspect::databaseFilePath() const
@@ -115,14 +113,37 @@ 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()
{
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

View File

@@ -40,18 +40,23 @@ 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;
public slots:
void setLastUsedLanguage(const QString &language);
static QmlMultiLanguageAspect *current();
static QmlMultiLanguageAspect *current(ProjectExplorer::Project *project);
static QmlMultiLanguageAspect *current(ProjectExplorer::Target *target);
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

View File

@@ -372,7 +372,7 @@ void QmlBuildSystem::generateProjectTree()
auto newRoot = std::make_unique<QmlProjectNode>(project());
for (const QString &f : m_projectItem.data()->files()) {
for (const QString &f : m_projectItem->files()) {
const Utils::FilePath fileName = Utils::FilePath::fromString(f);
const FileType fileType = (fileName == projectFilePath())
? FileType::Project : FileNode::fileTypeForFileName(fileName);

View File

@@ -117,7 +117,10 @@ 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");
}
return env;
};