forked from qt-creator/qt-creator
TreeModel: Make TreeModelVisitor useful
Functions that are meant to be overridden should be virtual. Also add a convience level() function, seems to be a common need. Change-Id: I09d452ab12f0ac29fb31de853057511418a47e7e Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
@@ -777,10 +777,13 @@ void TreeItem::setModel(TreeModel *model)
|
|||||||
void TreeItem::walkTree(TreeItemVisitor *visitor)
|
void TreeItem::walkTree(TreeItemVisitor *visitor)
|
||||||
{
|
{
|
||||||
if (visitor->preVisit(this)) {
|
if (visitor->preVisit(this)) {
|
||||||
|
++visitor->m_level;
|
||||||
visitor->visit(this);
|
visitor->visit(this);
|
||||||
foreach (TreeItem *item, m_children)
|
foreach (TreeItem *item, m_children)
|
||||||
item->walkTree(visitor);
|
item->walkTree(visitor);
|
||||||
|
--visitor->m_level;
|
||||||
}
|
}
|
||||||
|
visitor->postVisit(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TreeItem::walkTree(std::function<void (TreeItem *)> f)
|
void TreeItem::walkTree(std::function<void (TreeItem *)> f)
|
||||||
|
|||||||
@@ -49,11 +49,18 @@ class TreeModel;
|
|||||||
class QTCREATOR_UTILS_EXPORT TreeItemVisitor
|
class QTCREATOR_UTILS_EXPORT TreeItemVisitor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TreeItemVisitor() {}
|
TreeItemVisitor() : m_level(0) {}
|
||||||
virtual ~TreeItemVisitor() {}
|
virtual ~TreeItemVisitor() {}
|
||||||
|
|
||||||
bool preVisit(TreeItem *) { return true; }
|
virtual bool preVisit(TreeItem *) { return true; }
|
||||||
void visit(TreeItem *) {}
|
virtual void visit(TreeItem *) {}
|
||||||
|
virtual void postVisit(TreeItem *) {}
|
||||||
|
|
||||||
|
int level() const { return m_level; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class TreeItem;
|
||||||
|
int m_level;
|
||||||
};
|
};
|
||||||
|
|
||||||
class QTCREATOR_UTILS_EXPORT TreeItem
|
class QTCREATOR_UTILS_EXPORT TreeItem
|
||||||
|
|||||||
Reference in New Issue
Block a user