git-svn-id: file:///svnroot/family-shop-mgr@35 26eb2498-383b-47a6-be48-5d6f36779e85
[family-shop-mgr] / code / family-shop-mgr / model / ShoppingTreeItem.cpp
index 6e473e7..77c33eb 100644 (file)
 #include "ShoppingTreeItem.h"\r
 \r
 \r
-ShoppingTreeItem::ShoppingTreeItem(QDomNode &node, int row, ShoppingTreeItem *parent)\r
+ShoppingTreeItem::ShoppingTreeItem(QDomNode &node, ShoppingTreeItem *parent)\r
 {\r
     domNode = node;\r
-    rowNumber = row;\r
     parentItem = parent;\r
 }\r
 \r
@@ -71,7 +70,7 @@ ShoppingTreeItem *ShoppingTreeItem::child(int i)
     }\r
     if (i >= 0 && i < childElementsList.count()) {\r
         childNode = childElementsList.at(i);\r
-        ShoppingTreeItem *childItem = new ShoppingTreeItem(childNode, i, this);\r
+        ShoppingTreeItem *childItem = new ShoppingTreeItem(childNode, this);\r
         childItems[i] = childItem;\r
         return childItem;\r
     }\r
@@ -81,5 +80,42 @@ ShoppingTreeItem *ShoppingTreeItem::child(int i)
 /*******************************************************************/\r
 int ShoppingTreeItem::row()\r
 {\r
-    return rowNumber;\r
+    return parent()->childItems.key(this);\r
+}\r
+\r
+/*******************************************************************/\r
+bool ShoppingTreeItem::addChild(ShoppingTreeItem *item, int row)\r
+{\r
+    offsetChildAtAdd(row);\r
+    childItems.insert(row, item);\r
+    return true;\r
+}\r
+\r
+/*******************************************************************/\r
+bool ShoppingTreeItem::removeChild(int row)\r
+{\r
+    delete childItems[row];\r
+    childItems.remove(row);\r
+    offsetChildAtRemove(row);\r
+    return true;\r
+}\r
+\r
+/*******************************************************************/\r
+void ShoppingTreeItem::offsetChildAtAdd(int row)\r
+{\r
+    if(childItems.contains(row))\r
+    {\r
+        offsetChildAtAdd(row + 1);\r
+        childItems.insert(row + 1, childItems[row]);\r
+    }\r
+}\r
+\r
+/*******************************************************************/\r
+void ShoppingTreeItem::offsetChildAtRemove(int row)\r
+{\r
+    if(childItems.contains(row + 1))\r
+    {\r
+        childItems.insert(row, childItems[row + 1]);\r
+        offsetChildAtRemove(row + 1);\r
+    }\r
 }\r