summaryrefslogtreecommitdiffstats
path: root/filestreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r--filestreemodel.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/filestreemodel.cpp b/filestreemodel.cpp
index 8dc52ba..3dc5dc1 100644
--- a/filestreemodel.cpp
+++ b/filestreemodel.cpp
@@ -9,6 +9,7 @@
#include <QLocale>
#include <QIcon>
#include <QFileInfo>
+#include <QFile>
#include "filestreemodel.h"
#include "smtreeitem.h"
@@ -24,6 +25,8 @@ FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeMo
mInsertFileQuery->prepare("INSERT INTO files(iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality) VALUES(:seriespartid, :fname, :md5, :size, :dvd, :type, :fileno, :quality)");
mFilesQuery = new QSqlQuery(mDb);
mFilesQuery->prepare("SELECT tfilename, cmd5sum FROM files WHERE iseriespart_id = :id");
+ mDeleteFileQuery = new QSqlQuery(mDb);
+ mDeleteFileQuery->prepare("DELETE FROM files WHERE ifiles_id = :id");
}
FilesTreeModel::~FilesTreeModel(){
@@ -31,6 +34,7 @@ FilesTreeModel::~FilesTreeModel(){
delete mUpdateQualityQuery;
delete mInsertFileQuery;
delete mFilesQuery;
+ delete mDeleteFileQuery;
mDb = QSqlDatabase();
}
@@ -231,6 +235,38 @@ bool FilesTreeModel::addFile(const QString &fullPath, int type, int quality, int
return false;
}
+bool FilesTreeModel::deleteFile(const QModelIndex &file){
+ QString fullPath = file.data(FullPathRole).toString();
+ QFileInfo fi(fullPath);
+ if(!fi.exists()){
+ return false;
+ }
+ QVariant fileId = file.data(FilesIdRole);
+ mDb.transaction();
+ mDeleteFileQuery->bindValue(":id", fileId);
+ if(!mDeleteFileQuery->exec()){
+ mDb.rollback();
+ return false;
+ }
+ if(!QFile::remove(fullPath)){
+ mDb.rollback();
+ return false;
+ }
+ removeRows(file.row(), 1, file.parent());
+ mDb.commit();
+ return true;
+}
+
+bool FilesTreeModel::deleteFiles(const QModelIndexList &files){
+ foreach(QModelIndex i, files){
+ bool retval = deleteFile(i);
+ if(!retval){
+ return false;
+ }
+ }
+ return true;
+}
+
void FilesTreeModel::populate(QSqlQuery &filesQuery){
SmTreeItem *root = new SmTreeItem(11);
SmTreeItem *files = new SmTreeItem(11, root);