ProjectExplorer: Allow for disabled nodes in the project tree

Change-Id: I82d8284777f5691eb3ba9cf4ef92da05057aac18
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Tobias Hunger
2016-10-31 13:55:52 +01:00
parent ce3e586198
commit 7150c0778b
4 changed files with 19 additions and 21 deletions

View File

@@ -134,7 +134,10 @@ QString Node::tooltip() const
bool Node::isEnabled() const bool Node::isEnabled() const
{ {
return parentFolderNode()->isEnabled(); if (!m_isEnabled)
return false;
FolderNode *parent = parentFolderNode();
return parent ? parent->isEnabled() : true;
} }
QList<ProjectAction> Node::supportedActions(Node *node) const QList<ProjectAction> Node::supportedActions(Node *node) const
@@ -144,6 +147,14 @@ QList<ProjectAction> Node::supportedActions(Node *node) const
return list; return list;
} }
void Node::setEnabled(bool enabled)
{
if (m_isEnabled == enabled)
return;
m_isEnabled = enabled;
emitNodeUpdated();
}
void Node::setProjectNode(ProjectNode *project) void Node::setProjectNode(ProjectNode *project)
{ {
m_projectNode = project; m_projectNode = project;

View File

@@ -115,10 +115,11 @@ public:
int line() const; int line() const;
virtual QString displayName() const; virtual QString displayName() const;
virtual QString tooltip() const; virtual QString tooltip() const;
virtual bool isEnabled() const; bool isEnabled() const;
virtual QList<ProjectAction> supportedActions(Node *node) const; virtual QList<ProjectAction> supportedActions(Node *node) const;
void setEnabled(bool enabled);
void setAbsoluteFilePathAndLine(const Utils::FileName &filePath, int line); void setAbsoluteFilePathAndLine(const Utils::FileName &filePath, int line);
void emitNodeUpdated(); void emitNodeUpdated();
@@ -143,6 +144,7 @@ private:
Utils::FileName m_filePath; Utils::FileName m_filePath;
int m_line; int m_line;
NodeType m_nodeType; NodeType m_nodeType;
bool m_isEnabled = true;
}; };
class PROJECTEXPLORER_EXPORT FileNode : public Node class PROJECTEXPLORER_EXPORT FileNode : public Node
@@ -270,8 +272,6 @@ public:
void accept(NodesVisitor *visitor) override; void accept(NodesVisitor *visitor) override;
bool isEnabled() const override { return true; }
// to be called in implementation of // to be called in implementation of
// the corresponding public functions // the corresponding public functions
void addProjectNodes(const QList<ProjectNode*> &subProjects); void addProjectNodes(const QList<ProjectNode*> &subProjects);
@@ -306,8 +306,6 @@ public:
void accept(NodesVisitor *visitor) override; void accept(NodesVisitor *visitor) override;
bool isEnabled() const override { return true; }
bool showInSimpleTree() const override; bool showInSimpleTree() const override;
void projectDisplayNameChanged(Node *node); void projectDisplayNameChanged(Node *node);

View File

@@ -330,14 +330,6 @@ QbsGroupNode::QbsGroupNode(const qbs::GroupData &grp, const QString &productPath
updateQbsGroupData(grp, productPath, true, true); updateQbsGroupData(grp, productPath, true, true);
} }
bool QbsGroupNode::isEnabled() const
{
if (!parentFolderNode() || !m_qbsGroupData.isValid())
return false;
return static_cast<QbsProductNode *>(parentFolderNode())->isEnabled()
&& m_qbsGroupData.isEnabled();
}
QList<ProjectExplorer::ProjectAction> QbsGroupNode::supportedActions(ProjectExplorer::Node *node) const QList<ProjectExplorer::ProjectAction> QbsGroupNode::supportedActions(ProjectExplorer::Node *node) const
{ {
return supportedNodeActions(node, true); return supportedNodeActions(node, true);
@@ -413,6 +405,8 @@ void QbsGroupNode::updateQbsGroupData(const qbs::GroupData &grp, const QString &
bool groupIsEnabled = productIsEnabled && grp.isEnabled(); bool groupIsEnabled = productIsEnabled && grp.isEnabled();
bool updateExisting = groupWasEnabled != groupIsEnabled; bool updateExisting = groupWasEnabled != groupIsEnabled;
setEnabled(groupIsEnabled);
m_productPath = productPath; m_productPath = productPath;
m_qbsGroupData = grp; m_qbsGroupData = grp;
@@ -598,11 +592,6 @@ QbsProductNode::QbsProductNode(const qbs::Project &project, const qbs::ProductDa
setQbsProductData(project, prd); setQbsProductData(project, prd);
} }
bool QbsProductNode::isEnabled() const
{
return m_qbsProductData.isEnabled();
}
bool QbsProductNode::showInSimpleTree() const bool QbsProductNode::showInSimpleTree() const
{ {
return true; return true;
@@ -675,6 +664,8 @@ void QbsProductNode::setQbsProductData(const qbs::Project &project, const qbs::P
bool productIsEnabled = prd.isEnabled(); bool productIsEnabled = prd.isEnabled();
bool updateExisting = productWasEnabled != productIsEnabled; bool updateExisting = productWasEnabled != productIsEnabled;
setEnabled(prd.isEnabled());
setDisplayName(QbsProject::productDisplayName(project, prd)); setDisplayName(QbsProject::productDisplayName(project, prd));
setAbsoluteFilePathAndLine(Utils::FileName::fromString(prd.location().filePath()), line()); setAbsoluteFilePathAndLine(Utils::FileName::fromString(prd.location().filePath()), line());
const QString &productPath = QFileInfo(prd.location().filePath()).absolutePath(); const QString &productPath = QFileInfo(prd.location().filePath()).absolutePath();

View File

@@ -92,7 +92,6 @@ class QbsGroupNode : public QbsBaseProjectNode
public: public:
QbsGroupNode(const qbs::GroupData &grp, const QString &productPath); QbsGroupNode(const qbs::GroupData &grp, const QString &productPath);
bool isEnabled() const override;
QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override;
bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override;
bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override; bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override;
@@ -130,7 +129,6 @@ class QbsProductNode : public QbsBaseProjectNode
public: public:
explicit QbsProductNode(const qbs::Project &project, const qbs::ProductData &prd); explicit QbsProductNode(const qbs::Project &project, const qbs::ProductData &prd);
bool isEnabled() const override;
bool showInSimpleTree() const override; bool showInSimpleTree() const override;
QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override;
bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override;