summaryrefslogtreecommitdiffstats
path: root/filestreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r--filestreemodel.cpp104
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);
+}