summaryrefslogtreecommitdiffstats
path: root/moviewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'moviewidget.cpp')
-rw-r--r--moviewidget.cpp44
1 files changed, 43 insertions, 1 deletions
diff --git a/moviewidget.cpp b/moviewidget.cpp
index d9a9d63..bf6777d 100644
--- a/moviewidget.cpp
+++ b/moviewidget.cpp
@@ -14,6 +14,7 @@
#include <QFileInfo>
#include <QProcess>
#include <QClipboard>
+#include <QMessageBox>
#include <QApplication>
#include "moviewidget.h"
@@ -50,7 +51,11 @@ void MovieWidget::setupWidget(){
QAction *forwardA = new QAction(buttplugRight, tr("Next archive selection"), this);
connect(forwardA, &QAction::triggered, [=] { forwardSelection(1); });
toolbar->addAction(forwardA);
- QAction *refreshA = new QAction(QIcon(":refresh.png"), tr("Refresh"), this);
+ toolbar->addSeparator();
+ QAction *deleteA = new QAction(QIcon(":/delete.png"), tr("Delete"), this);
+ connect(deleteA, &QAction::triggered, this, &MovieWidget::deleteSeries);
+ toolbar->addAction(deleteA);
+ QAction *refreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh"), this);
connect(refreshA, &QAction::triggered, this, &MovieWidget::refresh);
toolbar->addSeparator();
toolbar->addAction(refreshA);
@@ -161,6 +166,43 @@ void MovieWidget::refresh(){
selectBy(mSelectionCB->currentText());
}
+
+void MovieWidget::deleteSeries(){
+ QModelIndexList cur = mTopView->selectionModel()->selectedRows();
+ if(cur.isEmpty()){
+ return;
+ }
+ int partId = cur.first().data(SeriesPartIdRole).toInt();
+ QStringList fullPaths;
+ QSqlDatabase db = QSqlDatabase::database("treedb");
+ QSqlQuery filesQ(db);
+ filesQ.prepare("SELECT tfilename, cmd5sum FROM files WHERE iseriespart_id = :id");
+ filesQ.bindValue(":id", partId);
+ filesQ.exec();
+ while(filesQ.next()){
+ QString fp = Helper::createArchivePath(filesQ.value(0).toString(), filesQ.value(1).toString());
+ fullPaths << fp;
+ }
+ QString msg = QString(tr("Really delete %1 file(s) (SeriesId %2)?")).arg(fullPaths.count()).arg(partId);
+ int retval = QMessageBox::question(this, tr("Delete files..."), msg);
+ if(retval == QMessageBox::Yes){
+ db.transaction();
+ QSqlQuery deleteId(db);
+ deleteId.prepare("DELETE FROM seriesparts WHERE iseriesparts_id = :id");
+ deleteId.bindValue(":id", partId);
+ if(deleteId.exec()){
+ for(QString f : fullPaths){
+ if(!QFile::remove(f)){
+ db.rollback();
+ return;
+ }
+ }
+ }
+ mTopModel->removeRow(mTopProxy->mapToSource(cur.first()).row());
+ db.commit();
+ }
+}
+
void MovieWidget::selectBy(const QString &selection){
if(selection == "Series"){
populateBySeries();