+void ShoppingTreeModel::registerInsertedChild(ShoppingTreeItem *item)\r
+{\r
+ // wait until item type is defined\r
+ item->waitItemTypeDefinition();\r
+\r
+ QDomElement parentElement = m_domElementForItem.value(item->parent());\r
+ QDomElement element;\r
+ if(item->getItemType() == ShoppingTreeItem::Category)\r
+ element = m_document.createElement("category");\r
+ else if(item->getItemType() == ShoppingTreeItem::Item)\r
+ element = m_document.createElement("item");\r
+ else\r
+ return;\r
+\r
+ parentElement.appendChild(element);\r
+ updateXmlFile();\r
+ m_domElementForItem.insert(item, element);\r
+ connect(item, SIGNAL(childInserted(ShoppingTreeItem*)), this,\r
+ SLOT(registerInsertedChild(ShoppingTreeItem*)));\r
+ connect(item, SIGNAL(childRemoved(ShoppingTreeItem*)), this,\r
+ SLOT(deleteRemovedChild(ShoppingTreeItem*)));\r
+}\r
+\r
+void ShoppingTreeModel::deleteRemovedChild(ShoppingTreeItem *item)\r
+{\r
+ QDomElement element = m_domElementForItem.value(item);\r
+ QDomNode parentNode = element.parentNode();\r
+ parentNode.removeChild(element);\r
+ updateXmlFile();\r
+ m_domElementForItem.remove(item);\r
+}\r
+\r