diff options
Diffstat (limited to 'plugins/autotest/testtreeitem.cpp')
-rw-r--r-- | plugins/autotest/testtreeitem.cpp | 97 |
1 files changed, 30 insertions, 67 deletions
diff --git a/plugins/autotest/testtreeitem.cpp b/plugins/autotest/testtreeitem.cpp index bea7766287..8e36d95577 100644 --- a/plugins/autotest/testtreeitem.cpp +++ b/plugins/autotest/testtreeitem.cpp @@ -23,7 +23,6 @@ #include <utils/qtcassert.h> #include <QIcon> -#include <QVariant> #include <texteditor/texteditor.h> @@ -31,11 +30,11 @@ namespace Autotest { namespace Internal { TestTreeItem::TestTreeItem(const QString &name, const QString &filePath, Type type) - : m_name(name), + : TreeItem( { name } ), + m_name(name), m_filePath(filePath), m_type(type), - m_line(0), - m_parent(0) + m_line(0) { switch (m_type) { case TEST_CLASS: @@ -53,35 +52,17 @@ TestTreeItem::~TestTreeItem() } TestTreeItem::TestTreeItem(const TestTreeItem &other) - : m_name(other.m_name), + : TreeItem( { other.m_name } ), + m_name(other.m_name), m_filePath(other.m_filePath), m_checked(other.m_checked), m_type(other.m_type), m_line(other.m_line), m_column(other.m_column), - m_mainFile(other.m_mainFile), - m_parent(0) + m_mainFile(other.m_mainFile) { - foreach (const TestTreeItem *child, other.m_children) - appendChild(new TestTreeItem(*child)); -} - -TestTreeItem *TestTreeItem::child(int row) const -{ - return m_children.at(row); -} - -TestTreeItem *TestTreeItem::parent() const -{ - return m_parent; -} - -void TestTreeItem::appendChild(TestTreeItem *child) -{ - QTC_ASSERT(child->m_parent == 0, return); - - child->m_parent = this; - m_children.append(child); + for (int row = 0, count = other.childCount(); row < count; ++row) + appendChild(new TestTreeItem(*childItem(row))); } static QIcon testTreeIcon(TestTreeItem::Type type) @@ -124,7 +105,7 @@ QVariant TestTreeItem::data(int /*column*/, int role) const case TEST_CLASS: return m_name.isEmpty() ? QVariant() : checked(); case TEST_FUNCTION: - if (m_parent && m_parent->name().isEmpty()) + if (parentItem() && parentItem()->name().isEmpty()) return QVariant(); return checked(); default: @@ -143,7 +124,7 @@ QVariant TestTreeItem::data(int /*column*/, int role) const case TEST_CLASS: return m_name.isEmpty(); case TEST_FUNCTION: - return m_parent ? m_parent->name().isEmpty() : false; + return parentItem() ? parentItem()->name().isEmpty() : false; default: return false; } @@ -163,34 +144,6 @@ bool TestTreeItem::setData(int /*column*/, const QVariant &data, int role) return false; } -int TestTreeItem::row() const -{ - if (m_parent) - return m_parent->m_children.indexOf(const_cast<TestTreeItem *>(this)); - return 0; -} - -int TestTreeItem::childCount() const -{ - return m_children.size(); -} - -void TestTreeItem::removeChildren() -{ - qDeleteAll(m_children); - m_children.clear(); -} - -bool TestTreeItem::removeChild(int row) -{ - if (row < 0 || row >= m_children.size()) - return false; - TestTreeItem *child = m_children.at(row); - m_children.removeAt(row); - delete child; - return true; -} - bool TestTreeItem::modifyContent(const TestTreeItem *modified) { bool hasBeenModified = false; @@ -222,14 +175,13 @@ void TestTreeItem::setChecked(const Qt::CheckState checkState) switch (m_type) { case TEST_FUNCTION: { m_checked = (checkState == Qt::Unchecked ? Qt::Unchecked : Qt::Checked); - m_parent->revalidateCheckState(); + parentItem()->revalidateCheckState(); break; } case TEST_CLASS: { Qt::CheckState usedState = (checkState == Qt::Unchecked ? Qt::Unchecked : Qt::Checked); - foreach (TestTreeItem *child, m_children) { - child->setChecked(usedState); - } + for (int row = 0, count = childCount(); row < count; ++row) + childItem(row)->setChecked(usedState); m_checked = usedState; } default: @@ -247,8 +199,8 @@ Qt::CheckState TestTreeItem::checked() const case TEST_SPECIALFUNCTION: return Qt::Unchecked; default: - if (m_parent) - return m_parent->m_checked; + if (parent()) + return parentItem()->m_checked; } return Qt::Unchecked; } @@ -256,18 +208,29 @@ Qt::CheckState TestTreeItem::checked() const QList<QString> TestTreeItem::getChildNames() const { QList<QString> names; - foreach (TestTreeItem *item, m_children) - names << item->name(); + for (int row = 0, count = childCount(); row < count; ++row) + names << childItem(row)->name(); return names; } +TestTreeItem *TestTreeItem::parentItem() const +{ + return static_cast<TestTreeItem *>(parent()); +} + +TestTreeItem *TestTreeItem::childItem(int row) const +{ + return static_cast<TestTreeItem *>(child(row)); +} + void TestTreeItem::revalidateCheckState() { - if (m_children.size() == 0) + if (childCount() == 0) return; bool foundChecked = false; bool foundUnchecked = false; - foreach (const TestTreeItem *child, m_children) { + for (int row = 0, count = childCount(); row < count; ++row) { + TestTreeItem *child = childItem(row); switch (child->type()) { case TEST_DATAFUNCTION: case TEST_SPECIALFUNCTION: |