diff options
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r-- | archivemodel.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 3fcd34e..0e29c37 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -507,6 +507,34 @@ void ArchiveModel::addCovers(int partId, const QStringList covers){ } } +bool ArchiveModel::deleteSeriesPart(int partId){ + QSqlQuery filesQ(mDb); + filesQ.prepare("SELECT cmd5sum,tfilename FROM files WHERE iseriespart_id = :id"); + filesQ.bindValue(":id", partId); + QStringList fileNames; + if(filesQ.exec()){ + while(filesQ.next()){ + QString md5 = filesQ.value(0).toString(); + QString fn = filesQ.value(1).toString(); + fileNames << Helper::createArchivePath(fn, md5); + } + bool success = true; + foreach(QString f, fileNames){ + if(!QFile::remove(f)){ + success = false; + break; + } + } + if(success){ + QSqlQuery deleteQ(mDb); + deleteQ.prepare("DELETE FROM seriesparts WHERE iseriesparts_id = :id"); + deleteQ.bindValue(":id", partId); + return deleteQ.exec(); + } + } + return false; +} + QStringList ArchiveModel::allSources() const{ QSqlQuery sQ("SELECT DISTINCT(tsourcemedium) FROM metadata ORDER BY tsourcemedium ASC", mDb); QStringList retval; @@ -914,6 +942,18 @@ void ArchiveFilesModel::populate(const QSet<int> &seriesPartIds){ setRoot(root); } +QStringList ArchiveFilesModel::filesForSeriespart(int seriesPartId) const{ + QStringList retval; + QSqlQuery q(mDb); + q.prepare("SELECT tfilename FROM files where iseriespart_id = :id ORDER BY tfilename DESC"); + q.bindValue(":id", seriesPartId); + q.exec(); + while(q.next()){ + retval.append(q.value(0).toString()); + } + return retval; +} + void ArchiveFilesModel::refresh(){ populate(mSeriesPartIds); } |