*\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