summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2014-04-18 12:50:24 +0200
committerArno <am@disconnect.de>2014-04-18 12:50:24 +0200
commita0ae79cb4616fcca8a25b1a6f54bbecd39474bd5 (patch)
treecb02bc0a217d8c99609253d796e15971ed4f1a87
parentc1984a1fa33a2f7f730e439184a2c4773f0b95d0 (diff)
downloadSheMov-a0ae79cb4616fcca8a25b1a6f54bbecd39474bd5.tar.gz
SheMov-a0ae79cb4616fcca8a25b1a6f54bbecd39474bd5.tar.bz2
SheMov-a0ae79cb4616fcca8a25b1a6f54bbecd39474bd5.zip
Delete files from Archive
Well, the title says it all. KILL THEM!
-rw-r--r--archivemodel.cpp20
-rw-r--r--archivemodel.h1
-rw-r--r--archiveview.cpp20
-rw-r--r--archiveview.h4
-rw-r--r--shemov.cpp5
-rw-r--r--shemov.h1
6 files changed, 51 insertions, 0 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp
index 11ee6e5..1da5833 100644
--- a/archivemodel.cpp
+++ b/archivemodel.cpp
@@ -534,6 +534,26 @@ void ArchiveModel::addFiles(int partId, const QStringList files){
}
}
+void ArchiveModel::removeFiles(const QList<int> fileIds){
+ QSqlQuery removeQ(mDb);
+ removeQ.prepare("DELETE FROM files WHERE ifiles_id = :id");
+ QSqlQuery dataQ(mDb);
+ dataQ.prepare("SELECT tfilename, cmd5sum FROM files WHERE ifiles_id = :id");
+ QString md5, fileName;
+ foreach(int id, fileIds){
+ dataQ.bindValue(":id" ,id);
+ dataQ.exec();
+ while(dataQ.next()){
+ fileName = dataQ.value(0).toString();
+ md5 = dataQ.value(1).toString();
+ if(Helper::removeFromArchive(fileName, md5)){
+ removeQ.bindValue(":id", id);
+ removeQ.exec();
+ }
+ }
+ }
+}
+
bool ArchiveModel::deleteSeriesPart(int partId){
QSqlQuery filesQ(mDb);
filesQ.prepare("SELECT cmd5sum,tfilename FROM files WHERE iseriespart_id = :id");
diff --git a/archivemodel.h b/archivemodel.h
index 06861d9..0c66b0d 100644
--- a/archivemodel.h
+++ b/archivemodel.h
@@ -55,6 +55,7 @@ class ArchiveModel : public SmTreeModel {
bool setPartNo(int partId, int newPartId, const QString &subtitle);
bool setFavorite(int partId, bool favorite);
void addFiles(int partId, const QStringList files);
+ void removeFiles(const QList<int> fileIds);
bool deleteSeriesPart(int partId);
bool addSeriesPart(int partno, QString subtitle, const QModelIndex &parent);
diff --git a/archiveview.cpp b/archiveview.cpp
index c59130c..27285c2 100644
--- a/archiveview.cpp
+++ b/archiveview.cpp
@@ -514,6 +514,26 @@ ArchiveFiles::ArchiveFiles(const QString &headerSettings, QWidget *parent) : SmT
setDragEnabled(true);
}
+void ArchiveFiles::deleteFromFiles(){
+ QModelIndexList selected = selectionModel()->selectedRows();
+ QString msg = tr("<b>This action will permanently delete the following files:</b><ul>");
+ QList<int> fileIds;
+ foreach(QModelIndex idx, selected){
+ QString a = QString("<li>%1</li>").arg(idx.data(ArchiveFilesModel::FullPathRole).toString());
+ msg.append(a);
+ fileIds << idx.data(ArchiveFilesModel::FileIdRole).toInt();
+ }
+ msg.append("</ul>");
+ msg.append(tr("<p>Continue?</p>"));
+ int answer = QMessageBox::warning(0, tr("Question"), msg, QMessageBox::Yes | QMessageBox::No);
+ if(answer == QMessageBox::Yes){
+ ArchiveController *c = SmGlobals::instance()->archiveController();
+ c->archiveTreeModel()->removeFiles(fileIds);
+ c->archiveTreeModel()->refresh();
+ }
+
+}
+
void ArchiveFiles::mousePressEvent(QMouseEvent *e){
if(e->button() == Qt::LeftButton){
mDragStartPos = e->pos();
diff --git a/archiveview.h b/archiveview.h
index dbe0e8f..a900ec2 100644
--- a/archiveview.h
+++ b/archiveview.h
@@ -111,9 +111,13 @@ class ArchiveTree : public SmTreeView {
};
class ArchiveFiles : public SmTreeView {
+ Q_OBJECT
public:
explicit ArchiveFiles(const QString &headerSettings = "afilesheaders", QWidget *parent = 0);
+ public slots:
+ void deleteFromFiles();
+
protected:
virtual void mousePressEvent(QMouseEvent *e);
virtual void mouseMoveEvent(QMouseEvent *e);
diff --git a/shemov.cpp b/shemov.cpp
index 66a0dfe..d939c72 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -659,6 +659,9 @@ void SheMov::createActions(){
// preview
mArchiveFilesPreviewA = new QAction(QIcon(":/male_chastity_belt.png"), tr("Preview..."), this);
connect(mArchiveFilesPreviewA, SIGNAL(triggered()), c, SLOT(showPreview()));
+ // delete from archive
+ mArchiveRemoveFilesA = new QAction(QIcon(":/delete.png"), tr("Remove..."), this);
+ connect(mArchiveRemoveFilesA, SIGNAL(triggered()), c->archiveFiles(), SLOT(deleteFromFiles()));
//ArchiveBrowser Actions
mArchiveBrowserMoveToBurnA = new QAction(QIcon(":/shackles.png"), tr("Move to burn..."), this);
@@ -876,6 +879,8 @@ void SheMov::createMenus(){
c->archiveFiles()->addAction(mArchiveFilesTypeA);
c->archiveFiles()->addAction(mArchiveFilesFileNoA);
c->archiveFiles()->addAction(createSeparator());
+ c->archiveFiles()->addAction(mArchiveRemoveFilesA);
+ c->archiveFiles()->addAction(createSeparator());
c->archiveFiles()->addAction(mArchiveFilesPreviewA);
c->archiveFiles()->addAction(createSeparator());
c->archiveFiles()->addAction(mArchiveFilesPropertiesA);
diff --git a/shemov.h b/shemov.h
index a2bd27d..196401e 100644
--- a/shemov.h
+++ b/shemov.h
@@ -169,6 +169,7 @@ class SheMov : public QMainWindow {
QAction *mArchiveFilesFileNoA;
QAction *mArchiveFilesPropertiesA;
QAction *mArchiveFilesPreviewA;
+ QAction *mArchiveRemoveFilesA;
//DB analyze actions
QAction *mAnalyzeActorsA;