diff options
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r-- | archivemodel.cpp | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 578ff5c..11ee6e5 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -495,34 +495,41 @@ bool ArchiveModel::setFavorite(int partId, bool favorite){ return false; } -void ArchiveModel::addCovers(int partId, const QStringList covers){ - QSqlQuery coverQ(mDb); - coverQ.prepare("INSERT INTO files(iseriespart_id, tfilename, cmd5sum, bisize, sifiletype, cpicsize) VALUES(:id, :fn, :md5, :size, :type, :picsize)"); - foreach(QString c, covers){ - QFileInfo fi(c); - if(!fi.exists()){ - continue; - } +void ArchiveModel::addFiles(int partId, const QStringList files){ + foreach(QString file, files){ + QFileInfo fi(file); qint64 size = fi.size(); - QString md5sum = Helper::md5Sum(c); - QVariant picSize = Helper::picSize(c); - int type = FT_GENERALCOVER; - QString archivedFile = Helper::moveToArchive(c, md5sum, true); - if(archivedFile.isEmpty()){ - //copy failed + QString md5sum = Helper::md5Sum(file); + QVariant durationOrSize; + int fileType = FT_GENERALCOVER; + QString mimeType = Helper::mimeType(file); + QSqlQuery fileQ(mDb); + if(mimeType.startsWith("video")){ + QVariantMap ffmpegMap = Helper::ffmpegData(file); + durationOrSize = ffmpegMap.value("duration"); + fileType = FT_MOVIE; + fileQ.prepare("INSERT INTO files(iseriespart_id, tfilename, cmd5sum, bisize, sifiletype, iduration) VALUES(:id, :fn, :md5, :size, :type, :durOrSize)"); + }else if(mimeType.startsWith("image")){ + durationOrSize = Helper::picSize(file); + fileQ.prepare("INSERT INTO files(iseriespart_id, tfilename, cmd5sum, bisize, sifiletype, cpicsize) VALUES(:id, :fn, :md5, :size, :type, :durOrSize)"); + }else{ + QString msg = QString("Unknown mime type %1 for %2").arg(mimeType).arg(file); + emit message(msg); continue; } - QFileInfo afi(archivedFile); - coverQ.bindValue(":id", partId); - coverQ.bindValue(":fn", afi.fileName()); - coverQ.bindValue(":md5", md5sum); - coverQ.bindValue(":size", size); - coverQ.bindValue(":type", type); - coverQ.bindValue(":picsize", picSize); - if(coverQ.exec()){ - QFile::remove(c); + fileQ.bindValue(":id", partId); + fileQ.bindValue(":fn", fi.fileName()); + fileQ.bindValue(":md5", md5sum); + fileQ.bindValue(":size", size); + fileQ.bindValue(":type", fileType); + if(fileType == FT_MOVIE){ + fileQ.bindValue(":durOrSize", durationOrSize.toInt()); }else{ - QFile::remove(archivedFile); + fileQ.bindValue(":durOrSize", durationOrSize.toString()); + } + QString moveTo = Helper::moveToArchive(file, md5sum); + if(!moveTo.isEmpty()){ + fileQ.exec(); } } } |