summaryrefslogtreecommitdiffstats
path: root/archivemodel.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-08-11 04:22:19 +0200
committerArno <am@disconnect.de>2013-08-11 04:22:19 +0200
commitc6099ecbd04014dc323e4740799107d47ed2f1c4 (patch)
tree5f2ad5a0cfcaee12dce5a0ffbeaa70f51f7d2f5a /archivemodel.cpp
parentfa226c66caf80f9f5041f9616d057309e8f958c0 (diff)
downloadSheMov-c6099ecbd04014dc323e4740799107d47ed2f1c4.tar.gz
SheMov-c6099ecbd04014dc323e4740799107d47ed2f1c4.tar.bz2
SheMov-c6099ecbd04014dc323e4740799107d47ed2f1c4.zip
New sortOrder: Favorites
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r--archivemodel.cpp28
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()){