From 1ca8cb239759efd59b841b262e7fe618ff18d99a Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Thu, 25 Mar 2010 13:19:27 +0100 Subject: [PATCH] Introduce method to access the project directory ... use it. Reviewed-by: dt --- .../cmakebuildconfiguration.cpp | 4 ++-- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 15 +++++---------- src/plugins/cmakeprojectmanager/cmakeproject.h | 2 -- .../genericbuildconfiguration.cpp | 5 ++--- .../genericprojectmanager/generictarget.cpp | 3 +-- src/plugins/projectexplorer/project.cpp | 6 ++++++ src/plugins/projectexplorer/project.h | 3 +++ src/plugins/projectexplorer/projectexplorer.cpp | 3 +-- src/plugins/qt4projectmanager/externaleditors.cpp | 2 +- .../qt4projectmanager/projectloadwizard.cpp | 2 +- .../qt-maemo/maemorunconfiguration.cpp | 8 +++----- .../qt-s60/s60devicerunconfiguration.cpp | 4 ++-- .../qt-s60/s60emulatorrunconfiguration.cpp | 4 ++-- .../qt4projectmanager/qt4buildconfiguration.cpp | 2 +- src/plugins/qt4projectmanager/qt4project.cpp | 2 +- .../qt4projectmanager/qt4projectconfigwidget.cpp | 4 ++-- .../qt4projectmanager/qt4runconfiguration.cpp | 4 ++-- src/plugins/vcsbase/vcsbaseplugin.cpp | 2 +- 18 files changed, 36 insertions(+), 39 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 6e006053c41..ab7fbde24f5 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -93,7 +93,7 @@ QString CMakeBuildConfiguration::buildDirectory() const { QString buildDirectory = m_buildDirectory; if (buildDirectory.isEmpty()) - buildDirectory = cmakeTarget()->cmakeProject()->sourceDirectory() + "/qtcreator-build"; + buildDirectory = target()->project()->projectDirectory() + "/qtcreator-build"; return buildDirectory; } @@ -221,7 +221,7 @@ CMakeBuildConfiguration *CMakeBuildConfigurationFactory::create(ProjectExplorer: cleanMakeStep->setClean(true); CMakeOpenProjectWizard copw(cmtarget->cmakeProject()->projectManager(), - cmtarget->cmakeProject()->sourceDirectory(), + cmtarget->project()->projectDirectory(), bc->buildDirectory(), bc->environment()); if (copw.exec() != QDialog::Accepted) { diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 0ef66e8f20e..f9094c975e8 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -156,11 +156,6 @@ void CMakeProject::changeBuildDirectory(CMakeBuildConfiguration *bc, const QStri parseCMakeLists(); } -QString CMakeProject::sourceDirectory() const -{ - return QFileInfo(m_fileName).absolutePath(); -} - bool CMakeProject::parseCMakeLists() { if (!activeTarget() || @@ -198,7 +193,7 @@ bool CMakeProject::parseCMakeLists() projectFiles.insert(node->path()); } else { // Manually add the CMakeLists.txt file - QString cmakeListTxt = sourceDirectory() + "/CMakeLists.txt"; + QString cmakeListTxt = projectDirectory() + "/CMakeLists.txt"; fileList.append(new ProjectExplorer::FileNode(cmakeListTxt, ProjectExplorer::ProjectFileType, false)); projectFiles.insert(cmakeListTxt); } @@ -240,7 +235,7 @@ bool CMakeProject::parseCMakeLists() allIncludePaths.append(headerPath.path()); } // This explicitly adds -I. to the include paths - allIncludePaths.append(sourceDirectory()); + allIncludePaths.append(projectDirectory()); allIncludePaths.append(cbpparser.includeFiles()); CppTools::CppModelManagerInterface *modelmanager = @@ -479,7 +474,7 @@ bool CMakeProject::fromMap(const QVariantMap &map) // Ask the user for where he wants to build it // and the cmake command line - CMakeOpenProjectWizard copw(m_manager, sourceDirectory(), ProjectExplorer::Environment::systemEnvironment()); + CMakeOpenProjectWizard copw(m_manager, projectDirectory(), ProjectExplorer::Environment::systemEnvironment()); if (copw.exec() != QDialog::Accepted) return false; @@ -641,7 +636,7 @@ void CMakeBuildSettingsWidget::init(BuildConfiguration *bc) { m_buildConfiguration = static_cast<CMakeBuildConfiguration *>(bc); m_pathLineEdit->setText(m_buildConfiguration->buildDirectory()); - if (m_buildConfiguration->buildDirectory() == m_project->sourceDirectory()) + if (m_buildConfiguration->buildDirectory() == m_project->projectDirectory()) m_changeButton->setEnabled(false); else m_changeButton->setEnabled(true); @@ -650,7 +645,7 @@ void CMakeBuildSettingsWidget::init(BuildConfiguration *bc) void CMakeBuildSettingsWidget::openChangeBuildDirectoryDialog() { CMakeOpenProjectWizard copw(m_project->projectManager(), - m_project->sourceDirectory(), + m_project->projectDirectory(), m_buildConfiguration->buildDirectory(), m_buildConfiguration->environment()); if (copw.exec() == QDialog::Accepted) { diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 62612c0f7c7..407bd58d5f8 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -97,8 +97,6 @@ public: CMakeBuildTarget buildTargetForTitle(const QString &title); - QString sourceDirectory() const; - bool parseCMakeLists(); signals: diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index b35000b40e4..72c96f8da88 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -77,7 +77,7 @@ QVariantMap GenericBuildConfiguration::toMap() const bool GenericBuildConfiguration::fromMap(const QVariantMap &map) { - m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY)).toString(); + m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY), target()->project()->projectDirectory()).toString(); return BuildConfiguration::fromMap(map); } @@ -90,8 +90,7 @@ ProjectExplorer::Environment GenericBuildConfiguration::environment() const QString GenericBuildConfiguration::buildDirectory() const { // Convert to absolute path when necessary - const QFileInfo projectFile(target()->project()->file()->fileName()); - const QDir projectDir(projectFile.path()); + const QDir projectDir(target()->project()->projectDirectory()); return projectDir.absoluteFilePath(m_buildDirectory); } diff --git a/src/plugins/genericprojectmanager/generictarget.cpp b/src/plugins/genericprojectmanager/generictarget.cpp index cabd75cfbea..d62630317e9 100644 --- a/src/plugins/genericprojectmanager/generictarget.cpp +++ b/src/plugins/genericprojectmanager/generictarget.cpp @@ -141,8 +141,7 @@ GenericTarget *GenericTargetFactory::create(ProjectExplorer::Project *parent, co makeStep->setBuildTarget("all", /* on = */ true); - const QFileInfo fileInfo(genericproject->file()->fileName()); - bc->setBuildDirectory(fileInfo.absolutePath()); + bc->setBuildDirectory(genericproject->projectDirectory()); t->addBuildConfiguration(bc); diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 9ca03a39934..fb6793b9d55 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -227,6 +227,12 @@ QVariantMap Project::toMap() const return map; } +QString Project::projectDirectory() const +{ + QFileInfo info(file()->fileName()); + return info.absoluteDir().path(); +} + bool Project::fromMap(const QVariantMap &map) { if (map.contains(QLatin1String(EDITOR_SETTINGS_KEY))) { diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 87599ab702c..10b6bb3953f 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -128,6 +128,9 @@ public: // creating new BuilConfigurations. virtual QVariantMap toMap() const; + // The directory that holds the project file. This includes the absolute path. + QString projectDirectory() const; + signals: void fileListChanged(); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 91536d39bd2..40be6f84bc3 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -912,8 +912,7 @@ void ProjectExplorerPlugin::newProject() QString defaultLocation; if (currentProject()) { - const QFileInfo file(currentProject()->file()->fileName()); - QDir dir = file.dir(); + QDir dir(currentProject()->projectDirectory()); dir.cdUp(); defaultLocation = dir.absolutePath(); } diff --git a/src/plugins/qt4projectmanager/externaleditors.cpp b/src/plugins/qt4projectmanager/externaleditors.cpp index 8025bde6e28..d79f6f2b930 100644 --- a/src/plugins/qt4projectmanager/externaleditors.cpp +++ b/src/plugins/qt4projectmanager/externaleditors.cpp @@ -146,7 +146,7 @@ bool ExternalQtEditor::getEditorLaunchData(const QString &fileName, Qt4BuildConfiguration *qt4bc = project->activeTarget()->activeBuildConfiguration(); const QtVersion *qtVersion = qt4bc->qtVersion(); data->binary = (qtVersion->*commandAccessor)(); - data->workingDirectory = QFileInfo(project->file()->fileName()).absolutePath(); + data->workingDirectory = project->projectDirectory(); } else { data->workingDirectory.clear(); data->binary = Utils::SynchronousProcess::locateBinary(fallbackBinary); diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp index b54438e5d94..d1c8e55014a 100644 --- a/src/plugins/qt4projectmanager/projectloadwizard.cpp +++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp @@ -53,7 +53,7 @@ ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::W { setWindowTitle(tr("Import existing build settings")); QtVersionManager * vm = QtVersionManager::instance(); - QString directory = QFileInfo(project->file()->fileName()).absolutePath(); + QString directory = project->projectDirectory(); QString importVersion = QtVersionManager::findQMakeBinaryFromMakefile(directory); if (!importVersion.isNull()) { diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp index 47fe1642231..b970eb7a01c 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp @@ -164,8 +164,7 @@ QVariantMap MaemoRunConfiguration::toMap() const map.insert(SimulatorPathKey, m_simulatorPath); - const QDir &dir = QFileInfo(qt4Target()->qt4Project()->file()->fileName()) - .absoluteDir(); + const QDir dir = QDir(target()->project()->projectDirectory()); map.insert(ProFileKey, dir.relativeFilePath(m_proFilePath)); return map; @@ -196,8 +195,7 @@ bool MaemoRunConfiguration::fromMap(const QVariantMap &map) m_simulatorPath = map.value(SimulatorPathKey).toString(); - const QDir &dir = QFileInfo(qt4Target()->qt4Project()->file()->fileName()) - .absoluteDir(); + const QDir dir = QDir(target()->project()->projectDirectory()); m_proFilePath = dir.filePath(map.value(ProFileKey).toString()); return true; @@ -405,7 +403,7 @@ void MaemoRunConfiguration::updateSimulatorInformation() const "simulator image.").arg(m_simulatorPath); } - QDir dir(m_simulatorPath); + QDir dir = QDir(m_simulatorPath); if (!m_simulatorPath.isEmpty() && dir.exists(m_simulatorPath)) { const QStringList &files = dir.entryList(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index f427645c444..8b06d7ca500 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -201,7 +201,7 @@ QWidget *S60DeviceRunConfiguration::configurationWidget() QVariantMap S60DeviceRunConfiguration::toMap() const { QVariantMap map(ProjectExplorer::RunConfiguration::toMap()); - const QDir projectDir = QFileInfo(target()->project()->file()->fileName()).absoluteDir(); + const QDir projectDir = QDir(target()->project()->projectDirectory()); map.insert(QLatin1String(PRO_FILE_KEY), projectDir.relativeFilePath(m_proFilePath)); map.insert(QLatin1String(SIGNING_MODE_KEY), (int)m_signingMode); @@ -215,7 +215,7 @@ QVariantMap S60DeviceRunConfiguration::toMap() const bool S60DeviceRunConfiguration::fromMap(const QVariantMap &map) { - const QDir projectDir = QFileInfo(target()->project()->file()->fileName()).absoluteDir(); + const QDir projectDir = QDir(target()->project()->projectDirectory()); m_proFilePath = projectDir.filePath(map.value(QLatin1String(PRO_FILE_KEY)).toString()); m_signingMode = static_cast<SigningMode>(map.value(QLatin1String(SIGNING_MODE_KEY)).toInt()); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp index 5c1c10355cd..d6b1c54d9df 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp @@ -134,14 +134,14 @@ QWidget *S60EmulatorRunConfiguration::configurationWidget() QVariantMap S60EmulatorRunConfiguration::toMap() const { QVariantMap map(ProjectExplorer::RunConfiguration::toMap()); - const QDir projectDir = QFileInfo(target()->project()->file()->fileName()).absoluteDir(); + const QDir projectDir = QDir(target()->project()->projectDirectory()); map.insert(QLatin1String(PRO_FILE_KEY), projectDir.relativeFilePath(m_proFilePath)); return map; } bool S60EmulatorRunConfiguration::fromMap(const QVariantMap &map) { - const QDir projectDir = QFileInfo(target()->project()->file()->fileName()).absoluteDir(); + const QDir projectDir = QDir(target()->project()->projectDirectory()); m_proFilePath = projectDir.filePath(map.value(QLatin1String(PRO_FILE_KEY)).toString()); return RunConfiguration::fromMap(map); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index 5926a0f6b06..3e857f59fbe 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -190,7 +190,7 @@ QString Qt4BuildConfiguration::buildDirectory() const if (m_shadowBuild) workingDirectory = m_buildDirectory; if (workingDirectory.isEmpty()) - workingDirectory = QFileInfo(target()->project()->file()->fileName()).absolutePath(); + workingDirectory = target()->project()->projectDirectory(); return workingDirectory; } diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 536080086f5..739ccd8d063 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -1128,7 +1128,7 @@ void Qt4Project::notifyChanged(const QString &name) // // adjust the build directory of the sub-project. // if (project()->file()->fileName().startsWith(qtSourceDir) && qtSourceDir != currentQtDir) { // project()->setValue(buildConfiguration, "useShadowBuild", true); -// QString buildDir = QFileInfo(project()->file()->fileName()).absolutePath(); +// QString buildDir = project()->projectDirectory(); // buildDir.replace(qtSourceDir, currentQtDir); // project()->setValue(buildConfiguration, "buildDirectory", buildDir); // project()->setValue(buildConfiguration, "autoShadowBuild", true); diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp index 96781714567..142e6cee0b9 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp @@ -249,7 +249,7 @@ void Qt4ProjectConfigWidget::buildDirectoryChanged() void Qt4ProjectConfigWidget::onBeforeBeforeShadowBuildDirBrowsed() { - QString initialDirectory = QFileInfo(m_buildConfiguration->target()->project()->file()->fileName()).absolutePath(); + QString initialDirectory = m_buildConfiguration->target()->project()->projectDirectory(); if (!initialDirectory.isEmpty()) m_ui->shadowBuildDirEdit->setInitialBrowsePathBackup(initialDirectory); } @@ -320,7 +320,7 @@ void Qt4ProjectConfigWidget::updateImportLabel() } QString sourceDirectory = - QFileInfo(m_buildConfiguration->qt4Target()->qt4Project()->file()->fileName()).absolutePath(); + m_buildConfiguration->target()->project()->projectDirectory(); if (!sourceDirectory.endsWith('/')) sourceDirectory.append('/'); bool invalidBuildDirectory = m_buildConfiguration->shadowBuild() diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 604dbe80fad..826ab256a98 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -446,7 +446,7 @@ QWidget *Qt4RunConfiguration::configurationWidget() QVariantMap Qt4RunConfiguration::toMap() const { - const QDir projectDir = QFileInfo(target()->project()->file()->fileName()).absoluteDir(); + const QDir projectDir = QDir(target()->project()->projectDirectory()); QVariantMap map(LocalApplicationRunConfiguration::toMap()); map.insert(QLatin1String(COMMAND_LINE_ARGUMENTS_KEY), m_commandLineArguments); map.insert(QLatin1String(PRO_FILE_KEY), projectDir.relativeFilePath(m_proFilePath)); @@ -462,7 +462,7 @@ QVariantMap Qt4RunConfiguration::toMap() const bool Qt4RunConfiguration::fromMap(const QVariantMap &map) { - const QDir projectDir = QFileInfo(target()->project()->file()->fileName()).absoluteDir(); + const QDir projectDir = QDir(target()->project()->projectDirectory()); m_commandLineArguments = map.value(QLatin1String(COMMAND_LINE_ARGUMENTS_KEY)).toStringList(); m_proFilePath = projectDir.filePath(map.value(QLatin1String(PRO_FILE_KEY)).toString()); m_userSetName = map.value(QLatin1String(USER_SET_NAME_KEY), false).toBool(); diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index 2dc0eae9649..bfa7f80ddec 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -197,7 +197,7 @@ void StateListener::slotStateChanged() // Check for project, find the control Core::IVersionControl *projectControl = 0; if (const ProjectExplorer::Project *currentProject = pe->currentProject()) { - state.currentProjectPath = QFileInfo(currentProject->file()->fileName()).absolutePath(); + state.currentProjectPath = currentProject->projectDirectory(); state.currentProjectName = currentProject->displayName(); projectControl = vcsManager->findVersionControlForDirectory(state.currentProjectPath, &state.currentProjectTopLevel); -- GitLab