git-svn-id: file:///svnroot/family-shop-mgr@32 26eb2498-383b-47a6-be48-5d6f36779e85
[family-shop-mgr] / code / family-shop-mgr / ShoppingTreeItem.cpp
index c5a74e7..ae21ccc 100644 (file)
  *\r
  */\r
 \r
-#include "ShoppingTreeItem.h"\r
-\r
-/*******************************************************************/\r
-ShoppingTreeItem::ShoppingTreeItem(const QVector<QVariant> &data,\r
-                                   ShoppingTreeItem *parent) : m_itemType(NotDefined)\r
-{\r
-    parentItem = parent;\r
-    itemData = data;\r
-}\r
-\r
-/*******************************************************************/\r
-ShoppingTreeItem::~ShoppingTreeItem()\r
-{\r
-    qDeleteAll(childItems);\r
-}\r
-\r
-/*******************************************************************/\r
-ShoppingTreeItem *ShoppingTreeItem::child(int number)\r
-{\r
-    return childItems.value(number);\r
-}\r
+#include <QtXml>\r
 \r
-/*******************************************************************/\r
-int ShoppingTreeItem::childCount() const\r
-{\r
-    return childItems.count();\r
-}\r
-\r
-/*******************************************************************/\r
-int ShoppingTreeItem::childNumber() const\r
-{\r
-    if (parentItem)\r
-        return parentItem->childItems.indexOf(const_cast<ShoppingTreeItem*>(this));\r
+#include "ShoppingTreeItem.h"\r
 \r
-    return 0;\r
-}\r
 \r
-/*******************************************************************/\r
-int ShoppingTreeItem::columnCount() const\r
+DomItem::DomItem(QDomNode &node, int row, DomItem *parent)\r
 {\r
-    return itemData.count();\r
+    domNode = node;\r
+    rowNumber = row;\r
+    parentItem = parent;\r
 }\r
 \r
 /*******************************************************************/\r
-QVariant ShoppingTreeItem::data(int column) const\r
+DomItem::~DomItem()\r
 {\r
-    return itemData.value(column);\r
+    QHash<int,DomItem*>::iterator it;\r
+    for (it = childItems.begin(); it != childItems.end(); ++it)\r
+        delete it.value();\r
 }\r
 \r
 /*******************************************************************/\r
-bool ShoppingTreeItem::insertChildren(int position, int count, int columns,\r
-                                      ShoppingTreeModel* model)\r
+QDomNode DomItem::node() const\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
-        if(model)\r
-        {\r
-            connect(item, SIGNAL(childItemSet(ShoppingTreeItem*)), model,\r
-                    SLOT(registerInsertedChild(ShoppingTreeItem*)));\r
-            connect(item, SIGNAL(childRemoved(ShoppingTreeItem*)), model,\r
-                    SLOT(deleteRemovedChild(ShoppingTreeItem*)));\r
-        }\r
-    }\r
-\r
-    return true;\r
+    return domNode;\r
 }\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
-/*******************************************************************/\r
-ShoppingTreeItem *ShoppingTreeItem::parent()\r
+DomItem *DomItem::parent()\r
 {\r
     return parentItem;\r
 }\r
 \r
 /*******************************************************************/\r
-bool ShoppingTreeItem::removeChildren(int position, int count)\r
+DomItem *DomItem::child(int i)\r
 {\r
-    if (position < 0 || position + count > childItems.size())\r
-        return false;\r
+    if (childItems.contains(i))\r
+        return childItems[i];\r
 \r
-    for (int row = 0; row < count; ++row)\r
+    QDomNodeList childNodesList = domNode.childNodes();\r
+    QList<QDomNode> childElementsList;\r
+    QDomNode childNode;\r
+    for(int j = 0; !(childNode = childNodesList.at(j)).isNull(); j++)\r
     {\r
-        ShoppingTreeItem *item = childItems.takeAt(position);\r
-        emit childRemoved(item);\r
-        delete item;\r
+        if(childNode.isElement())\r
+        {\r
+            if(childNode.toElement().nodeName() == "category" ||\r
+               childNode.toElement().nodeName() == "item")\r
+                childElementsList.append(childNode);\r
+        }\r
     }\r
-\r
-    return true;\r
-}\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
-/*******************************************************************/\r
-bool ShoppingTreeItem::setData(int column, const QVariant &value)\r
-{\r
-    if (column < 0 || column >= itemData.size())\r
-        return false;\r
-\r
-    if(m_itemType == Category && column != 0)\r
-        return false;\r
-\r
-    itemData[column] = value;\r
-    emit dataChanged(column);\r
-    return true;\r
-}\r
-\r
-/*******************************************************************/\r
-bool ShoppingTreeItem::setItemType(ItemType type)\r
-{\r
-    if(type == NotDefined)\r
-        return false;\r
-\r
-    m_itemType = type;\r
-\r
-    if(m_itemType == type)\r
-    {\r
-        emit childItemSet(this);\r
-        return true;\r
+    if (i >= 0 && i < childElementsList.count()) {\r
+        childNode = childElementsList.at(i);\r
+        DomItem *childItem = new DomItem(childNode, i, this);\r
+        childItems[i] = childItem;\r
+        return childItem;\r
     }\r
-    return false;\r
+    return 0;\r
 }\r
 \r
 /*******************************************************************/\r
-ShoppingTreeItem::ItemType ShoppingTreeItem::getItemType() const\r
+int DomItem::row()\r
 {\r
-    return m_itemType;\r
+    return rowNumber;\r
 }\r