Make gtest related items checkable

This is a preparation for supporting 'Run Selected Tests' for gtest
related tests.

Change-Id: I4fc46b9c394d8c748b42b2cda2d27d3597a1c273
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
This commit is contained in:
Christian Stenger
2015-12-09 10:48:27 +01:00
parent 650be0e496
commit 1cfe46df01
2 changed files with 20 additions and 8 deletions

View File

@@ -39,6 +39,9 @@ TestTreeItem::TestTreeItem(const QString &name, const QString &filePath, Type ty
switch (m_type) { switch (m_type) {
case TestClass: case TestClass:
case TestFunction: case TestFunction:
case GTestCase:
case GTestName:
case GTestNameDisabled:
m_checked = Qt::Checked; m_checked = Qt::Checked;
break; break;
default: default:
@@ -105,13 +108,13 @@ QVariant TestTreeItem::data(int /*column*/, int role) const
case TestDataFunction: case TestDataFunction:
case TestSpecialFunction: case TestSpecialFunction:
case TestDataTag: case TestDataTag:
case GTestCase:
case GTestName:
case GTestNameDisabled:
return QVariant(); return QVariant();
case TestClass: case TestClass:
case GTestCase:
return m_name.isEmpty() ? QVariant() : checked(); return m_name.isEmpty() ? QVariant() : checked();
case TestFunction: case TestFunction:
case GTestName:
case GTestNameDisabled:
if (parentItem() && parentItem()->name().isEmpty()) if (parentItem() && parentItem()->name().isEmpty())
return QVariant(); return QVariant();
return checked(); return checked();
@@ -180,12 +183,15 @@ bool TestTreeItem::modifyContent(const TestTreeItem *modified)
void TestTreeItem::setChecked(const Qt::CheckState checkState) void TestTreeItem::setChecked(const Qt::CheckState checkState)
{ {
switch (m_type) { switch (m_type) {
case TestFunction: { case TestFunction:
case GTestName:
case GTestNameDisabled: {
m_checked = (checkState == Qt::Unchecked ? Qt::Unchecked : Qt::Checked); m_checked = (checkState == Qt::Unchecked ? Qt::Unchecked : Qt::Checked);
parentItem()->revalidateCheckState(); parentItem()->revalidateCheckState();
break; break;
} }
case TestClass: { case TestClass:
case GTestCase: {
Qt::CheckState usedState = (checkState == Qt::Unchecked ? Qt::Unchecked : Qt::Checked); Qt::CheckState usedState = (checkState == Qt::Unchecked ? Qt::Unchecked : Qt::Checked);
for (int row = 0, count = childCount(); row < count; ++row) for (int row = 0, count = childCount(); row < count; ++row)
childItem(row)->setChecked(usedState); childItem(row)->setChecked(usedState);
@@ -201,6 +207,9 @@ Qt::CheckState TestTreeItem::checked() const
switch (m_type) { switch (m_type) {
case TestClass: case TestClass:
case TestFunction: case TestFunction:
case GTestCase:
case GTestName:
case GTestNameDisabled:
return m_checked; return m_checked;
case TestDataFunction: case TestDataFunction:
case TestSpecialFunction: case TestSpecialFunction:

View File

@@ -139,10 +139,13 @@ bool TestTreeModel::setData(const QModelIndex &index, const QVariant &value, int
if (role == Qt::CheckStateRole) { if (role == Qt::CheckStateRole) {
switch (item->type()) { switch (item->type()) {
case TestTreeItem::TestClass: case TestTreeItem::TestClass:
case TestTreeItem::GTestCase:
if (item->childCount() > 0) if (item->childCount() > 0)
emit dataChanged(index.child(0, 0), index.child(item->childCount() - 1, 0)); emit dataChanged(index.child(0, 0), index.child(item->childCount() - 1, 0));
break; break;
case TestTreeItem::TestFunction: case TestTreeItem::TestFunction:
case TestTreeItem::GTestName:
case TestTreeItem::GTestNameDisabled:
emit dataChanged(index.parent(), index.parent()); emit dataChanged(index.parent(), index.parent());
break; break;
default: // avoid warning regarding unhandled enum member default: // avoid warning regarding unhandled enum member
@@ -162,10 +165,13 @@ Qt::ItemFlags TestTreeModel::flags(const QModelIndex &index) const
TestTreeItem *item = static_cast<TestTreeItem *>(itemForIndex(index)); TestTreeItem *item = static_cast<TestTreeItem *>(itemForIndex(index));
switch(item->type()) { switch(item->type()) {
case TestTreeItem::TestClass: case TestTreeItem::TestClass:
case TestTreeItem::GTestCase:
if (item->name().isEmpty()) if (item->name().isEmpty())
return Qt::ItemIsEnabled | Qt::ItemIsSelectable; return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsTristate | Qt::ItemIsUserCheckable; return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsTristate | Qt::ItemIsUserCheckable;
case TestTreeItem::TestFunction: case TestTreeItem::TestFunction:
case TestTreeItem::GTestName:
case TestTreeItem::GTestNameDisabled:
if (item->parentItem()->name().isEmpty()) if (item->parentItem()->name().isEmpty())
return Qt::ItemIsEnabled | Qt::ItemIsSelectable; return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable; return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable;
@@ -174,9 +180,6 @@ Qt::ItemFlags TestTreeModel::flags(const QModelIndex &index) const
case TestTreeItem::TestDataFunction: case TestTreeItem::TestDataFunction:
case TestTreeItem::TestSpecialFunction: case TestTreeItem::TestSpecialFunction:
case TestTreeItem::TestDataTag: case TestTreeItem::TestDataTag:
case TestTreeItem::GTestCase:
case TestTreeItem::GTestName:
case TestTreeItem::GTestNameDisabled:
default: default:
return Qt::ItemIsEnabled | Qt::ItemIsSelectable; return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
} }