diff options
author | Christian Stenger <christian.stenger@digia.com> | 2014-10-07 12:30:54 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@theqtcompany.com> | 2014-12-04 13:52:14 +0100 |
commit | 2f4139e5d313902683a3a4a98f9ef012afff8734 (patch) | |
tree | 5e1c10378f5a4d9ca2e45dd39b2a6f4dba06d6ee /plugins/autotest/testtreeitem.cpp | |
download | qt-creator-2f4139e5d313902683a3a4a98f9ef012afff8734.tar.gz |
Initial commit
Diffstat (limited to 'plugins/autotest/testtreeitem.cpp')
-rw-r--r-- | plugins/autotest/testtreeitem.cpp | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/plugins/autotest/testtreeitem.cpp b/plugins/autotest/testtreeitem.cpp new file mode 100644 index 0000000000..7fb8b85e19 --- /dev/null +++ b/plugins/autotest/testtreeitem.cpp @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Creator Enterprise Auto Test Add-on. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +#include "testtreeitem.h" + +namespace Autotest { +namespace Internal { + +TestTreeItem::TestTreeItem(const QString &name, const QString &filePath, Type type, TestTreeItem *parent) + : m_name(name), + m_filePath(filePath), + m_checked(type == ROOT ? Qt::Unchecked : Qt::Checked), + m_type(type), + m_line(0), + m_parent(parent) +{ +} + +TestTreeItem::~TestTreeItem() +{ + removeChildren(); +} + +TestTreeItem *TestTreeItem::child(int row) +{ + return m_children.at(row); +} + +TestTreeItem *TestTreeItem::parent() const +{ + return m_parent; +} + +void TestTreeItem::appendChild(TestTreeItem *child) +{ + m_children.append(child); +} + +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; + if (m_filePath != modified->m_filePath) { + m_filePath = modified->m_filePath; + hasBeenModified = true; + } + if (m_name != modified->m_name) { + m_name = modified->m_name; + hasBeenModified = true; + } + if (m_line != modified->m_line) { + m_line = modified->m_line; + hasBeenModified = true; + } + return hasBeenModified; +} + +void TestTreeItem::setChecked(const Qt::CheckState checkState) +{ + switch (m_type) { + case ROOT: + return; + case TEST_FUNCTION: + m_checked = (checkState == Qt::Unchecked ? Qt::Unchecked : Qt::Checked); + m_parent->revalidateCheckState(); + break; + case TEST_CLASS: + Qt::CheckState usedState = (checkState == Qt::Unchecked ? Qt::Unchecked : Qt::Checked); + foreach (TestTreeItem *child, m_children) { + child->setChecked(usedState); + } + m_checked = usedState; + } +} + +void TestTreeItem::revalidateCheckState() +{ + if (m_children.size() == 0) + return; + bool foundChecked = false; + bool foundUnchecked = false; + foreach (const TestTreeItem *child, m_children) { + foundChecked |= (child->m_checked != Qt::Unchecked); + foundUnchecked |= (child->m_checked == Qt::Unchecked); + if (foundChecked && foundUnchecked) { + m_checked = Qt::PartiallyChecked; + return; + } + } + m_checked = (foundUnchecked ? Qt::Unchecked : Qt::Checked); +} + +} // namespace Internal +} // namespace Autotest |