From a4b2801fed65088f28efccc07d16952aaa9455a6 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 6 Feb 2015 21:00:56 +0100 Subject: [PATCH] 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 --- src/libs/utils/treemodel.cpp | 3 +++ src/libs/utils/treemodel.h | 13 ++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/treemodel.cpp b/src/libs/utils/treemodel.cpp index f72bdbf35e9..12e3c33beea 100644 --- a/src/libs/utils/treemodel.cpp +++ b/src/libs/utils/treemodel.cpp @@ -777,10 +777,13 @@ void TreeItem::setModel(TreeModel *model) void TreeItem::walkTree(TreeItemVisitor *visitor) { if (visitor->preVisit(this)) { + ++visitor->m_level; visitor->visit(this); foreach (TreeItem *item, m_children) item->walkTree(visitor); + --visitor->m_level; } + visitor->postVisit(this); } void TreeItem::walkTree(std::function f) diff --git a/src/libs/utils/treemodel.h b/src/libs/utils/treemodel.h index 175e5bb0c98..a4dfba5fd2d 100644 --- a/src/libs/utils/treemodel.h +++ b/src/libs/utils/treemodel.h @@ -49,11 +49,18 @@ class TreeModel; class QTCREATOR_UTILS_EXPORT TreeItemVisitor { public: - TreeItemVisitor() {} + TreeItemVisitor() : m_level(0) {} virtual ~TreeItemVisitor() {} - bool preVisit(TreeItem *) { return true; } - void visit(TreeItem *) {} + virtual bool preVisit(TreeItem *) { return true; } + 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