diff -r 36eb4b8f409e -r 1ad892c1a709 findresultitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/findresultitem.cpp Tue Mar 02 13:59:19 2010 +0000 @@ -0,0 +1,109 @@ +#include + +#include "findresultitem.h" + +FindResultItem::FindResultItem(const QVector &data, FindResultItem *parent) +{ + parentItem = parent; + itemData = data; +} + +FindResultItem::~FindResultItem() +{ + qDeleteAll(childItems); +} + +FindResultItem *FindResultItem::child(int number) +{ + return childItems.value(number); +} + +int FindResultItem::childCount() const +{ + return childItems.count(); +} + +int FindResultItem::childNumber() const +{ + if (parentItem) + return parentItem->childItems.indexOf(const_cast(this)); + + return 0; +} + +int FindResultItem::columnCount() const +{ + return itemData.count(); +} + +QVariant FindResultItem::data(int column) const +{ + return itemData.value(column); +} + +bool FindResultItem::insertChildren(int position, int count, int columns) +{ + if (position < 0 || position > childItems.size()) + return false; + + for (int row = 0; row < count; ++row) { + QVector data(columns); + FindResultItem *item = new FindResultItem(data, this); + childItems.insert(position, item); + } + + return true; +} + +bool FindResultItem::insertColumns(int position, int columns) +{ + if (position < 0 || position > itemData.size()) + return false; + + for (int column = 0; column < columns; ++column) + itemData.insert(position, QVariant()); + + foreach (FindResultItem *child, childItems) + child->insertColumns(position, columns); + + return true; +} + +FindResultItem *FindResultItem::parent() +{ + return parentItem; +} + +bool FindResultItem::removeChildren(int position, int count) +{ + if (position < 0 || position + count > childItems.size()) + return false; + + for (int row = 0; row < count; ++row) + delete childItems.takeAt(position); + + return true; +} + +bool FindResultItem::removeColumns(int position, int columns) +{ + if (position < 0 || position + columns > itemData.size()) + return false; + + for (int column = 0; column < columns; ++column) + itemData.remove(position); + + foreach (FindResultItem *child, childItems) + child->removeColumns(position, columns); + + return true; +} + +bool FindResultItem::setData(int column, const QVariant &value) +{ + if (column < 0 || column >= itemData.size()) + return false; + + itemData[column] = value; + return true; +}