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 | |
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.
-rw-r--r-- | seriestreemodel.cpp | 32 | ||||
-rw-r--r-- | seriestreemodel.h | 7 | ||||
-rw-r--r-- | shemov.cpp | 2 | ||||
-rw-r--r-- | shemov.h | 2 |
4 files changed, 43 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); diff --git a/seriestreemodel.h b/seriestreemodel.h index f2a6f9f..a393c32 100644 --- a/seriestreemodel.h +++ b/seriestreemodel.h @@ -9,6 +9,7 @@ #define SERIESTREEMODEL_H #include <QSqlDatabase> +#include <QFileInfoList> #include "smtreemodel.h" @@ -30,6 +31,10 @@ class SeriesTreeModel : public SmTreeModel { //find QModelIndex findValue(const QVariant &value, const QModelIndex &parent = QModelIndex(), int column = 0) const; + QFileInfoList findFiles(const QModelIndex &where) const; + + //delete + //bool deleteFromSeries(const QModelIndex &what); signals: void needResort(); @@ -45,6 +50,8 @@ class SeriesTreeModel : public SmTreeModel { QSqlQuery *mUpdateSeriesNameQuery; QSqlQuery *mDeleteSeriesQuery; QSqlQuery *mSeriesInsertQuery; + QSqlQuery *mSeriesFilesQuery; + QSqlQuery *mSeriesPartFilesQuery; }; #endif // SERIESTREEMODEL_H @@ -360,6 +360,8 @@ void SheMov::createActions(){ mNewSeriesA = new QAction(tr("New series"), this); mATree->seriesWidget()->seriesTree()->addAction(mNewSeriesA); connect(mNewSeriesA, SIGNAL(triggered()), mATree->seriesWidget(), SLOT(newSeries())); + mDeleteFromSeriesA = new QAction(tr("Delete entry..."), this); + mATree->seriesWidget()->seriesTree()->addAction(mDeleteFromSeriesA); // misc mOpenWithMapperFS = new QSignalMapper(this); @@ -98,6 +98,8 @@ class SheMov : public QMainWindow { //TreeView Actions QAction *mNewSeriesA; + QAction *mDeleteFromSeriesA; + QActionGroup *mOpenWithGroupFS; QActionGroup *mOpenWithGroupAV; //EndActions |