/* 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 MOVIEMODEL_H #define MOVIEMODEL_H #include #include class QSqlQuery; class CoverItem; #include "movieitem.h" class MovieModel : public QAbstractItemModel { Q_OBJECT Q_ENUMS(CustomRoles) public: enum CustomRoles { Md5Role = Qt::UserRole + 1}; MovieModel(QObject *parent = 0); ~MovieModel(); QModelIndex index(int row, int column, const QModelIndex &parent) const; QModelIndex parent(const QModelIndex &) const { return QModelIndex(); }; int columnCount(const QModelIndex &) const { return MovieItem::NumRows; }; int rowCount(const QModelIndex &) const { return mItems.size(); }; QVariant data(const QModelIndex &index, int role) const; Qt::ItemFlags flags(const QModelIndex &index) const; QVariant headerData(int section, Qt::Orientation o, int role) const; bool insertRows(int row, int count, const QModelIndex &); bool removeRows(int row, int count, const QModelIndex &); bool setRow(const QModelIndex &idx, const QList &data, const QList &actors, const QList &covers); bool setDataAt(const QModelIndex &idx, const QVariant &data); void setActors(int id, const QList &actors); void setCovers(int id, const QList &covers); void addMovie(const QList &data, const QList &actors, const QList &covers); void removeMovie(const QModelIndex &idx); private: void populate(); QList mItems; QList mHeaders; QList mColumnQueries; QSqlQuery *mInsertQuery; QSqlQuery *mDeleteQuery; QSqlQuery *mDeleteActorsForMovie; QSqlQuery *mInsertActorsForMovie; QSqlQuery *mDeleteCovers; QSqlQuery *mInsertCovers; }; #endif