#include <QModelIndex>\r
#include <QVector>\r
#include <QVariant>\r
+#include <QHash>\r
\r
class ShoppingTreeItem;\r
\r
ShoppingTreeModel(const QString &xmlFileName, QObject *parent = 0);\r
~ShoppingTreeModel();\r
\r
+ bool addCategory(QString name);\r
+ bool addSubCategory(QString name, int position,\r
+ const QModelIndex &parent = QModelIndex());\r
+ bool addItem(QString name, int position,\r
+ const QModelIndex &parent = QModelIndex());\r
+ bool removeCategoryOrItem(const QModelIndex &index = QModelIndex());\r
+\r
QVariant data(const QModelIndex &index, int role) const;\r
QVariant headerData(int section, Qt::Orientation orientation,\r
int role = Qt::DisplayRole) const;\r
int role = Qt::EditRole);\r
bool setHeaderData(int section, Qt::Orientation orientation,\r
const QVariant &value, int role = Qt::EditRole);\r
+ void sort(int column, Qt::SortOrder order);\r
\r
+private:\r
bool insertColumns(int position, int columns,\r
- const QModelIndex &parent = QModelIndex());\r
+ const QModelIndex &parent = QModelIndex());\r
bool removeColumns(int position, int columns,\r
- const QModelIndex &parent = QModelIndex());\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
void xmlParseError(QString error, int line, int column);\r
void invalidDocument();\r
\r
+public slots:\r
+ void registerInsertedChild(ShoppingTreeItem *item);\r
+ void deleteRemovedChild(ShoppingTreeItem *item);\r
+\r
protected:\r
void parseCategoryElement(const QDomElement &element,\r
ShoppingTreeItem *parentItem = 0);\r
QVector<QVariant> getColumnsFromItemElement(const QDomElement &element);\r
+ bool updateDomElement(ShoppingTreeItem *item, int column);\r
+ void updateXmlFile() const;\r
\r
private:\r
ShoppingTreeItem *getItem(const QModelIndex &index) const;\r
\r
ShoppingTreeItem *rootItem;\r
+ QString m_xmlFileName;\r
QDomDocument m_document;\r
QHash<ShoppingTreeItem *, QDomElement> m_domElementForItem;\r
};\r