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