diff options
author | hjk <hjk@qt.io> | 2018-09-10 14:07:52 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-09-12 07:06:21 +0000 |
commit | 679576b511289bf8a2f0a0134831178b8ca133a8 (patch) | |
tree | 595c3e1dade4da4c854e5679fc66fe43cf549fb5 /src/plugins/qmlprojectmanager | |
parent | 7264ea001b9ebcdaf388f9b2e979b1800a625ad9 (diff) | |
download | qt-creator-679576b511289bf8a2f0a0134831178b8ca133a8.tar.gz |
QmlProject: Pass project to MainQmlFileAspect ctor
This avoids four uses of IRunConfigurationAspect::runConfiguration()
which is meant to be removed soon.
Change-Id: I7a8f0a09b0a90042b0855b18e5be875bd343268c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/plugins/qmlprojectmanager')
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index adc4e96169..7ebeb5058a 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -71,7 +71,7 @@ static bool caseInsensitiveLessThan(const QString &s1, const QString &s2) class MainQmlFileAspect : public IRunConfigurationAspect { public: - MainQmlFileAspect(RunConfiguration *rc); + MainQmlFileAspect(RunConfiguration *rc, QmlProject *project); ~MainQmlFileAspect() { delete m_fileListCombo; } enum MainScriptSource { @@ -95,6 +95,7 @@ public: bool isQmlFilePresent(); public: + QmlProject *m_project; QPointer<QComboBox> m_fileListCombo; QStandardItemModel m_fileListModel; QString m_scriptFile; @@ -104,8 +105,8 @@ public: QString m_mainScriptFilename; }; -MainQmlFileAspect::MainQmlFileAspect(RunConfiguration *rc) - : IRunConfigurationAspect(rc) +MainQmlFileAspect::MainQmlFileAspect(RunConfiguration *rc, QmlProject *project) + : IRunConfigurationAspect(rc), m_project(project) { m_scriptFile = M_CURRENT_FILE; @@ -151,8 +152,7 @@ void MainQmlFileAspect::fromMap(const QVariantMap &map) void MainQmlFileAspect::updateFileComboBox() { - Project *project = runConfiguration()->target()->project(); - QDir projectDir(project->projectDirectory().toString()); + QDir projectDir(m_project->projectDirectory().toString()); if (mainScriptSource() == FileInProjectFile) { const QString mainScriptInFilePath = projectDir.relativeFilePath(mainScript()); @@ -169,7 +169,7 @@ void MainQmlFileAspect::updateFileComboBox() m_fileListModel.appendRow(new QStandardItem(QLatin1String(CURRENT_FILE))); QModelIndex currentIndex; - QStringList sortedFiles = Utils::transform(project->files(Project::AllFiles), + QStringList sortedFiles = Utils::transform(m_project->files(Project::AllFiles), &Utils::FileName::toString); // make paths relative to project directory @@ -206,8 +206,7 @@ void MainQmlFileAspect::updateFileComboBox() MainQmlFileAspect::MainScriptSource MainQmlFileAspect::mainScriptSource() const { - QmlProject *project = static_cast<QmlProject *>(runConfiguration()->target()->project()); - if (!project->mainFile().isEmpty()) + if (!m_project->mainFile().isEmpty()) return FileInProjectFile; if (!m_mainScriptFilename.isEmpty()) return FileInSettings; @@ -234,8 +233,7 @@ void MainQmlFileAspect::setScriptSource(MainScriptSource source, const QString & m_mainScriptFilename.clear(); } else { // FileInSettings m_scriptFile = settingsPath; - Project *project = runConfiguration()->target()->project(); - m_mainScriptFilename = project->projectDirectory().toString() + '/' + m_scriptFile; + m_mainScriptFilename = m_project->projectDirectory().toString() + '/' + m_scriptFile; } emit changed(); @@ -247,15 +245,12 @@ void MainQmlFileAspect::setScriptSource(MainScriptSource source, const QString & */ QString MainQmlFileAspect::mainScript() const { - QmlProject *project = qobject_cast<QmlProject *>(runConfiguration()->target()->project()); - if (!project) - return m_currentFileFilename; - if (!project->mainFile().isEmpty()) { - const QString pathInProject = project->mainFile(); + if (!m_project->mainFile().isEmpty()) { + const QString pathInProject = m_project->mainFile(); if (QFileInfo(pathInProject).isAbsolute()) return pathInProject; else - return QDir(project->canonicalProjectDir().toString()).absoluteFilePath(pathInProject); + return QDir(m_project->canonicalProjectDir().toString()).absoluteFilePath(pathInProject); } if (!m_mainScriptFilename.isEmpty()) @@ -290,7 +285,9 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id) auto argumentAspect = addAspect<ArgumentsAspect>(); argumentAspect->setSettingsKey(Constants::QML_VIEWER_ARGUMENTS_KEY); - m_mainQmlFileAspect = addAspect<MainQmlFileAspect>(); + auto qmlProject = qobject_cast<QmlProject *>(target->project()); + QTC_ASSERT(qmlProject, return); + m_mainQmlFileAspect = addAspect<MainQmlFileAspect>(qmlProject); connect(m_mainQmlFileAspect, &MainQmlFileAspect::changed, this, &QmlProjectRunConfiguration::updateEnabledState); @@ -417,7 +414,7 @@ bool MainQmlFileAspect::isQmlFilePresent() || mainScriptMimeType.matchesName(QLatin1String(QmlJSTools::Constants::QMLPROJECT_MIMETYPE))) { // find a qml file with lowercase filename. This is slow, but only done // in initialization/other border cases. - const auto files = runConfiguration()->target()->project()->files(Project::AllFiles); + const auto files = m_project->files(Project::AllFiles); for (const Utils::FileName &filename : files) { const QFileInfo fi = filename.toFileInfo(); |