diff options
author | Arno <am@disconnect.de> | 2014-04-04 16:13:24 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2014-04-04 16:13:24 +0200 |
commit | 78c36ad6caab4a6c22bc95ee1f983ea841416ab9 (patch) | |
tree | ecbfd36fc3852c92d87570a2b7172d22473aa44c /archiveview.cpp | |
parent | fedc8437f088a666462f21858f82733d2aa33761 (diff) | |
download | SheMov-78c36ad6caab4a6c22bc95ee1f983ea841416ab9.tar.gz SheMov-78c36ad6caab4a6c22bc95ee1f983ea841416ab9.tar.bz2 SheMov-78c36ad6caab4a6c22bc95ee1f983ea841416ab9.zip |
Delete SeriesPart
Make it possible to delete a SeriesPart. This may happen if eg. you
download the same clip/movie with a better quality.
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); } |