diff options
-rw-r--r-- | seriestreemodel.cpp | 30 | ||||
-rw-r--r-- | seriestreemodel.h | 7 | ||||
-rw-r--r-- | seriestreewidget.cpp | 2 | ||||
-rw-r--r-- | smglobals.cpp | 2 |
4 files changed, 30 insertions, 11 deletions
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp index c091576..ca8e10d 100644 --- a/seriestreemodel.cpp +++ b/seriestreemodel.cpp @@ -48,6 +48,8 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree mFavoriteSeriesPartsQuery = new QSqlQuery(mDb); mFavoriteSeriesPartsQuery->prepare("SELECT iseriesparts_id, iseriespart, tsubtitle FROM seriesparts WHERE iseries_id = :id AND bfavorite = true"); mUpdateGenericTemplate = QString("UPDATE seriesparts SET %1 = :value WHERE iseriesparts_id = :id"); + mIsLocalQuery = new QSqlQuery(mDb); + mIsLocalQuery->prepare("SELECT COUNT(*) FROM files WHERE iseriespart_id = :id AND sifiletype = 1 AND idvd = -1"); mUpdateGenericMap.insert(Favorite, "bfavorite"); mUpdateGenericMap.insert(Subtitle, "tsubtitle"); mUpdateGenericMap.insert(SeriesPart, "iseriespart"); @@ -276,6 +278,16 @@ QFileInfoList SeriesTreeModel::findSortedMovies(const QModelIndex &from) const{ return retval; } +bool SeriesTreeModel::hasLocals(int sPartId) const { + bool retval = false; + mIsLocalQuery->bindValue(":id", sPartId); + mIsLocalQuery->exec(); + while(mIsLocalQuery->next()){ + retval = mIsLocalQuery->value(0).toBool(); + } + return retval; +} + int SeriesTreeModel::seriesIdByPartId(int partId){ if(mSeriesPartSeriesMap.contains(partId)){ return mSeriesPartSeriesMap.value(partId); @@ -327,7 +339,7 @@ bool SeriesTreeModel::addSeries(const QVariant &seriesName, const QModelIndex &p if(lastId.next()){ int id = lastId.value(0).toInt(); QList<QVariant> seriesData; - seriesData << name << id << QVariant() << QVariant() << Series << false << QVariant(); + seriesData << name << id << QVariant() << QVariant() << Series << false << QVariant() << QVariant(); if(addRow(seriesData, parent)){ mDb.commit(); return true; @@ -360,7 +372,7 @@ bool SeriesTreeModel::addSeriesPart(int seriesPart, const QModelIndex &parent, c if(lastId.next()){ int id = lastId.value(0).toInt(); QList<QVariant> partData; - partData << parent.data(NameRole) << seriesId << id << seriesPart << Part << false << subTitle; + partData << parent.data(NameRole) << seriesId << id << seriesPart << Part << false << subTitle << true; if(addRow(partData, parent)){ mDb.commit(); mSeriesPartSeriesMap.insert(id, seriesId); @@ -385,7 +397,7 @@ void SeriesTreeModel::setMappingFilter(const QString &filter, const QString &tab if(tableIdQuery.exec()){ mSeriesPartSeriesMap.clear(); QStringList ids; - SmTreeItem *rootItem = new SmTreeItem(7); + SmTreeItem *rootItem = new SmTreeItem(NumFields); while(tableIdQuery.next()){ ids << QString::number(tableIdQuery.value(0).toInt()); } @@ -408,6 +420,7 @@ void SeriesTreeModel::setMappingFilter(const QString &filter, const QString &tab while(partsQuery.next()){ QList<QVariant> partData; partData << seriesData.at(Name) << seriesData.at(SeriesId) << partsQuery.value(0) << partsQuery.value(1) << Part << partsQuery.value(2) << partsQuery.value(3); + partData << hasLocals(partsQuery.value(0).toInt()); SmTreeItem *partItem = new SmTreeItem(partData, seriesItem); seriesItem->appendChild(partItem); mSeriesPartSeriesMap.insert(partsQuery.value(0).toInt(), seriesData.at(1).toInt()); @@ -443,7 +456,7 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column } if(seriesIdQuery.exec()){ mSeriesPartSeriesMap.clear(); - SmTreeItem *rootItem = new SmTreeItem(7); + SmTreeItem *rootItem = new SmTreeItem(NumFields); while(seriesIdQuery.next()){ QList<QVariant> seriesData; seriesData << seriesIdQuery.value(1) << seriesIdQuery.value(0) << QVariant() << QVariant() << Series << false << QVariant(); @@ -464,6 +477,7 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column while(partsQuery.next()){ QList<QVariant> partData; partData << seriesData.at(Name) << seriesData.at(SeriesId) << partsQuery.value(0) << partsQuery.value(1) << Part << partsQuery.value(2) << partsQuery.value(3); + partData << hasLocals(partsQuery.value(0).toInt()); SmTreeItem *partItem = new SmTreeItem(partData, seriesItem); seriesItem->appendChild(partItem); mSeriesPartSeriesMap.insert(partsQuery.value(0).toInt(), seriesData.at(1).toInt()); @@ -477,7 +491,7 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column void SeriesTreeModel::setFavoriteFilter(){ if(mFavoriteSeriesIdQuery->exec()){ mSeriesPartSeriesMap.clear(); - SmTreeItem *rootItem = new SmTreeItem(7); + SmTreeItem *rootItem = new SmTreeItem(NumFields); while(mFavoriteSeriesIdQuery->next()){ QList<QVariant> seriesData; seriesData << mFavoriteSeriesIdQuery->value(1) << mFavoriteSeriesIdQuery->value(0) << QVariant() << QVariant() << Series << false << QVariant(); @@ -488,6 +502,7 @@ void SeriesTreeModel::setFavoriteFilter(){ while(mFavoriteSeriesPartsQuery->next()){ QList<QVariant> partData; partData << seriesData.at(Name) << seriesData.at(SeriesId) << mFavoriteSeriesPartsQuery->value(0) << mFavoriteSeriesPartsQuery->value(1) << Part << true << mFavoriteSeriesPartsQuery->value(2); + partData << hasLocals(mFavoriteSeriesPartsQuery->value(0).toInt()); SmTreeItem *partItem = new SmTreeItem(partData, seriesItem); seriesItem->appendChild(partItem); mSeriesPartSeriesMap.insert(mFavoriteSeriesPartsQuery->value(0).toInt(), seriesData.at(1).toInt()); @@ -527,10 +542,10 @@ void SeriesTreeModel::conditionalUpdate(const QModelIndex &parent, int field, co void SeriesTreeModel::populate(){ QSqlQuery seriesQuery = QSqlQuery("SELECT iseries_id, tseries_name FROM series ORDER BY tseries_name", mDb); mSeriesPartSeriesMap.clear(); - SmTreeItem *rootItem = new SmTreeItem(7); + SmTreeItem *rootItem = new SmTreeItem(NumFields); while(seriesQuery.next()){ QList<QVariant> seriesData; - seriesData << seriesQuery.value(1) << seriesQuery.value(0) << QVariant() << QVariant() << Series << false << QVariant(); + seriesData << seriesQuery.value(1) << seriesQuery.value(0) << QVariant() << QVariant() << Series << false << QVariant() << QVariant(); SmTreeItem *seriesItem = new SmTreeItem(seriesData, rootItem); rootItem->appendChild(seriesItem); mSeriesPartsQuery->bindValue(":id", seriesData.at(1)); @@ -538,6 +553,7 @@ void SeriesTreeModel::populate(){ while(mSeriesPartsQuery->next()){ QList<QVariant> partData; partData << seriesData.at(Name) << seriesData.at(SeriesId) << mSeriesPartsQuery->value(0) << mSeriesPartsQuery->value(1) << Part << mSeriesPartsQuery->value(2) << mSeriesPartsQuery->value(3); + partData << hasLocals(seriesData.at(1).toInt()); SmTreeItem *partItem = new SmTreeItem(partData, seriesItem); seriesItem->appendChild(partItem); mSeriesPartSeriesMap.insert(mSeriesPartsQuery->value(0).toInt(), seriesData.at(1).toInt()); diff --git a/seriestreemodel.h b/seriestreemodel.h index 8488cd7..348ff2c 100644 --- a/seriestreemodel.h +++ b/seriestreemodel.h @@ -20,10 +20,11 @@ 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, FavoriteRole = Qt::UserRole + 6, SubtitleRole = Qt::UserRole + 7 }; - enum Fields { Name = 0, SeriesId = 1, SeriesPartId = 2, SeriesPart = 3, Type = 4, Favorite = 5, Subtitle = 6 }; + enum CustomRoles { NameRole = Qt::UserRole + 1, SeriesIdRole = Qt::UserRole + 2, SeriesPartIdRole = Qt::UserRole + 3, SeriesPartRole = Qt::UserRole + 4, TypeRole = Qt::UserRole + 5, FavoriteRole = Qt::UserRole + 6, SubtitleRole = Qt::UserRole + 7, IsLocalRole = Qt::UserRole + 8 }; + enum Fields { Name = 0, SeriesId = 1, SeriesPartId = 2, SeriesPart = 3, Type = 4, Favorite = 5, Subtitle = 6, IsLocal = 7 }; enum Types { Series, Part, NewSeries }; enum QueryType { NumericQuery, TextQuery }; + enum { NumFields = 8 }; explicit SeriesTreeModel(QStringList &headers, QObject *parent = 0); ~SeriesTreeModel(); @@ -38,6 +39,7 @@ class SeriesTreeModel : public SmTreeModel { QFileInfoList findFiles(const QModelIndex &where) const; QFileInfoList findMovies(const QModelIndexList &from) const; QFileInfoList findSortedMovies(const QModelIndex &from) const; + bool hasLocals(int sPartId) const; int seriesIdByPartId(int partId); int findNextDvdNo() const; @@ -86,6 +88,7 @@ class SeriesTreeModel : public SmTreeModel { QSqlQuery *mGenreFilterQuery; QSqlQuery *mFavoriteSeriesIdQuery; QSqlQuery *mFavoriteSeriesPartsQuery; + QSqlQuery *mIsLocalQuery; QHash<int, int> mSeriesPartSeriesMap; QHash<int, QString> mUpdateGenericMap; QColor mFavoriteColor; diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp index e57905f..dd986b3 100644 --- a/seriestreewidget.cpp +++ b/seriestreewidget.cpp @@ -70,7 +70,7 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){ mProxy->setSourceModel(mModel); mView->setModel(mProxy); mView->setSortingEnabled(true); - for(int i = 1; i < 7; ++i){ + for(int i = 1; i < SeriesTreeModel::NumFields; ++i){ mView->setColumnHidden(i, true); } mView->resizeColumnToContents(0); diff --git a/smglobals.cpp b/smglobals.cpp index 0ee07c5..15147da 100644 --- a/smglobals.cpp +++ b/smglobals.cpp @@ -58,7 +58,7 @@ SmGlobals *SmGlobals::instance(){ QAbstractItemModel *SmGlobals::model(const QString &which){ if(which == "SeriesModel"){ if(!mModels.contains(which)){ - QStringList headers = QStringList() << tr("Series") << tr("Series ID") << tr("Series part ID") << tr("Part") << tr("Type") << tr("Favorite") << tr("Subtitle"); + QStringList headers = QStringList() << tr("Series") << tr("Series ID") << tr("Series part ID") << tr("Part") << tr("Type") << tr("Favorite") << tr("Subtitle") << tr("Is Local"); SeriesTreeModel *model = new SeriesTreeModel(headers); mModels.insert(which, model); } |