git-svn-id: file:///svnroot/family-shop-mgr@35 26eb2498-383b-47a6-be48-5d6f36779e85
[family-shop-mgr] / code / family-shop-mgr / ShoppingTreeModel.h
index 3e2de42..cb283b0 100644 (file)
 \r
 class ShoppingTreeItem;\r
 \r
+enum ItemType{\r
+    item,\r
+    category\r
+};\r
+\r
 class ShoppingTreeModel : public QAbstractItemModel\r
 {\r
-Q_OBJECT\r
+    Q_OBJECT\r
 \r
 public:\r
-    ShoppingTreeModel(const QString &xmlFileName, QObject *parent = 0);\r
+    ShoppingTreeModel(QString fileName, QObject *parent = 0);\r
     ~ShoppingTreeModel();\r
 \r
     QVariant data(const QModelIndex &index, int role) const;\r
+    Qt::ItemFlags flags(const QModelIndex &index) const;\r
     QVariant headerData(int section, Qt::Orientation orientation,\r
                         int role = Qt::DisplayRole) const;\r
     QModelIndex index(int row, int column,\r
                       const QModelIndex &parent = QModelIndex()) const;\r
-    QModelIndex parent(const QModelIndex &index) const;\r
-\r
+    QModelIndex parent(const QModelIndex &child) const;\r
     int rowCount(const QModelIndex &parent = QModelIndex()) const;\r
     int columnCount(const QModelIndex &parent = QModelIndex()) const;\r
+    bool insertRows(int row, int count,\r
+                    const QModelIndex & parent = QModelIndex(),\r
+                    ItemType type = item);\r
+    bool removeRows(int row, int count, const QModelIndex & parent = QModelIndex());\r
 \r
-    Qt::ItemFlags flags(const QModelIndex &index) const;\r
-    bool setData(const QModelIndex &index, const QVariant &value,\r
-                 int role = Qt::EditRole);\r
-    bool setHeaderData(int section, Qt::Orientation orientation,\r
-                       const QVariant &value, int role = Qt::EditRole);\r
-\r
-    bool insertColumns(int position, int columns,\r
-                       const QModelIndex &parent = QModelIndex());\r
-    bool removeColumns(int position, int columns,\r
-                       const QModelIndex &parent = QModelIndex());\r
-    bool insertRows(int position, int rows,\r
-                    const QModelIndex &parent = QModelIndex());\r
-    bool removeRows(int position, int rows,\r
-                    const QModelIndex &parent = QModelIndex());\r
+public slots:\r
+    void addCategory(QModelIndex & index);\r
+    void addItem(QModelIndex & index);\r
+    void removeElement(QModelIndex & index);\r
+    void save();\r
 \r
 signals:\r
-    void xmlParseError(QString error, int line, int column);\r
-    void invalidDocument();\r
-\r
-protected:\r
-    void parseCategoryElement(const QDomElement &element,\r
-                              ShoppingTreeItem *parentItem = 0);\r
-    QVector<QVariant> getColumnsFromItemElement(const QDomElement &element) const;\r
+    void documentChanged();\r
 \r
 private:\r
-    ShoppingTreeItem *getItem(const QModelIndex &index) const;\r
-\r
+    QString m_fileName;\r
+    QDomDocument domDocument;\r
+    QDomNode rootItemNode;\r
     ShoppingTreeItem *rootItem;\r
-    QDomDocument m_document;\r
-    QHash<ShoppingTreeItem *, QDomElement> m_domElementForItem;\r
 };\r
 \r
 #endif // SHOPPINGTREEMODEL_H\r