diff options
author | Arno <am@disconnect.de> | 2010-06-17 22:01:51 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-06-17 22:01:51 +0200 |
commit | e730da87d51fea35f30782abab836c69ab8876d2 (patch) | |
tree | f286dda8014bab8ca8e23d5210bcba5551be2f67 /seriestreemodel.cpp | |
parent | 93c3e2c912b548d7b81d06a988677ceedf54e83d (diff) | |
download | SheMov-e730da87d51fea35f30782abab836c69ab8876d2.tar.gz SheMov-e730da87d51fea35f30782abab836c69ab8876d2.tar.bz2 SheMov-e730da87d51fea35f30782abab836c69ab8876d2.zip |
SeriesTreeModel::findFiles
Implemented SeriesTreeModel::findFiles in preparation for deleting files
from SeriesTreeView. Totally untested, of course, and the new action in
SheMov doesn't do anything.
Diffstat (limited to 'seriestreemodel.cpp')
-rw-r--r-- | seriestreemodel.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp index eb6022b..748f870 100644 --- a/seriestreemodel.cpp +++ b/seriestreemodel.cpp @@ -13,6 +13,7 @@ #include "seriestreemodel.h" #include "smtreeitem.h" +#include "helper.h" SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTreeModel(headers, parent){ mDb = QSqlDatabase::database("treedb"); @@ -26,6 +27,10 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree mDeleteSeriesQuery->prepare("DELETE FROM series where iseries_id = :id"); mSeriesInsertQuery = new QSqlQuery(mDb); mSeriesInsertQuery->prepare("INSERT INTO series(tseries_name) VALUES(:name)"); + mSeriesFilesQuery = new QSqlQuery(mDb); + mSeriesFilesQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM series, seriesparts, files WHERE series.iseries_id = :id AND series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id"); + mSeriesPartFilesQuery = new QSqlQuery(mDb); + mSeriesPartFilesQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM seriesparts, files WHERE seriesparts.iseriesparts_id = :id AND seriesparts.iseriesparts_id = files.iseriespart_id"); populate(); } @@ -35,6 +40,8 @@ SeriesTreeModel::~SeriesTreeModel(){ delete mUpdateSeriesNameQuery; delete mDeleteSeriesQuery; delete mSeriesInsertQuery; + delete mSeriesFilesQuery; + delete mSeriesPartFilesQuery; mDb.close(); mDb = QSqlDatabase(); } @@ -145,6 +152,31 @@ QModelIndex SeriesTreeModel::findValue(const QVariant &value, const QModelIndex return QModelIndex(); } +QFileInfoList SeriesTreeModel::findFiles(const QModelIndex &where) const{ + int type = where.data(TypeRole).toInt(); + QFileInfoList retval; + if(type == Series){ + mSeriesFilesQuery->bindValue(":id", where.data(SeriesIdRole)); + if(mSeriesFilesQuery->exec()){ + while(mSeriesFilesQuery->next()){ + QString path = Helper::createArchivePath(mSeriesFilesQuery->value(0).toString(), mSeriesFilesQuery->value(1).toString()); + retval << QFileInfo(path); + } + return retval; + } + }else if(type == Part){ + mSeriesPartFilesQuery->bindValue(":id", where.data(SeriesPartIdRole)); + if(mSeriesPartFilesQuery->exec()){ + while(mSeriesPartFilesQuery->next()){ + QString path = Helper::createArchivePath(mSeriesFilesQuery->value(0).toString(), mSeriesFilesQuery->value(1).toString()); + retval << QFileInfo(path); + } + return retval; + } + } + return QFileInfoList(); +} + void SeriesTreeModel::populate(){ QSqlQuery seriesQuery = QSqlQuery("SELECT iseries_id, tseries_name FROM series ORDER BY tseries_name", mDb); SmTreeItem *rootItem = new SmTreeItem(5); |