Revert "Qbs: Remove implicit Group with the same name as the Product"

This got applied in the wrong sequence.

This reverts commit 850e3eda14e41884c53932b67dffd573c2616c43

Change-Id: I604ba711e63cf207af6bca6110320632ec3cb72a
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Tobias Hunger
2013-04-19 13:19:41 +02:00
parent ddacb661c3
commit 314bc49144
2 changed files with 26 additions and 51 deletions

View File

@@ -285,11 +285,10 @@ void QbsGroupNode::setGroup(const qbs::GroupData *group, const QString &productP
m_productPath = productPath; m_productPath = productPath;
// Set Product file node used to jump to the product
setPath(group->location().fileName); setPath(group->location().fileName);
setDisplayName(group->name()); setDisplayName(group->name());
// set up file node... // Set Product file node used to jump to the product
QbsFileNode *indexFile = 0; QbsFileNode *indexFile = 0;
if (!m_group) { if (!m_group) {
indexFile = new QbsFileNode(group->location().fileName, indexFile = new QbsFileNode(group->location().fileName,
@@ -303,15 +302,6 @@ void QbsGroupNode::setGroup(const qbs::GroupData *group, const QString &productP
indexFile->emitNodeUpdated(); indexFile->emitNodeUpdated();
} }
m_group = group;
setGroup(this, group, productPath, QList<ProjectExplorer::Node *>() << indexFile);
emitNodeUpdated();
}
void QbsGroupNode::setGroup(QbsBaseProjectNode *root, const qbs::GroupData *group,
const QString &productPath, QList<ProjectExplorer::Node *> keepers)
{
// Build up a tree of nodes: // Build up a tree of nodes:
FileTreeNode *tree = new FileTreeNode(QString()); FileTreeNode *tree = new FileTreeNode(QString());
@@ -325,13 +315,16 @@ void QbsGroupNode::setGroup(QbsBaseProjectNode *root, const qbs::GroupData *grou
FileTreeNode::reorder(tree, productPath, tree); FileTreeNode::reorder(tree, productPath, tree);
FileTreeNode::simplify(tree); FileTreeNode::simplify(tree);
setupFolders(root, root, tree, productPath, keepers); setupFolders(this, tree, productPath, QList<ProjectExplorer::Node *>() << indexFile);
delete tree; delete tree;
m_group = group;
emitNodeUpdated();
} }
void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::FolderNode *root, void QbsGroupNode::setupFolders(ProjectExplorer::FolderNode *root, FileTreeNode *node,
FileTreeNode *node, const QString &baseDirPath, const QString &baseDirPath, QList<ProjectExplorer::Node *> keepers)
QList<ProjectExplorer::Node *> keepers)
{ {
QList<ProjectExplorer::FileNode *> filesToRemove; QList<ProjectExplorer::FileNode *> filesToRemove;
foreach (ProjectExplorer::FileNode *fn, root->fileNodes()) { foreach (ProjectExplorer::FileNode *fn, root->fileNodes()) {
@@ -367,7 +360,7 @@ void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::F
ProjectExplorer::FolderNode *fn = root->findSubFolder(path); ProjectExplorer::FolderNode *fn = root->findSubFolder(path);
if (path == baseDirPath) { if (path == baseDirPath) {
setupFolders(topLevel, root, c, c->path(), foldersToKeep); setupFolders(root, c, c->path(), foldersToKeep);
continue; continue;
} }
@@ -379,14 +372,14 @@ void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::F
foldersToRemove.removeOne(fn); foldersToRemove.removeOne(fn);
} else { } else {
fn = new ProjectExplorer::FolderNode(path); fn = new ProjectExplorer::FolderNode(path);
topLevel->addFolderNodes(QList<ProjectExplorer::FolderNode *>() << fn, root); addFolderNodes(QList<ProjectExplorer::FolderNode *>() << fn, root);
} }
foldersToKeep.append(fn); foldersToKeep.append(fn);
setupFolders(topLevel, fn, c, c->path()); setupFolders(fn, c, c->path());
} }
topLevel->removeFileNodes(filesToRemove, root); addFileNodes(filesToAdd, root);
topLevel->removeFolderNodes(foldersToRemove, root); removeFileNodes(filesToRemove, root);
topLevel->addFileNodes(filesToAdd, root); removeFolderNodes(foldersToRemove, root);
} }
// -------------------------------------------------------------------- // --------------------------------------------------------------------
@@ -417,38 +410,28 @@ void QbsProductNode::setProduct(const qbs::ProductData *prd)
// Set Product file node used to jump to the product // Set Product file node used to jump to the product
QList<ProjectExplorer::FileNode *> files = fileNodes(); QList<ProjectExplorer::FileNode *> files = fileNodes();
QList<ProjectExplorer::Node *> toKeep;
if (files.isEmpty()) { if (files.isEmpty()) {
QbsFileNode *idx = new QbsFileNode(prd->location().fileName, addFileNodes(QList<ProjectExplorer::FileNode *>()
ProjectExplorer::ProjectFileType, false, << new QbsFileNode(prd->location().fileName,
prd->location().line); ProjectExplorer::ProjectFileType, false,
addFileNodes(QList<ProjectExplorer::FileNode *>() << idx, this); prd->location().line),
toKeep.append(idx); this);
} else { } else {
QbsFileNode *idx = static_cast<QbsFileNode *>(files.at(0)); QbsFileNode *qbsFile = static_cast<QbsFileNode *>(files.at(0));
idx->setPath(prd->location().fileName); qbsFile->setPath(prd->location().fileName);
idx->setLine(prd->location().line); qbsFile->setLine(prd->location().line);
toKeep.append(idx);
} }
QList<ProjectExplorer::ProjectNode *> toAdd; QList<ProjectExplorer::ProjectNode *> toAdd;
QList<ProjectExplorer::ProjectNode *> toRemove = subProjectNodes(); QList<ProjectExplorer::ProjectNode *> toRemove = subProjectNodes();
foreach (const qbs::GroupData &grp, prd->groups()) { foreach (const qbs::GroupData &grp, prd->groups()) {
if (grp.name() == prd->name() && grp.location() == prd->location()) {
// Set implicit product group right onto this node:
QbsGroupNode::setGroup(this, &grp, productPath, toKeep);
continue;
}
QbsGroupNode *qn = findGroupNode(grp.name()); QbsGroupNode *qn = findGroupNode(grp.name());
if (qn) { if (qn) {
toRemove.removeAll(qn); toRemove.removeAll(qn);
toKeep.append(qn);
qn->setGroup(&grp, productPath); qn->setGroup(&grp, productPath);
} else { } else {
qn = new QbsGroupNode(&grp, productPath); toAdd << new QbsGroupNode(&grp, productPath);
toAdd.append(qn);
toKeep.append(qn);
} }
} }

View File

@@ -68,8 +68,6 @@ private:
class QbsGroupNode; class QbsGroupNode;
class QbsGroupNode;
class QbsBaseProjectNode : public ProjectExplorer::ProjectNode class QbsBaseProjectNode : public ProjectExplorer::ProjectNode
{ {
Q_OBJECT Q_OBJECT
@@ -100,9 +98,6 @@ public:
const QString &newFilePath); const QString &newFilePath);
QList<ProjectExplorer::RunConfiguration *> runConfigurationsFor(Node *node); QList<ProjectExplorer::RunConfiguration *> runConfigurationsFor(Node *node);
private:
friend class QbsGroupNode;
}; };
// -------------------------------------------------------------------- // --------------------------------------------------------------------
@@ -122,13 +117,10 @@ public:
QString productPath() const; QString productPath() const;
static void setGroup(QbsBaseProjectNode *root, const qbs::GroupData *group,
const QString &productPath, QList<Node *> keepers);
private: private:
static void setupFolders(QbsBaseProjectNode *topLevel, FolderNode *root, FileTreeNode *node, void setupFolders(ProjectExplorer::FolderNode *root, FileTreeNode *node,
const QString &baseDirPath, const QString &baseDirPath,
QList<ProjectExplorer::Node *> keepers = QList<ProjectExplorer::Node *>()); QList<ProjectExplorer::Node *> keepers = QList<ProjectExplorer::Node *>());
const qbs::GroupData *m_group; const qbs::GroupData *m_group;
QString m_productPath; QString m_productPath;