/* 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 SERIESTREEMODEL_H #define SERIESTREEMODEL_H #include #include #include #include #include "smtreemodel.h" class QSqlQuery; class SeriesTreeModel : public SmTreeModel { Q_OBJECT public: enum CustomRoles { NameRole = Qt::UserRole + 1, SeriesIdRole = Qt::UserRole + 2, SeriesPartIdRole = Qt::UserRole + 3, SeriesPartRole = Qt::UserRole + 4, TypeRole = Qt::UserRole + 5 }; enum Fields { Name = 0, SeriesId = 1, SeriesPartId = 2, SeriesPart = 3, Type = 4 }; enum Types { Series, Part, NewSeries }; //enum Filter { ClearFilter, ActorFilter, GenreFilter }; enum QueryType { NumericQuery, TextQuery }; explicit SeriesTreeModel(QStringList &headers, QObject *parent = 0); ~SeriesTreeModel(); //data + flags Qt::ItemFlags flags(const QModelIndex &index) const; QVariant data(const QModelIndex &index, int role) const; bool setData(const QModelIndex &index, const QVariant &value, int role); QList childrenColumnList(const QModelIndex &parent, int column) const; //find QModelIndex findValue(const QVariant &value, const QModelIndex &parent = QModelIndex(), int column = 0) const; QFileInfoList findFiles(const QModelIndex &where) const; QFileInfoList findMovies(const QModelIndexList &from) const; QFileInfoList findSortedMovies(const QModelIndex &from) const; int seriesIdByPartId(int partId); int findNextDvdNo() const; //series data manipulation bool deleteFromSeries(const QModelIndex &what); bool addSeries(const QVariant &seriesName, const QModelIndex &parent); bool addSeriesPart(int seriesPart, const QModelIndex &parent); //filter void clearFilter(); void setMappingFilter(const QString &filter, const QString &table); void setFileFilter(const QString &filter, const QString &column, int queryType); signals: void needResort(); private: void populate(); bool mergeSeries(const QModelIndex &from, const QModelIndex &to); bool renameSeries(const QModelIndex &source, const QVariant &value); bool setNewSeries(const QModelIndex &source, const QVariant &value); QSqlDatabase mDb; QSqlQuery *mSeriesPartsQuery; QSqlQuery *mUpdateSeriesIdQuery; QSqlQuery *mUpdateSeriesNameQuery; QSqlQuery *mDeleteSeriesQuery; QSqlQuery *mDeleteSeriesPartQuery; QSqlQuery *mSeriesInsertQuery; QSqlQuery *mSeriesFilesQuery; QSqlQuery *mSeriesPartFilesQuery; QSqlQuery *mSeriesPartInsertQuery; QSqlQuery *mSortedMovieListQuery; QSqlQuery *mNextDvdNoQuery; QSqlQuery *mGenreFilterQuery; QHash mSeriesPartSeriesMap; }; #endif // SERIESTREEMODEL_H