diff options
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r-- | filestreemodel.cpp | 104 |
1 files changed, 64 insertions, 40 deletions
diff --git a/filestreemodel.cpp b/filestreemodel.cpp index 01b088a..655fc1e 100644 --- a/filestreemodel.cpp +++ b/filestreemodel.cpp @@ -32,54 +32,32 @@ FilesTreeModel::~FilesTreeModel(){ } void FilesTreeModel::setIds(const QList<int> &seriesPartIds){ - SmTreeItem *root = new SmTreeItem(11); - SmTreeItem *files = new SmTreeItem(11, root); - files->setData(FileName, tr("Movies")); - root->appendChild(files); - SmTreeItem *covers = new SmTreeItem(11, root); - covers->setData(FileName, tr("Covers")); - root->appendChild(covers); - QLocale l; QStringList ids; foreach(int s, seriesPartIds){ ids << QString::number(s); } QString query = QString("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, series.tseries_name, seriesparts.iseriespart FROM files, seriesparts, series WHERE iseriespart_id IN (%1) AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id ORDER BY tfilename, sifileno ASC").arg(ids.join(",")); - QSqlQuery filesQuery(query, mDb); - while(filesQuery.next()){ - QList<QVariant> data; - data << filesQuery.value(1); //filename - data << filesQuery.value(6); //partno - data << l.toString(filesQuery.value(3).toLongLong()); //displaysize - data << filesQuery.value(7); //quality - data << filesQuery.value(4); //dvdno - data << Helper::createArchivePath(filesQuery.value(1).toString(), filesQuery.value(2).toString()); //fullpath - data << filesQuery.value(3); //size - data << filesQuery.value(5); //filetype - data << filesQuery.value(2); //md5sum - data << filesQuery.value(0); //seriesparts_id - data << filesQuery.value(8); //files_id - data << filesQuery.value(10); //seriespart - QString displayName = QString("%1 %2").arg(filesQuery.value(9).toString()).arg(filesQuery.value(10).toString()); - data << displayName; - switch(filesQuery.value(5).toInt()){ - case Movie:{ - SmTreeItem *item = new SmTreeItem(data, files); - files->appendChild(item); - break; - } - case FrontCover: - case BackCover: - case GeneralCover:{ - SmTreeItem *item = new SmTreeItem(data, covers); - covers->appendChild(item); - break; - } + QSqlQuery filesQuery(mDb); + filesQuery.prepare(query); + populate(filesQuery); +} + +void FilesTreeModel::setMode(int mode){ + QSqlQuery modeQuery(mDb); + bool queryOk = false; + switch(mode){ + case Local: + queryOk = modeQuery.prepare("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, series.tseries_name, seriesparts.iseriespart FROM files, seriesparts, series WHERE files.idvd = -1 AND files.sifiletype = 1 AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id"); + break; + case Archived: + queryOk = modeQuery.prepare("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, series.tseries_name, seriesparts.iseriespart FROM files, seriesparts, series WHERE files.idvd != -1 AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id"); + break; default: ; - } } - setRoot(root); + if(queryOk){ + populate(modeQuery); + } } QVariant FilesTreeModel::data(const QModelIndex &index, int role) const{ @@ -230,3 +208,49 @@ bool FilesTreeModel::addFile(const QString &fullPath, int type, int quality, int mDb.rollback(); return false; } + +void FilesTreeModel::populate(QSqlQuery &filesQuery){ + SmTreeItem *root = new SmTreeItem(11); + SmTreeItem *files = new SmTreeItem(11, root); + files->setData(FileName, tr("Movies")); + root->appendChild(files); + SmTreeItem *covers = new SmTreeItem(11, root); + covers->setData(FileName, tr("Covers")); + root->appendChild(covers); + QLocale l; + filesQuery.exec(); + while(filesQuery.next()){ + QList<QVariant> data; + data << filesQuery.value(1); //filename + data << filesQuery.value(6); //partno + data << l.toString(filesQuery.value(3).toLongLong()); //displaysize + data << filesQuery.value(7); //quality + data << filesQuery.value(4); //dvdno + data << Helper::createArchivePath(filesQuery.value(1).toString(), filesQuery.value(2).toString()); //fullpath + data << filesQuery.value(3); //size + data << filesQuery.value(5); //filetype + data << filesQuery.value(2); //md5sum + data << filesQuery.value(0); //seriesparts_id + data << filesQuery.value(8); //files_id + data << filesQuery.value(10); //seriespart + QString displayName = QString("%1 %2").arg(filesQuery.value(9).toString()).arg(filesQuery.value(10).toString()); + data << displayName; + switch(filesQuery.value(5).toInt()){ + case Movie:{ + SmTreeItem *item = new SmTreeItem(data, files); + files->appendChild(item); + break; + } + case FrontCover: + case BackCover: + case GeneralCover:{ + SmTreeItem *item = new SmTreeItem(data, covers); + covers->appendChild(item); + break; + } + default: + ; + } + } + setRoot(root); +} |