forked from qt-creator/qt-creator
		
	Merge remote-tracking branch 'origin/qds-1.59' into 4.13
Change-Id: Ic720f3adab305c5ef8cd10e713ccabf510eff0c0
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user