diff options
Diffstat (limited to 'moviewidget.cpp')
-rw-r--r-- | moviewidget.cpp | 44 |
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(); |