diff options
-rw-r--r-- | archivecontroller.cpp | 4 | ||||
-rw-r--r-- | archivecontroller.h | 2 | ||||
-rw-r--r-- | archivemodel.cpp | 55 | ||||
-rw-r--r-- | archivemodel.h | 2 | ||||
-rw-r--r-- | shemov.cpp | 4 |
5 files changed, 37 insertions, 30 deletions
diff --git a/archivecontroller.cpp b/archivecontroller.cpp index 5638119..e5dbcc7 100644 --- a/archivecontroller.cpp +++ b/archivecontroller.cpp @@ -210,7 +210,7 @@ void ArchiveController::addActionForTree(QAction *a){ mArchiveTree->addAction(a); } -void ArchiveController::addCovers(){ +void ArchiveController::addFiles(){ QSettings s; QString startDir = s.value("paths/coverpath").toString(); QStringList covers = QFileDialog::getOpenFileNames(mArchiveView, tr("Select covers"), startDir); @@ -222,7 +222,7 @@ void ArchiveController::addCovers(){ QMessageBox::critical(mArchiveView, tr("Error"), tr("No part selected!")); return; } - mArchiveModel->addCovers(part.data(ArchiveModel::SeriesPartIdRole).toInt(), covers); + mArchiveModel->addFiles(part.data(ArchiveModel::SeriesPartIdRole).toInt(), covers); mArchiveFilesModel->refresh(); mArchiveFiles->expandAll(); } diff --git a/archivecontroller.h b/archivecontroller.h index fb02383..5c3974f 100644 --- a/archivecontroller.h +++ b/archivecontroller.h @@ -54,7 +54,7 @@ class ArchiveController : public QObject { void showProperties(); void showPreview(); void addActionForTree(QAction *a); - void addCovers(); + void addFiles(); void readConfig(); void moveFilesToSeriespart(const QStringList &md5Sums, int newSeriesPart); 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(); } } } diff --git a/archivemodel.h b/archivemodel.h index 20f878c..06861d9 100644 --- a/archivemodel.h +++ b/archivemodel.h @@ -54,7 +54,7 @@ class ArchiveModel : public SmTreeModel { QStringList allReleaseGroups() const; bool setPartNo(int partId, int newPartId, const QString &subtitle); bool setFavorite(int partId, bool favorite); - void addCovers(int partId, const QStringList covers); + void addFiles(int partId, const QStringList files); bool deleteSeriesPart(int partId); bool addSeriesPart(int partno, QString subtitle, const QModelIndex &parent); @@ -610,9 +610,9 @@ void SheMov::createActions(){ mArchiveViewMetadataA->setData(ArchiveModel::SeriesPartNode); // add Covers connect(mArchiveViewMetadataA, SIGNAL(triggered()), c->archiveTree(), SLOT(editMetadata())); - mArchiveViewAddCoversA = new QAction(QIcon(":/huge_bra.png"), tr("Add Covers..."), this); + mArchiveViewAddCoversA = new QAction(QIcon(":/huge_bra.png"), tr("Add Files..."), this); mArchiveViewAddCoversA->setData(ArchiveModel::SeriesPartNode); - connect(mArchiveViewAddCoversA, SIGNAL(triggered()), c, SLOT(addCovers())); + connect(mArchiveViewAddCoversA, SIGNAL(triggered()), c, SLOT(addFiles())); //collapse and expand... mArchiveViewExpandAllA = new QAction(tr("Expand all"), this); mArchiveViewExpandAllA->setData(ArchiveModel::AllNodes); |