diff options
author | Tobias Hunger <tobias.hunger@nokia.com> | 2010-06-08 14:19:05 +0200 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2010-06-10 11:00:29 +0200 |
commit | 523760fa05a3d82634c098fc9b219e62200ee42d (patch) | |
tree | cf7d02764d7a9219ea2d3f318dc214a5da4c8b22 | |
parent | 3a782c6566fb11121a41425904bd8109e5571357 (diff) |
Fix targetsetuppage's shadowbuild dirs
* Fix displayed shadow build location
* Fix shadow build location used by newly set up shadow builds
Task-number: QTCREATORBUG-1599
Reviewed-by: dt
(cherry picked from commit 1d8e176067c48705cdfd746e2c1fb23539f58a8e)
(cherry picked from commit b099596858af3617294caea71f7c8959a6b3ccbe)
-rw-r--r-- | src/plugins/projectexplorer/project.cpp | 8 | ||||
-rw-r--r-- | src/plugins/projectexplorer/project.h | 1 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/projectloadwizard.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qt4project.cpp | 9 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qt4project.h | 1 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qt4target.cpp | 17 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qt4target.h | 1 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/wizards/qtwizard.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp | 19 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/wizards/targetsetuppage.h | 2 |
10 files changed, 41 insertions, 21 deletions
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index fb6793b9d5..bdea6c9ef2 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -229,10 +229,16 @@ QVariantMap Project::toMap() const QString Project::projectDirectory() const { - QFileInfo info(file()->fileName()); + return projectDirectory(file()->fileName()); +} + +QString Project::projectDirectory(const QString &proFile) +{ + QFileInfo info(proFile); 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 79f4f8ba4a..01b4569cb3 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -129,6 +129,7 @@ public: // The directory that holds the project file. This includes the absolute path. QString projectDirectory() const; + static QString projectDirectory(const QString &proFile); signals: void fileListChanged(); diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp index 89dae97b50..334dce57fd 100644 --- a/src/plugins/qt4projectmanager/projectloadwizard.cpp +++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp @@ -99,7 +99,7 @@ void ProjectLoadWizard::setupTargetPage() m_project->file()->fileName()); importVersions.append(TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->defaultTopLevelBuildDirectory(), m_project->file()->fileName())); - importVersions.append(TargetSetupPage::importInfosForKnownQtVersions(m_project)); + importVersions.append(TargetSetupPage::importInfosForKnownQtVersions()); m_targetSetupPage = new TargetSetupPage(this); m_targetSetupPage->setProFilePath(m_project->file()->fileName()); diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index e72aca8912..006352f4a0 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -780,8 +780,13 @@ bool Qt4Project::wasEvaluateCanceled() QString Qt4Project::defaultTopLevelBuildDirectory() const { - QFileInfo info(file()->fileName()); - return QDir(projectDirectory() + QLatin1String("/../") + info.baseName() + QLatin1String("-build")).absolutePath(); + return defaultTopLevelBuildDirectory(file()->fileName()); +} + +QString Qt4Project::defaultTopLevelBuildDirectory(const QString &profilePath) +{ + QFileInfo info(profilePath); + return QDir(projectDirectory(profilePath) + QLatin1String("/../") + info.baseName() + QLatin1String("-build")).absolutePath(); } void Qt4Project::asyncUpdate() diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index 84aad0efd1..a9629a5b78 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -160,6 +160,7 @@ public: bool wasEvaluateCanceled(); QString defaultTopLevelBuildDirectory() const; + static QString defaultTopLevelBuildDirectory(const QString &profilePath); signals: /// emitted after parse diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 784897f646..59b8c1bd9b 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -366,23 +366,28 @@ QString Qt4Target::defaultBuildDirectory() const ) return project()->projectDirectory(); + return defaultShadowBuildDirectory(qt4Project()->defaultTopLevelBuildDirectory(), id()); +} + +QString Qt4Target::defaultShadowBuildDirectory(const QString &projectLocation, const QString &id) +{ QString shortName = QLatin1String("unknown"); - if (id() == QLatin1String(Constants::DESKTOP_TARGET_ID)) + if (id == QLatin1String(Constants::DESKTOP_TARGET_ID)) shortName = QLatin1String("desktop"); - else if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) + else if (id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) shortName = QLatin1String("symbian_emulator"); - else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) + else if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) shortName = QLatin1String("symbian"); - else if (id() == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) + else if (id == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) shortName = QLatin1String("maemo"); - else if (id() == QLatin1String(Constants::QT_SIMULATOR_TARGET_ID)) + else if (id == QLatin1String(Constants::QT_SIMULATOR_TARGET_ID)) shortName = QLatin1String("simulator"); // currently we can't have the build directory to be deeper then the source directory // since that is broken in qmake // Once qmake is fixed we can change that to have a top directory and // subdirectories per build. (Replacing "QChar('-')" with "QChar('/') ) - return qt4Project()->defaultTopLevelBuildDirectory() + QChar('-') + shortName; + return projectLocation + QChar('-') + shortName; } bool Qt4Target::fromMap(const QVariantMap &map) diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h index 13b9d2c799..9b7f7f0c2a 100644 --- a/src/plugins/qt4projectmanager/qt4target.h +++ b/src/plugins/qt4projectmanager/qt4target.h @@ -81,6 +81,7 @@ public: ProjectExplorer::ToolChain::ToolChainType preferredToolChainType(const QList<ProjectExplorer::ToolChain::ToolChainType> &candidates) const; QString defaultBuildDirectory() const; + static QString defaultShadowBuildDirectory(const QString &projectLocation, const QString &id); signals: void buildDirectoryInitialized(); diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp index a6211f9846..65954e9394 100644 --- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp @@ -236,7 +236,7 @@ int BaseQt4ProjectWizardDialog::addTargetSetupPage(QSet<QString> targets, bool m connect(this, SIGNAL(projectLocationChanged(QString)), m_targetSetupPage, SLOT(setProFilePath(QString))); - QList<TargetSetupPage::ImportInfo> infos = TargetSetupPage::importInfosForKnownQtVersions(0); + QList<TargetSetupPage::ImportInfo> infos = TargetSetupPage::importInfosForKnownQtVersions(); if (!targets.isEmpty()) infos = TargetSetupPage::filterImportInfos(targets, infos); m_targetSetupPage->setImportDirectoryBrowsingEnabled(false); diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp index edb1a8a323..111dea1c0c 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp @@ -168,7 +168,15 @@ void TargetSetupPage::setImportInfos(const QList<ImportInfo> &infos) versionItem->setToolTip(1, status); // Column 2 (directory): - const QString dir = QDir::toNativeSeparators(i.directory); + QString dir; + if (i.directory.isEmpty()) { + if (i.version->supportsShadowBuilds()) + dir = QDir::toNativeSeparators(Qt4Target::defaultShadowBuildDirectory(Qt4Project::defaultTopLevelBuildDirectory(m_proFilePath), t)); + else + dir = QDir::toNativeSeparators(Qt4Project::projectDirectory(m_proFilePath)); + } else { + dir = QDir::toNativeSeparators(i.directory); + } versionItem->setText(2, dir); versionItem->setToolTip(2, dir); } @@ -308,8 +316,7 @@ void TargetSetupPage::setProFilePath(const QString &path) setImportInfos(tmp); } -QList<TargetSetupPage::ImportInfo> -TargetSetupPage::importInfosForKnownQtVersions(Qt4ProjectManager::Qt4Project *project) +QList<TargetSetupPage::ImportInfo> TargetSetupPage::importInfosForKnownQtVersions() { QList<ImportInfo> results; QtVersionManager * vm = QtVersionManager::instance(); @@ -319,12 +326,6 @@ TargetSetupPage::importInfosForKnownQtVersions(Qt4ProjectManager::Qt4Project *pr validVersions.append(vm->versions().at(0)); // there is always one! foreach (QtVersion *v, validVersions) { ImportInfo info; - if (project) { - if (v->supportsShadowBuilds()) - info.directory = project->defaultTopLevelBuildDirectory(); - else - info.directory = project->projectDirectory(); - } info.isExistingBuild = false; info.isTemporary = false; info.version = v; diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h index a60c386395..27985d7622 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h @@ -99,7 +99,7 @@ public: void setShowLocationInformation(bool location); void setPreferMobile(bool mobile); - static QList<ImportInfo> importInfosForKnownQtVersions(Qt4ProjectManager::Qt4Project *project); + static QList<ImportInfo> importInfosForKnownQtVersions(); static QList<ImportInfo> filterImportInfos(const QSet<QString> &validTargets, const QList<ImportInfo> &infos); |