summaryrefslogtreecommitdiffstats
path: root/seriestreemodel.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-06-17 22:01:51 +0200
committerArno <am@disconnect.de>2010-06-17 22:01:51 +0200
commite730da87d51fea35f30782abab836c69ab8876d2 (patch)
treef286dda8014bab8ca8e23d5210bcba5551be2f67 /seriestreemodel.cpp
parent93c3e2c912b548d7b81d06a988677ceedf54e83d (diff)
downloadSheMov-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.cpp32
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);