diff options
author | Arno <am@disconnect.de> | 2010-07-15 20:21:08 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-07-15 20:21:08 +0200 |
commit | 024366162607a04b1b3f7dd991a3fd1a351b635b (patch) | |
tree | 1f8316ba1ea8ee9640e7a3ed83ca0accc1465c75 | |
parent | d9d32f44d64834754650fc4fe70a4d7aae449e0c (diff) | |
download | SheMov-024366162607a04b1b3f7dd991a3fd1a351b635b.tar.gz SheMov-024366162607a04b1b3f7dd991a3fd1a351b635b.tar.bz2 SheMov-024366162607a04b1b3f7dd991a3fd1a351b635b.zip |
Moved item creation in FilesTreeModel to function
Created function populate(QSqlQuery) to make population of model more
generic.
Preparation for different views of files.
-rw-r--r-- | filestreemodel.cpp | 104 | ||||
-rw-r--r-- | filestreemodel.h | 3 |
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; |