summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--archivecontroller.cpp4
-rw-r--r--archivecontroller.h2
-rw-r--r--archivemodel.cpp55
-rw-r--r--archivemodel.h2
-rw-r--r--shemov.cpp4
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);
diff --git a/shemov.cpp b/shemov.cpp
index 8a6055c..66a0dfe 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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);