Qbs: Remove QbsBaseProjectNode layer

Change-Id: I7c43b0b04503d4c9a25c5fe758defc589655f387
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-02-26 16:47:40 +01:00
parent e318ecd81d
commit f066af4c14
3 changed files with 13 additions and 29 deletions

View File

@@ -230,20 +230,12 @@ static bool supportsNodeAction(ProjectAction action, const Node *node)
return false;
}
// ---------------------------------------------------------------------------
// QbsBaseProjectNode:
// ---------------------------------------------------------------------------
QbsBaseProjectNode::QbsBaseProjectNode(const Utils::FileName &path) :
ProjectExplorer::ProjectNode(path)
{ }
// --------------------------------------------------------------------
// QbsGroupNode:
// --------------------------------------------------------------------
QbsGroupNode::QbsGroupNode(const qbs::GroupData &grp, const QString &productPath) :
QbsBaseProjectNode(Utils::FileName())
ProjectNode(Utils::FileName())
{
static QIcon groupIcon = QIcon(QString(Constants::QBS_GROUP_ICON));
setIcon(groupIcon);
@@ -320,7 +312,7 @@ bool QbsGroupNode::renameFile(const QString &filePath, const QString &newFilePat
FolderNode::AddNewInformation QbsGroupNode::addNewInformation(const QStringList &files,
Node *context) const
{
AddNewInformation info = QbsBaseProjectNode::addNewInformation(files, context);
AddNewInformation info = ProjectNode::addNewInformation(files, context);
if (context != this)
--info.priority;
return info;
@@ -331,7 +323,7 @@ FolderNode::AddNewInformation QbsGroupNode::addNewInformation(const QStringList
// --------------------------------------------------------------------
QbsProductNode::QbsProductNode(const qbs::ProductData &prd) :
QbsBaseProjectNode(Utils::FileName::fromString(prd.location().filePath())),
ProjectNode(Utils::FileName::fromString(prd.location().filePath())),
m_qbsProductData(prd)
{
static QIcon productIcon = Core::FileIconProvider::directoryIcon(Constants::QBS_PRODUCT_OVERLAY_ICON);
@@ -417,7 +409,7 @@ QString QbsProductNode::buildKey() const
// --------------------------------------------------------------------
QbsProjectNode::QbsProjectNode(const Utils::FileName &projectDirectory) :
QbsBaseProjectNode(projectDirectory)
ProjectNode(projectDirectory)
{
static QIcon projectIcon = Core::FileIconProvider::directoryIcon(ProjectExplorer::Constants::FILEOVERLAY_QT);
setIcon(projectIcon);

View File

@@ -35,23 +35,11 @@ namespace Internal {
class QbsNodeTreeBuilder;
class QbsProject;
// ---------------------------------------------------------------------------
// QbsBaseProjectNode:
// ---------------------------------------------------------------------------
class QbsGroupNode;
class QbsBaseProjectNode : public ProjectExplorer::ProjectNode
{
public:
explicit QbsBaseProjectNode(const Utils::FileName &absoluteFilePath);
};
// --------------------------------------------------------------------
// QbsGroupNode:
// --------------------------------------------------------------------
class QbsGroupNode : public QbsBaseProjectNode
class QbsGroupNode : public ProjectExplorer::ProjectNode
{
public:
QbsGroupNode(const qbs::GroupData &grp, const QString &productPath);
@@ -72,7 +60,7 @@ private:
// QbsProductNode:
// --------------------------------------------------------------------
class QbsProductNode : public QbsBaseProjectNode
class QbsProductNode : public ProjectExplorer::ProjectNode
{
public:
explicit QbsProductNode(const qbs::ProductData &prd);
@@ -96,7 +84,7 @@ private:
// QbsProjectNode:
// ---------------------------------------------------------------------------
class QbsProjectNode : public QbsBaseProjectNode
class QbsProjectNode : public ProjectExplorer::ProjectNode
{
public:
explicit QbsProjectNode(const Utils::FileName &projectDirectory);

View File

@@ -321,9 +321,11 @@ void QbsProjectManagerPlugin::updateBuildActions()
if (Node *editorNode = currentEditorNode()) {
fileName = editorNode->filePath().fileName();
ProjectNode *parentProjectNode = editorNode->parentProjectNode();
// FIXME: This code is wrong: If the file is in a Group, then productNode will be
// null and the action will be disabled. We have to walk up the tree.
auto productNode = dynamic_cast<QbsProductNode *>(editorNode->parentProjectNode());
auto productNode = dynamic_cast<QbsProductNode *>(parentProjectNode);
if (productNode) {
productVisible = true;
productName = productNode->displayName();
@@ -331,7 +333,9 @@ void QbsProjectManagerPlugin::updateBuildActions()
if (QbsProject *editorProject = currentEditorProject()) {
enabled = !BuildManager::isBuilding(editorProject) && !editorProject->isParsing();
fileVisible = dynamic_cast<QbsBaseProjectNode *>(editorNode->parentProjectNode());
fileVisible = productNode
|| dynamic_cast<QbsProjectNode *>(parentProjectNode)
|| dynamic_cast<QbsGroupNode *>(parentProjectNode);
}
}