Debugger: Use Utils::TreeModel for watch window

The circle closes, that's where the code came from.

Change-Id: Ic36ab61ec8886c9a2747aeb29a7245df3ef0b6c4
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
hjk
2015-01-29 09:58:23 +01:00
parent 37bbc8a4d4
commit a6e9f032e3
7 changed files with 355 additions and 623 deletions

View File

@@ -671,6 +671,11 @@ Qt::ItemFlags TreeItem::flags(int column) const
return m_flags;
}
bool TreeItem::hasChildren() const
{
return canFetchMore() || rowCount() > 0;
}
bool TreeItem::canFetchMore() const
{
return false;
@@ -769,6 +774,22 @@ void TreeItem::setModel(TreeModel *model)
item->setModel(model);
}
void TreeItem::walkTree(TreeItemVisitor *visitor)
{
if (visitor->preVisit(this)) {
visitor->visit(this);
foreach (TreeItem *item, m_children)
item->walkTree(visitor);
}
}
void TreeItem::walkTree(std::function<void (TreeItem *)> f)
{
f(this);
foreach (TreeItem *item, m_children)
item->walkTree(f);
}
void TreeItem::clear()
{
while (m_children.size()) {
@@ -898,6 +919,12 @@ QVariant TreeModel::headerData(int section, Qt::Orientation orientation,
return QVariant();
}
bool TreeModel::hasChildren(const QModelIndex &idx) const
{
TreeItem *item = itemFromIndex(idx);
return !item || item->hasChildren();
}
Qt::ItemFlags TreeModel::flags(const QModelIndex &idx) const
{
if (!idx.isValid())
@@ -929,6 +956,13 @@ TreeItem *TreeModel::rootItem() const
return m_root;
}
void TreeModel::setRootItem(TreeItem *item)
{
delete m_root;
m_root = item;
item->setModel(this);
}
void TreeModel::setHeader(const QStringList &displays)
{
m_header = displays;