git-svn-id: file:///svnroot/family-shop-mgr@26 26eb2498-383b-47a6-be48-5d6f36779e85
[family-shop-mgr] / code / family-shop-mgr / ShoppingTreeModel.cpp
index d304c41..2bdde16 100644 (file)
@@ -97,6 +97,12 @@ QAbstractItemModel(parent), m_document("ShoppingList")
         child = child.nextSiblingElement("item");\r
     }\r
 \r
+\r
+    connect(rootItem, SIGNAL(childInserted(ShoppingTreeItem*)), this,\r
+            SLOT(registerInsertedChild(ShoppingTreeItem*)));\r
+    connect(rootItem, SIGNAL(childRemoved(ShoppingTreeItem*)), this,\r
+            SLOT(deleteRemovedChild(ShoppingTreeItem*)));\r
+\r
     QHashIterator<ShoppingTreeItem*,QDomElement> i(m_domElementForItem);\r
     while(i.hasNext())\r
     {\r
@@ -122,13 +128,11 @@ bool ShoppingTreeModel::addCategory(QString name)
     if (!this->insertRow(parent.row()+1, parent))\r
         return false;\r
 \r
-    for(int column = 0; column < this->columnCount(parent); ++column)\r
-    {\r
-        QModelIndex child = this->index(parent.row()+1, column, parent);\r
-        ShoppingTreeItem* item = this->getItem(child);\r
-        item->setItemType(ShoppingTreeItem::Category);\r
-        this->setData(child, QVariant(name), Qt::EditRole);\r
-    }\r
+    int column = 0;\r
+    QModelIndex child = this->index(parent.row()+1, column, parent);\r
+    ShoppingTreeItem* item = this->getItem(child);\r
+    item->setItemType(ShoppingTreeItem::Category);\r
+    this->setData(child, QVariant(name), Qt::EditRole);\r
     return true;\r
 }\r
 \r
@@ -156,13 +160,12 @@ bool ShoppingTreeModel::addItem(QString name, int position,
     if (!this->insertRow(position, parent))\r
         return false;\r
 \r
-    for(int column = 0; column < this->columnCount(parent); ++column)\r
-    {\r
-        QModelIndex child = this->index(parent.row()+1, column, parent);\r
-        ShoppingTreeItem* item = this->getItem(child);\r
-        item->setItemType(ShoppingTreeItem::Item);\r
-        this->setData(child, QVariant(name), Qt::EditRole);\r
-    }\r
+    int column = 0;\r
+    QModelIndex child = this->index(parent.row()+1, column, parent);\r
+    ShoppingTreeItem* item = this->getItem(child);\r
+    item->setItemType(ShoppingTreeItem::Item);\r
+    this->setData(child, QVariant(name), Qt::EditRole);\r
+\r
     return true;\r
 }\r
 \r
@@ -310,7 +313,10 @@ int ShoppingTreeModel::rowCount(const QModelIndex &parent) const
 /*******************************************************************/\r
 int ShoppingTreeModel::columnCount(const QModelIndex &parent) const\r
 {\r
-    return rootItem->columnCount();\r
+    if(parent.isValid())\r
+        return getItem(parent)->columnCount();\r
+    else\r
+        return rootItem->columnCount();\r
 }\r
 \r
 /*******************************************************************/\r
@@ -471,8 +477,8 @@ bool ShoppingTreeModel::updateDomElement(ShoppingTreeItem *item, int column)
     if(element.isNull())\r
      return false;\r
 \r
-    bool success;\r
-    switch(column)/*******************************************************************/\r
+    bool success = false;\r
+    switch(column)\r
     {\r
         case 0:\r
         {\r
@@ -514,6 +520,18 @@ bool ShoppingTreeModel::updateDomElement(ShoppingTreeItem *item, int column)
             success = false;\r
     }\r
 \r
+    QDomElement oldDateElement = element.firstChildElement("lastModified");\r
+    if(!oldDateElement.isNull())\r
+    {\r
+        QDomElement newDateElement = m_document.createElement("lastModified");\r
+\r
+        QDomText newDateText = m_document.createTextNode(\r
+                QDateTime::currentDateTime().toString("dd/MM/yyyy-hh:mm:ss"));\r
+        newDateElement.appendChild(newDateText);\r
+\r
+        element.replaceChild(newDateElement, oldDateElement);\r
+    }\r
+\r
     updateXmlFile();\r
 \r
     return success;\r