summaryrefslogtreecommitdiffstats
path: root/archiveview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archiveview.cpp')
-rw-r--r--archiveview.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/archiveview.cpp b/archiveview.cpp
index 8df9bb6..1d49db0 100644
--- a/archiveview.cpp
+++ b/archiveview.cpp
@@ -395,6 +395,36 @@ void ArchiveTree::markAsFavorite(){
c->archiveTreeModel()->setFavorite(pId, !fav);
}
+void ArchiveTree::deleteFromTree(){
+ QModelIndex idx = firstSelected();
+ if(!idx.isValid()){
+ return;
+ }
+ int type = idx.data(ArchiveModel::TypeRole).toInt();
+ if(type == ArchiveModel::SeriesPartNode){
+ ArchiveController *c = SmGlobals::instance()->archiveController();
+ ArchiveFilesModel *fm = c->archiveFilesModel();
+ int seriesPartId = idx.data(ArchiveModel::SeriesPartIdRole).toInt();
+ QStringList files = fm->filesForSeriespart(seriesPartId);
+ if(!files.isEmpty()){
+ QString msg = tr("<b>This action will permanently delete the following files:</b><ul>");
+ foreach(QString f, files){
+ QString fli = QString("<li>%1</li>").arg(f);
+ msg.append(fli);
+ }
+ 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){
+ ArchiveModel *am = c->archiveTreeModel();
+ if(am->deleteSeriesPart(seriesPartId)){
+ am->refresh();
+ }
+ }
+ }
+ }
+}
+
void ArchiveTree::impossible(const QString msg){
QMessageBox::critical(this, tr("Error"), msg);
}