summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filestreemodel.cpp104
-rw-r--r--filestreemodel.h3
2 files changed, 67 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);
+}
diff --git a/filestreemodel.h b/filestreemodel.h
index 1e3f40e..b5c11e8 100644
--- a/filestreemodel.h
+++ b/filestreemodel.h
@@ -21,11 +21,13 @@ class FilesTreeModel : public SmTreeModel {
enum CustomRoles { FileNameRole = Qt::UserRole + 1, FullPathRole = Qt::UserRole + 2, SizeRole = Qt::UserRole + 3, DvdNoRole = Qt::UserRole + 4, SizeDisplayRole = Qt::UserRole + 5, FileTypeRole = Qt::UserRole + 6, Md5SumRole = Qt::UserRole + 7, PartNoRole = Qt::UserRole + 8, SeriesPartIdRole = Qt::UserRole + 9, QualityRole = Qt::UserRole + 10, FilesIdRole = Qt::UserRole + 11, SeriesPartRole = Qt::UserRole + 12, DisplayNameRole = Qt::UserRole + 13 };
enum FileTypes { Movie = 1, FrontCover = 2, BackCover = 3, GeneralCover = 4 };
enum Fields { FileName = 0, PartNo = 1, SizeDisplay = 2, Quality = 3, DvdNo = 4, FullPath = 5, Size = 6, FileType = 7, Md5Sum = 8, SeriesPartId = 9, FilesId = 10, SeriesPart = 11, DisplayName = 12 };
+ enum Mode { Archived, Local };
explicit FilesTreeModel(QStringList &headers, QObject *parent = 0);
~FilesTreeModel();
//data + flags
void setIds(const QList<int> &seriesPartIds);
+ void setMode(int mode);
QVariant data(const QModelIndex &index, int role) const;
bool setData(const QModelIndex &index, const QVariant &value, int role);
Qt::ItemFlags flags(const QModelIndex &index) const;
@@ -34,6 +36,7 @@ class FilesTreeModel : public SmTreeModel {
bool addFile(const QString &fullPath, int type, int quality, int filePart, int seriesPartId, int dvd = -1);
private:
+ void populate(QSqlQuery &filesQuery);
QSqlDatabase mDb;
QSqlQuery *mUpdateDvdQuery;
QSqlQuery *mUpdateQualityQuery;