diff options
author | Arno <am@disconnect.de> | 2014-04-18 12:50:24 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2014-04-18 12:50:24 +0200 |
commit | a0ae79cb4616fcca8a25b1a6f54bbecd39474bd5 (patch) | |
tree | cb02bc0a217d8c99609253d796e15971ed4f1a87 | |
parent | c1984a1fa33a2f7f730e439184a2c4773f0b95d0 (diff) | |
download | SheMov-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.cpp | 20 | ||||
-rw-r--r-- | archivemodel.h | 1 | ||||
-rw-r--r-- | archiveview.cpp | 20 | ||||
-rw-r--r-- | archiveview.h | 4 | ||||
-rw-r--r-- | shemov.cpp | 5 | ||||
-rw-r--r-- | shemov.h | 1 |
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); @@ -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); @@ -169,6 +169,7 @@ class SheMov : public QMainWindow { QAction *mArchiveFilesFileNoA; QAction *mArchiveFilesPropertiesA; QAction *mArchiveFilesPreviewA; + QAction *mArchiveRemoveFilesA; //DB analyze actions QAction *mAnalyzeActorsA; |