diff options
author | Arno <am@disconnect.de> | 2013-08-11 04:22:19 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-08-11 04:22:19 +0200 |
commit | c6099ecbd04014dc323e4740799107d47ed2f1c4 (patch) | |
tree | 5f2ad5a0cfcaee12dce5a0ffbeaa70f51f7d2f5a /archivemodel.cpp | |
parent | fa226c66caf80f9f5041f9616d057309e8f958c0 (diff) | |
download | SheMov-c6099ecbd04014dc323e4740799107d47ed2f1c4.tar.gz SheMov-c6099ecbd04014dc323e4740799107d47ed2f1c4.tar.bz2 SheMov-c6099ecbd04014dc323e4740799107d47ed2f1c4.zip |
New sortOrder: Favorites
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r-- | archivemodel.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 774265f..940f18f 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -27,6 +27,7 @@ ArchiveModel::ArchiveModel(const QStringList &headers, QObject *parent) : SmTree mAvailableOrders.insert("Actor", Actor); mAvailableOrders.insert("Genre", Genre); mAvailableOrders.insert("Local files", Local); + mAvailableOrders.insert("Favorites", FavoriteOrder); QSignalMapper *collectorMapper = new QSignalMapper(this); ArchiveCollector *c1 = new ArchiveCollector(NumFields, SeriesName, this); connect(c1, SIGNAL(finished()), collectorMapper, SLOT(map())); @@ -40,8 +41,11 @@ ArchiveModel::ArchiveModel(const QStringList &headers, QObject *parent) : SmTree ArchiveCollector *c4 = new ArchiveCollector(NumFields, Local, this); connect(c4, SIGNAL(finished()), collectorMapper, SLOT(map())); collectorMapper->setMapping(c4, c4); + ArchiveCollector *c5 = new ArchiveCollector(NumFields, FavoriteOrder, this); + connect(c5, SIGNAL(finished()), collectorMapper, SLOT(map())); + collectorMapper->setMapping(c5, c5); connect(collectorMapper, SIGNAL(mapped(QObject*)), this, SLOT(collectorFinished(QObject*))); - mCollectors << c1 << c2 << c3 << c4; + mCollectors << c1 << c2 << c3 << c4 << c5; connect(this, SIGNAL(needRefresh()), this, SLOT(refresh())); readConfig(); refresh(); @@ -689,6 +693,9 @@ const QString ArchiveModel::cacheFile(int o) const{ case Local: cacheFile.append("localfiles.cache"); break; + case FavoriteOrder: + cacheFile.append("favorite.cache"); + break; default: return QString(); } @@ -964,6 +971,9 @@ void ArchiveCollector::run(){ case ArchiveModel::Local: populateByLocal(); break; + case ArchiveModel::FavoriteOrder: + populateByFavorite(); + break; default: return; } @@ -1021,6 +1031,19 @@ void ArchiveCollector::populateByLocal(){ } } +void ArchiveCollector::populateByFavorite(){ + QSqlQuery favQ = QSqlQuery("SELECT distinct(series.iseries_id), tseries_name FROM series LEFT JOIN seriesparts ON series.iseries_id = seriesparts.iseries_id WHERE seriesparts.bfavorite = true ORDER BY tseries_name ASC", mDb); + while(favQ.next()){ + QList<QVariant> localIdData; + localIdData << favQ.value(1) << favQ.value(0) << QVariant() << QVariant() << ArchiveModel::SeriesNode << false << QVariant() << QVariant(); + SmTreeItem *localIdItem = new SmTreeItem(localIdData, mRootItem); + mRootItem->appendChild(localIdItem); + } + for(int i = 0; i < mRootItem->childCount(); ++i){ + fetchParts(mRootItem->child(i)->data(ArchiveModel::GenericId), mRootItem->child(i)); + } +} + void ArchiveCollector::fetchChildren(SmTreeItem *parent){ for(int i = 0; i < parent->childCount(); ++i){ if(checkCancelled()){ @@ -1085,6 +1108,9 @@ void ArchiveCollector::fetchParts(const QVariant &id, SmTreeItem *parent){ }else if(mSortOrder == ArchiveModel::Local){ partsQuery.prepare("SELECT DISTINCT(seriesparts.iseriesparts_id), iseriespart, bfavorite, tsubtitle FROM seriesparts LEFT JOIN files ON files.iseriespart_id = seriesparts.iseriesparts_id WHERE iseries_id = :seriesid AND files.idvd < 1 AND files.sifiletype = 1"); partsQuery.bindValue(":seriesid", id); + }else if(mSortOrder == ArchiveModel::FavoriteOrder){ + partsQuery.prepare("SELECT DISTINCT(iseriesparts_id), iseriespart, bfavorite, tsubtitle FROM seriesparts WHERE iseries_id = :seriesid and bfavorite = true"); + partsQuery.bindValue(":seriesid", id); } partsQuery.exec(); while(partsQuery.next()){ |