Move data handling almost from model to item

Part of preparing to re-use QC's TreeModel/TreeItem for
TestTreeModel/TestTreeItem.

Change-Id: I3752d800d836a5cd9067cacfcd181d93ec957095
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
Christian Stenger
2015-09-10 10:57:15 +02:00
parent 65d3a27db7
commit 475d6b3af2
5 changed files with 108 additions and 102 deletions

View File

@@ -17,10 +17,16 @@
**
****************************************************************************/
#include "autotestconstants.h"
#include "testtreeitem.h"
#include <utils/qtcassert.h>
#include <QIcon>
#include <QVariant>
#include <texteditor/texteditor.h>
namespace Autotest {
namespace Internal {
@@ -78,6 +84,85 @@ void TestTreeItem::appendChild(TestTreeItem *child)
m_children.append(child);
}
static QIcon testTreeIcon(TestTreeItem::Type type)
{
static QIcon icons[] = {
QIcon(),
QIcon(QLatin1String(":/images/class.png")),
QIcon(QLatin1String(":/images/func.png")),
QIcon(QLatin1String(":/images/data.png"))
};
if (type >= sizeof(icons))
return icons[2];
return icons[type];
}
QVariant TestTreeItem::data(int /*column*/, int role) const
{
switch (role) {
case Qt::DisplayRole:
if (m_type == ROOT && childCount() == 0)
return QString(m_name + QObject::tr(" (none)"));
else if (m_name.isEmpty())
return QObject::tr(Constants::UNNAMED_QUICKTESTS);
else
return m_name;
case Qt::ToolTipRole:
if (m_type == TEST_CLASS && m_name.isEmpty()) {
return QObject::tr("<p>Give all test cases a name to ensure correct behavior "
"when running test cases and to be able to select them.</p>");
}
return m_filePath;
case Qt::DecorationRole:
return testTreeIcon(m_type);
case Qt::CheckStateRole:
switch (m_type) {
case ROOT:
case TEST_DATAFUNCTION:
case TEST_SPECIALFUNCTION:
return QVariant();
case TEST_CLASS:
return m_name.isEmpty() ? QVariant() : checked();
case TEST_FUNCTION:
if (m_parent && m_parent->name().isEmpty())
return QVariant();
return checked();
default:
return checked();
}
case LinkRole: {
QVariant itemLink;
itemLink.setValue(TextEditor::TextEditorWidget::Link(m_filePath, m_line, m_column));
return itemLink;
}
case ItalicRole:
switch (m_type) {
case TEST_DATAFUNCTION:
case TEST_SPECIALFUNCTION:
return true;
case TEST_CLASS:
return m_name.isEmpty();
case TEST_FUNCTION:
return m_parent ? m_parent->name().isEmpty() : false;
default:
return false;
}
case TypeRole:
return m_type;
}
return QVariant();
}
bool TestTreeItem::setData(int /*column*/, const QVariant &data, int role)
{
if (role == Qt::CheckStateRole) {
Qt::CheckState old = checked();
setChecked((Qt::CheckState)data.toInt());
return checked() != old;
}
return false;
}
int TestTreeItem::row() const
{
if (m_parent)