git-svn-id: file:///svnroot/family-shop-mgr@3 26eb2498-383b-47a6-be48-5d6f36779e85
[family-shop-mgr] / code / family-shop-mgr / ShoppingTreeItem.cpp
index f81fa1d..e66a4ed 100644 (file)
@@ -21,7 +21,7 @@
 \r
 #include "ShoppingTreeItem.h"\r
 \r
-ShoppingTreeItem::ShoppingTreeItem(const QVector<QVariant> &data, TreeItem *parent)\r
+ShoppingTreeItem::ShoppingTreeItem(const QVector<QVariant> &data, ShoppingTreeItem *parent)\r
 {\r
     parentItem = parent;\r
     itemData = data;\r
@@ -31,3 +31,98 @@ ShoppingTreeItem::~ShoppingTreeItem()
 {\r
     qDeleteAll(childItems);\r
 }\r
+\r
+ShoppingTreeItem *ShoppingTreeItem::child(int number)\r
+{\r
+    return childItems.value(number);\r
+}\r
+\r
+int ShoppingTreeItem::childCount() const\r
+{\r
+    return childItems.count();\r
+}\r
+\r
+int ShoppingTreeItem::childNumber() const\r
+{\r
+    if (parentItem)\r
+        return parentItem->childItems.indexOf(const_cast<ShoppingTreeItem*>(this));\r
+\r
+    return 0;\r
+}\r
+\r
+int ShoppingTreeItem::columnCount() const\r
+{\r
+    return itemData.count();\r
+}\r
+\r
+QVariant ShoppingTreeItem::data(int column) const\r
+{\r
+    return itemData.value(column);\r
+}\r
+\r
+bool ShoppingTreeItem::insertChildren(int position, int count, int columns)\r
+{\r
+    if (position < 0 || position > childItems.size())\r
+        return false;\r
+\r
+    for (int row = 0; row < count; ++row) {\r
+        QVector<QVariant> data(columns);\r
+        ShoppingTreeItem *item = new ShoppingTreeItem(data, this);\r
+        childItems.insert(position, item);\r
+    }\r
+\r
+    return true;\r
+}\r
+\r
+bool ShoppingTreeItem::insertColumns(int position, int columns)\r
+{\r
+    if (position < 0 || position > itemData.size())\r
+        return false;\r
+\r
+    for (int column = 0; column < columns; ++column)\r
+        itemData.insert(position, QVariant());\r
+\r
+    foreach (ShoppingTreeItem *child, childItems)\r
+        child->insertColumns(position, columns);\r
+\r
+    return true;\r
+}\r
+\r
+ShoppingTreeItem *ShoppingTreeItem::parent()\r
+{\r
+    return parentItem;\r
+}\r
+\r
+bool ShoppingTreeItem::removeChildren(int position, int count)\r
+{\r
+    if (position < 0 || position + count > childItems.size())\r
+        return false;\r
+\r
+    for (int row = 0; row < count; ++row)\r
+        delete childItems.takeAt(position);\r
+\r
+    return true;\r
+}\r
+\r
+bool ShoppingTreeItem::removeColumns(int position, int columns)\r
+{\r
+    if (position < 0 || position + columns > itemData.size())\r
+        return false;\r
+\r
+    for (int column = 0; column < columns; ++column)\r
+        itemData.remove(position);\r
+\r
+    foreach (ShoppingTreeItem *child, childItems)\r
+        child->removeColumns(position, columns);\r
+\r
+    return true;\r
+}\r
+\r
+bool ShoppingTreeItem::setData(int column, const QVariant &value)\r
+{\r
+    if (column < 0 || column >= itemData.size())\r
+        return false;\r
+\r
+    itemData[column] = value;\r
+    return true;\r
+}\r