+\r
+/*******************************************************************/\r
+bool ShoppingTreeModel::insertRows(int row, int count, const QModelIndex &parent, ItemType type)\r
+{\r
+ ShoppingTreeItem *parentItem;\r
+\r
+ if (!parent.isValid())\r
+ parentItem = rootItem;\r
+ else\r
+ parentItem = static_cast<ShoppingTreeItem*>(parent.internalPointer());\r
+\r
+ for(int i = 0; i < count; i++)\r
+ {\r
+ QDomElement newElement;\r
+ QDomElement titleElement;\r
+ titleElement.setTagName("title");\r
+ if(type == category)\r
+ {\r
+ newElement.setTagName("category");\r
+ titleElement.setNodeValue(tr("new category"));\r
+ newElement.appendChild(titleElement);\r
+ parentItem->node().insertAfter(newElement, parentItem->child(row + i)->node());\r
+ }\r
+ else if(type == item)\r
+ {\r
+ newElement.setTagName("item");\r
+ titleElement.setNodeValue(tr("new item"));\r
+ newElement.appendChild(titleElement);\r
+ QDomElement quantityElement;\r
+ quantityElement.setTagName("quantity");\r
+ newElement.appendChild(quantityElement);\r
+ QDomElement storeElement;\r
+ storeElement.setTagName("store");\r
+ newElement.appendChild(storeElement);\r
+ QDomElement checkedElement;\r
+ checkedElement.setTagName("checked");\r
+ checkedElement.setNodeValue("0");\r
+ newElement.appendChild(checkedElement);\r
+ QDomElement lastModifiedElement;\r
+ lastModifiedElement.setTagName("lastModified");\r
+ lastModifiedElement.setNodeValue(QDateTime::currentDateTime().toString("dd/MM/yyyy-hh:mm:ss"));\r
+ newElement.appendChild(lastModifiedElement);\r
+ parentItem->node().insertAfter(newElement, parentItem->child(row + i)->node());\r
+ }\r
+ }\r
+ emit documentChanged();\r
+}\r
+\r
+/*******************************************************************/\r
+ShoppingTreeModel::removeRows(int row, int count, const QModelIndex &parent)\r
+{\r
+ ShoppingTreeItem *parentItem;\r
+\r
+ if (!parent.isValid())\r
+ parentItem = rootItem;\r
+ else\r
+ parentItem = static_cast<ShoppingTreeItem*>(parent.internalPointer());\r
+\r
+ for(int i = 0; i < count; i++)\r
+ {\r
+ parentItem->node().removeChild(parentItem->child(i)->node());\r
+ }\r
+ emit documentChanged();\r
+}\r
+\r
+/*******************************************************************/\r
+ShoppingTreeModel::addCategory(QModelIndex &index)\r
+{\r
+ ShoppingTreeItem *selectedItem;\r
+\r
+ if (!parent.isValid())\r
+ selectedItem = rootItem;\r
+ else\r
+ selectedItem = static_cast<ShoppingTreeItem*>(parent.internalPointer());\r
+\r
+ insertRows(selectedItem->row(), 1, parent(index), category);\r
+}\r
+\r
+/*******************************************************************/\r
+ShoppingTreeModel::addItem(QModelIndex &index)\r
+{\r
+ ShoppingTreeItem *selectedItem;\r
+\r
+ if (!parent.isValid())\r
+ selectedItem = rootItem;\r
+ else\r
+ selectedItem = static_cast<ShoppingTreeItem*>(parent.internalPointer());\r
+\r
+ insertRows(selectedItem->row(), 1, parent(index), item);\r
+}\r
+\r
+/*******************************************************************/\r
+ShoppingTreeModel::removeElement(QModelIndex &index)\r
+{\r
+ ShoppingTreeItem *selectedItem;\r
+\r
+ if (!parent.isValid())\r
+ selectedItem = rootItem;\r
+ else\r
+ selectedItem = static_cast<ShoppingTreeItem*>(parent.internalPointer());\r
+\r
+ removeRows(selectedItem->row(), 1, parent(index));\r
+}\r
+\r
+/*******************************************************************/\r
+ShoppingTreeModel::save()\r
+{\r
+ QFile file(m_fileName);\r
+ file.remove();\r
+ if (!file.open(QIODevice::WriteOnly))\r
+ return;\r
+ if (!file.write(domDocument.toString(4).toUtf8())) {\r
+ file.close();\r
+ return;\r
+ }\r
+ file.close();\r
+}\r