summaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--seriestreemodel.cpp32
-rw-r--r--seriestreemodel.h7
-rw-r--r--shemov.cpp2
-rw-r--r--shemov.h2
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
diff --git a/shemov.cpp b/shemov.cpp
index 8db4db9..d60c00c 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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);
diff --git a/shemov.h b/shemov.h
index 20ab1e9..83db7b9 100644
--- a/shemov.h
+++ b/shemov.h
@@ -98,6 +98,8 @@ class SheMov : public QMainWindow {
//TreeView Actions
QAction *mNewSeriesA;
+ QAction *mDeleteFromSeriesA;
+
QActionGroup *mOpenWithGroupFS;
QActionGroup *mOpenWithGroupAV;
//EndActions