forked from qt-creator/qt-creator
Fix scanning for directories in projectloadwizard
This commit is contained in:
@@ -98,11 +98,7 @@ void ProjectLoadWizard::setupTargetPage()
|
|||||||
if (m_targetSetupPage)
|
if (m_targetSetupPage)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QList<TargetSetupPage::ImportInfo> importVersions =
|
QList<TargetSetupPage::ImportInfo> importVersions = TargetSetupPage::scanDefaultProjectDirectories(m_project);
|
||||||
TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->projectDirectory(),
|
|
||||||
m_project->file()->fileName());
|
|
||||||
importVersions.append(TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->defaultTopLevelBuildDirectory(),
|
|
||||||
m_project->file()->fileName()));
|
|
||||||
importVersions.append(TargetSetupPage::importInfosForKnownQtVersions());
|
importVersions.append(TargetSetupPage::importInfosForKnownQtVersions());
|
||||||
|
|
||||||
m_targetSetupPage = new TargetSetupPage(this);
|
m_targetSetupPage = new TargetSetupPage(this);
|
||||||
|
|||||||
@@ -329,22 +329,38 @@ QList<TargetSetupPage::ImportInfo> TargetSetupPage::filterImportInfos(const QSet
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<TargetSetupPage::ImportInfo>
|
||||||
|
TargetSetupPage::scanDefaultProjectDirectories(Qt4ProjectManager::Qt4Project *project)
|
||||||
|
{
|
||||||
|
// Source directory:
|
||||||
|
QList<ImportInfo> 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::ImportInfo>
|
QList<TargetSetupPage::ImportInfo>
|
||||||
TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, const QString &proFile, int maxdepth)
|
TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, const QString &proFile, int maxdepth)
|
||||||
{
|
{
|
||||||
QList<ImportInfo> results;
|
QList<ImportInfo> results;
|
||||||
|
|
||||||
if (maxdepth <= 0)
|
if (maxdepth <= 0 || directory.isEmpty())
|
||||||
return results;
|
return results;
|
||||||
|
|
||||||
// Check for in-source builds first:
|
// Check for in-source builds first:
|
||||||
QString qmakeBinary = QtVersionManager::findQMakeBinaryFromMakefile(directory);
|
QString qmakeBinary = QtVersionManager::findQMakeBinaryFromMakefile(directory);
|
||||||
|
QDir dir(directory);
|
||||||
|
|
||||||
// Recurse into subdirectories:
|
// Recurse into subdirectories:
|
||||||
if (qmakeBinary.isNull() || !QtVersionManager::makefileIsFor(directory, proFile)) {
|
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)
|
foreach (QString subDir, subDirs)
|
||||||
results.append(recursivelyCheckDirectoryForBuild(QDir::cleanPath(directory + QChar('/') + subDir),
|
results.append(recursivelyCheckDirectoryForBuild(dir.absoluteFilePath(subDir),
|
||||||
proFile, maxdepth - 1));
|
proFile, maxdepth - 1));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
@@ -352,8 +368,8 @@ TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, con
|
|||||||
// Shiny fresh directory with a Makefile...
|
// Shiny fresh directory with a Makefile...
|
||||||
QtVersionManager * vm = QtVersionManager::instance();
|
QtVersionManager * vm = QtVersionManager::instance();
|
||||||
TargetSetupPage::ImportInfo info;
|
TargetSetupPage::ImportInfo info;
|
||||||
info.directory = directory;
|
info.directory = dir.absolutePath();
|
||||||
info.isShadowBuild = true;
|
info.isShadowBuild = (dir.absolutePath() != QFileInfo(proFile).absolutePath());
|
||||||
|
|
||||||
// This also means we have a build in there
|
// This also means we have a build in there
|
||||||
// First get the qt version
|
// First get the qt version
|
||||||
@@ -500,8 +516,10 @@ void TargetSetupPage::updateVersionItem(QTreeWidgetItem *versionItem, int index)
|
|||||||
|
|
||||||
// Column 1 (status):
|
// Column 1 (status):
|
||||||
const QString status = info.isExistingBuild ?
|
const QString status = info.isExistingBuild ?
|
||||||
tr("Import", "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("New", "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->setText(STATUS_COLUMN, status);
|
||||||
versionItem->setToolTip(STATUS_COLUMN, status);
|
versionItem->setToolTip(STATUS_COLUMN, status);
|
||||||
|
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ public:
|
|||||||
static QList<ImportInfo> filterImportInfos(const QSet<QString> &validTargets,
|
static QList<ImportInfo> filterImportInfos(const QSet<QString> &validTargets,
|
||||||
const QList<ImportInfo> &infos);
|
const QList<ImportInfo> &infos);
|
||||||
|
|
||||||
|
static QList<ImportInfo> scanDefaultProjectDirectories(Qt4Project *project);
|
||||||
static QList<ImportInfo> recursivelyCheckDirectoryForBuild(const QString &directory,
|
static QList<ImportInfo> recursivelyCheckDirectoryForBuild(const QString &directory,
|
||||||
const QString &proFile, int maxdepth = 3);
|
const QString &proFile, int maxdepth = 3);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user