diff options
author | Arno <am@disconnect.de> | 2015-03-21 09:15:16 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2015-03-21 09:15:16 +0100 |
commit | 9544f4d790695e707e7e8b9cb44f9cb0fed0dbcb (patch) | |
tree | bf6af4d83c91f5a2594a3777fb31f620e6a852d2 | |
parent | e6b7e5e0fccef756398982bd51137bb433df7f4a (diff) | |
download | SheMov-9544f4d790695e707e7e8b9cb44f9cb0fed0dbcb.tar.gz SheMov-9544f4d790695e707e7e8b9cb44f9cb0fed0dbcb.tar.bz2 SheMov-9544f4d790695e707e7e8b9cb44f9cb0fed0dbcb.zip |
Delete emtpy series
Enable the delete option in ArchiveTree, but only allow delete when it
has no children.
-rw-r--r-- | archivecontroller.cpp | 4 | ||||
-rw-r--r-- | archivemodel.cpp | 7 | ||||
-rw-r--r-- | archivemodel.h | 1 | ||||
-rw-r--r-- | archiveview.cpp | 21 | ||||
-rw-r--r-- | shemov.cpp | 5 |
5 files changed, 33 insertions, 5 deletions
diff --git a/archivecontroller.cpp b/archivecontroller.cpp index 338a698..0c29373 100644 --- a/archivecontroller.cpp +++ b/archivecontroller.cpp @@ -319,7 +319,9 @@ void ArchiveController::treeSelectionChanged(const QItemSelection &selected, con int nodeType = sel.first().data(ArchiveModel::TypeRole).toInt(); foreach(QAction *a, mActionsForTree){ - a->setEnabled(a->data().toInt() & nodeType); + int aData = a->data().toInt(); + bool enabled = (aData >> nodeType) & 1; + a->setEnabled(enabled); } } diff --git a/archivemodel.cpp b/archivemodel.cpp index d1580de..483eb9f 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -552,6 +552,13 @@ bool ArchiveModel::deleteSeriesPart(int partId){ return deleteQ.exec(); } +bool ArchiveModel::deleteSeries(int seriesId){ + QSqlQuery seriesQ(mDb); + seriesQ.prepare("DELETE FROM series WHERE iseries_id = :id"); + seriesQ.bindValue(":id", seriesId); + return seriesQ.exec(); +} + bool ArchiveModel::addSeriesPart(int partno, QString subtitle, const QModelIndex &parent){ int seriesId = parent.data(ArchiveModel::GenericIdRole).toInt(); mDb.transaction(); diff --git a/archivemodel.h b/archivemodel.h index 27cd8cf..6e02855 100644 --- a/archivemodel.h +++ b/archivemodel.h @@ -54,6 +54,7 @@ class ArchiveModel : public SmTreeModel { void addFiles(int partId, const QStringList files); void removeFiles(const QList<int> fileIds); bool deleteSeriesPart(int partId); + bool deleteSeries(int seriesId); bool addSeriesPart(int partno, QString subtitle, const QModelIndex &parent); int seriesPartIdFromMd5(const QString &md5); diff --git a/archiveview.cpp b/archiveview.cpp index b7ae5e6..9c05b09 100644 --- a/archiveview.cpp +++ b/archiveview.cpp @@ -425,10 +425,10 @@ void ArchiveTree::deleteFromTree(){ return; } int type = idx.data(ArchiveModel::TypeRole).toInt(); + ArchiveController *c = SmGlobals::instance()->archiveController(); + ArchiveFilesModel *fm = c->archiveFilesModel(); + ArchiveModel *am = c->archiveTreeModel(); if(type == ArchiveModel::SeriesPartNode){ - ArchiveController *c = SmGlobals::instance()->archiveController(); - ArchiveFilesModel *fm = c->archiveFilesModel(); - ArchiveModel *am = c->archiveTreeModel(); int seriesPartId = idx.data(ArchiveModel::SeriesPartIdRole).toInt(); QStringList files = fm->filesForSeriespart(seriesPartId); if(!files.isEmpty()){ @@ -448,6 +448,21 @@ void ArchiveTree::deleteFromTree(){ } am->refresh(); } + if(type == ArchiveModel::SeriesNode){ + if(mProxy->hasChildren(idx)){ + QMessageBox::critical(0, tr("Critical"), tr("Series is not empty!"), QMessageBox::Ok); + return; + } + int seriesId = idx.data(ArchiveModel::GenericIdRole).toInt(); + if(seriesId > 0){ + QString msg = QString(tr("Really delete series %1?")).arg(idx.data(ArchiveModel::NameRole).toString()); + int retval = QMessageBox::question(0, tr("Question"), msg, QMessageBox::Ok | QMessageBox::Cancel); + if(retval == QMessageBox::Ok){ + am->deleteSeries(seriesId); + am->refresh(); + } + } + } } void ArchiveTree::newPart(){ @@ -673,7 +673,10 @@ void SheMov::createActions(){ connect(mArchiveViewMarkFavA, SIGNAL(triggered()), c->archiveTree(), SLOT(markAsFavorite())); //delete from Tree mArchiveViewDeleteA = new QAction(QIcon(":/delete.png"), tr("Delete..."), this); - mArchiveViewDeleteA->setData(ArchiveModel::SeriesPartNode); + int deleteMask = 0; + deleteMask |= (1 << ArchiveModel::SeriesNode); + deleteMask |= (1 << ArchiveModel::SeriesPartNode); + mArchiveViewDeleteA->setData(deleteMask); connect(mArchiveViewDeleteA, SIGNAL(triggered()), c->archiveTree(), SLOT(deleteFromTree())); //add new series part mArchiveViewNewPartA = new QAction(QIcon(":/french_maid_dress.png"), tr("New..."), this); |