/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifndef LISTMODEL_H #define LISTMODEL_H #include #include class QString; class ListItem; class QModelIndex; class QSqlQuery; class ListModel : public QAbstractItemModel { Q_OBJECT Q_ENUMS(CustomRoles) public: enum CustomRoles {IdRole = Qt::UserRole + 1}; ListModel(const QString table, QObject *parent); ~ListModel(); QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex index(const QVariant &data) const; QModelIndex parent(const QModelIndex &) const { return QModelIndex(); }; int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &) const { return 1; }; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; bool insertRows(int row, int count, const QModelIndex &parent); bool removeRows(int row, int count, const QModelIndex &parent); bool setData(const QModelIndex &idx, const QVariant &data, int role = Qt::EditRole); bool addItem(const QVariant &item); bool removeItem(const QVariant &item); bool renameItem(const QVariant &oldName, const QVariant &newName); int defaultId(); private: void populate(); QString mTable; QList mItems; QSqlQuery *mUpdateQuery; QSqlQuery *mInsertQuery; QSqlQuery *mDeleteQuery; QSqlQuery *mIdQuery; }; bool sortListItems(const ListItem *lhs, const ListItem *rhs); #endif