diff --git a/src/plugins/qmlprojectmanager/qmlmainfileaspect.cpp b/src/plugins/qmlprojectmanager/qmlmainfileaspect.cpp index 349c23a6cf4..ea3edc3542c 100644 --- a/src/plugins/qmlprojectmanager/qmlmainfileaspect.cpp +++ b/src/plugins/qmlprojectmanager/qmlmainfileaspect.cpp @@ -37,8 +37,8 @@ static bool caseInsensitiveLessThan(const FilePath &s1, const FilePath &s2) return s1.toString().toCaseFolded() < s2.toString().toCaseFolded(); } -QmlMainFileAspect::QmlMainFileAspect(Target *target) - : m_target(target) +QmlMainFileAspect::QmlMainFileAspect(AspectContainer *container) + : BaseAspect(container) , m_scriptFile(M_CURRENT_FILE) { addDataExtractor(this, &QmlMainFileAspect::mainScript, &Data::mainScript); @@ -158,6 +158,11 @@ void QmlMainFileAspect::setMainScript(int index) } } +void QmlMainFileAspect::setTarget(ProjectExplorer::Target *target) +{ + m_target = target; +} + void QmlMainFileAspect::setScriptSource(MainScriptSource source, const QString &settingsPath) { if (source == FileInEditor) { diff --git a/src/plugins/qmlprojectmanager/qmlmainfileaspect.h b/src/plugins/qmlprojectmanager/qmlmainfileaspect.h index 3c75e4744a2..bdf9f1d6a38 100644 --- a/src/plugins/qmlprojectmanager/qmlmainfileaspect.h +++ b/src/plugins/qmlprojectmanager/qmlmainfileaspect.h @@ -27,7 +27,7 @@ class QMLPROJECTMANAGER_EXPORT QmlMainFileAspect : public Utils::BaseAspect Q_OBJECT public: - explicit QmlMainFileAspect(ProjectExplorer::Target *target); + explicit QmlMainFileAspect(Utils::AspectContainer *container = nullptr); ~QmlMainFileAspect() override; enum MainScriptSource { @@ -50,6 +50,7 @@ public: MainScriptSource mainScriptSource() const; void setMainScript(int index); + void setTarget(ProjectExplorer::Target *target); void setScriptSource(MainScriptSource source, const QString &settingsPath = QString()); Utils::FilePath mainScript() const; diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp index db0001ac70f..39c8213e849 100644 --- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp +++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp @@ -14,6 +14,11 @@ #include #include +using namespace ProjectExplorer; +using namespace Utils; + +namespace QmlProjectManager { + static bool isMultilanguagePresent() { const QVector &specs = ExtensionSystem::PluginManager::plugins(); @@ -24,7 +29,7 @@ static bool isMultilanguagePresent() != specs.cend(); } -static Utils::FilePath getMultilanguageDatabaseFilePath(ProjectExplorer::Target *target) +static FilePath getMultilanguageDatabaseFilePath(ProjectExplorer::Target *target) { if (target) { auto filePath = target->project()->projectDirectory().pathAppended("translations.db"); @@ -48,11 +53,8 @@ static QObject *getPreviewPlugin() return nullptr; } - -namespace QmlProjectManager { - -QmlMultiLanguageAspect::QmlMultiLanguageAspect(ProjectExplorer::Target *target) - : m_target(target) +QmlMultiLanguageAspect::QmlMultiLanguageAspect(AspectContainer *container) + : BoolAspect(container) { setVisible(isMultilanguagePresent()); setSettingsKey(Constants::USE_MULTILANGUAGE_KEY); @@ -66,8 +68,7 @@ QmlMultiLanguageAspect::QmlMultiLanguageAspect(ProjectExplorer::Target *target) addDataExtractor(this, &QmlMultiLanguageAspect::origin, &Data::origin); connect(this, &BoolAspect::changed, this, [this] { - for (ProjectExplorer::RunControl *runControl : - ProjectExplorer::ProjectExplorerPlugin::allRunControls()) { + for (RunControl *runControl : ProjectExplorerPlugin::allRunControls()) { if (runControl->aspect()->origin == this) runControl->initiateStop(); } @@ -78,6 +79,11 @@ QmlMultiLanguageAspect::~QmlMultiLanguageAspect() { } +void QmlMultiLanguageAspect::setTarget(Target *target) +{ + m_target = target; +} + void QmlMultiLanguageAspect::setCurrentLocale(const QString &locale) { if (m_currentLocale == locale) @@ -114,19 +120,19 @@ void QmlMultiLanguageAspect::fromMap(const QVariantMap &map) QmlMultiLanguageAspect *QmlMultiLanguageAspect::current() { - if (auto project = ProjectExplorer::ProjectManager::startupProject()) + if (auto project = ProjectManager::startupProject()) return current(project); return {}; } -QmlMultiLanguageAspect *QmlMultiLanguageAspect::current(ProjectExplorer::Project *project) +QmlMultiLanguageAspect *QmlMultiLanguageAspect::current(Project *project) { if (auto target = project->activeTarget()) return current(target); return {}; } -QmlMultiLanguageAspect *QmlMultiLanguageAspect::current(ProjectExplorer::Target *target) +QmlMultiLanguageAspect *QmlMultiLanguageAspect::current(Target *target) { if (!target) return {}; diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h index b3c047e75b1..b7188ce13f0 100644 --- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h +++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.h @@ -15,9 +15,11 @@ class QMLPROJECTMANAGER_EXPORT QmlMultiLanguageAspect : public Utils::BoolAspect { Q_OBJECT public: - explicit QmlMultiLanguageAspect(ProjectExplorer::Target *target); + explicit QmlMultiLanguageAspect(Utils::AspectContainer *container = nullptr); ~QmlMultiLanguageAspect() override; + void setTarget(ProjectExplorer::Target *target); + QString currentLocale() const; void setCurrentLocale(const QString &locale); Utils::FilePath databaseFilePath() const; diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index 4b64440c5fc..7cf8306a1ee 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -120,14 +120,16 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id) return cmd; }); - m_qmlMainFileAspect = addAspect(target); + m_qmlMainFileAspect = addAspect(); + m_qmlMainFileAspect->setTarget(target); connect(m_qmlMainFileAspect, &QmlMainFileAspect::changed, this, &RunConfiguration::update); createQtVersionAspect(); connect(target, &Target::kitChanged, this, &RunConfiguration::update); - m_multiLanguageAspect = addAspect(target); + m_multiLanguageAspect = addAspect(); + m_multiLanguageAspect->setTarget(target); auto buildSystem = qobject_cast(activeBuildSystem()); if (buildSystem) m_multiLanguageAspect->setValue(buildSystem->multilanguageSupport());