diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp index 73519c49f93..1d2b3366482 100644 --- a/src/plugins/qt4projectmanager/projectloadwizard.cpp +++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp @@ -98,11 +98,7 @@ void ProjectLoadWizard::setupTargetPage() if (m_targetSetupPage) return; - QList importVersions = - TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->projectDirectory(), - m_project->file()->fileName()); - importVersions.append(TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->defaultTopLevelBuildDirectory(), - m_project->file()->fileName())); + QList importVersions = TargetSetupPage::scanDefaultProjectDirectories(m_project); importVersions.append(TargetSetupPage::importInfosForKnownQtVersions()); m_targetSetupPage = new TargetSetupPage(this); diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp index 94cff921422..f12d557434e 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp @@ -329,22 +329,38 @@ QList TargetSetupPage::filterImportInfos(const QSet return results; } +QList +TargetSetupPage::scanDefaultProjectDirectories(Qt4ProjectManager::Qt4Project *project) +{ + // Source directory: + QList importVersions = TargetSetupPage::recursivelyCheckDirectoryForBuild(project->projectDirectory(), + project->file()->fileName()); + QtVersionManager *vm = QtVersionManager::instance(); + foreach(const QString &id, vm->supportedTargetIds()) { + QString location = Qt4Target::defaultShadowBuildDirectory(project->defaultTopLevelBuildDirectory(), id); + importVersions.append(TargetSetupPage::recursivelyCheckDirectoryForBuild(location, + project->file()->fileName())); + } + return importVersions; +} + QList TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, const QString &proFile, int maxdepth) { QList results; - if (maxdepth <= 0) + if (maxdepth <= 0 || directory.isEmpty()) return results; // Check for in-source builds first: QString qmakeBinary = QtVersionManager::findQMakeBinaryFromMakefile(directory); + QDir dir(directory); // Recurse into subdirectories: if (qmakeBinary.isNull() || !QtVersionManager::makefileIsFor(directory, proFile)) { - QStringList subDirs = QDir(directory).entryList(QDir::Dirs | QDir::NoDotAndDotDot); + QStringList subDirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); foreach (QString subDir, subDirs) - results.append(recursivelyCheckDirectoryForBuild(QDir::cleanPath(directory + QChar('/') + subDir), + results.append(recursivelyCheckDirectoryForBuild(dir.absoluteFilePath(subDir), proFile, maxdepth - 1)); return results; } @@ -352,8 +368,8 @@ TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, con // Shiny fresh directory with a Makefile... QtVersionManager * vm = QtVersionManager::instance(); TargetSetupPage::ImportInfo info; - info.directory = directory; - info.isShadowBuild = true; + info.directory = dir.absolutePath(); + info.isShadowBuild = (dir.absolutePath() != QFileInfo(proFile).absolutePath()); // This also means we have a build in there // First get the qt version @@ -500,8 +516,10 @@ void TargetSetupPage::updateVersionItem(QTreeWidgetItem *versionItem, int index) // Column 1 (status): const QString status = info.isExistingBuild ? - tr("Import", "Is this an import of an existing build or a new one?") : - tr("New", "Is this an import of an existing build or a new one?"); + //: Is this an import of an existing build or a new one? + tr("Import") : + //: Is this an import of an existing build or a new one? + tr("New"); versionItem->setText(STATUS_COLUMN, status); versionItem->setToolTip(STATUS_COLUMN, status); diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h index ba535a33164..7286790b1fc 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h @@ -104,6 +104,7 @@ public: static QList filterImportInfos(const QSet &validTargets, const QList &infos); + static QList scanDefaultProjectDirectories(Qt4Project *project); static QList recursivelyCheckDirectoryForBuild(const QString &directory, const QString &proFile, int maxdepth = 3);