\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