summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--seriestreemodel.cpp30
-rw-r--r--seriestreemodel.h7
-rw-r--r--seriestreewidget.cpp2
-rw-r--r--smglobals.cpp2
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);
}