summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-09-21 05:43:34 +0200
committerArno <am@disconnect.de>2013-09-21 05:43:34 +0200
commit028203679a6bbd45287e8ca35a104b026e886c69 (patch)
tree1140abc63440a40c5a4a6be35ce16013b93f351a
parent896be3c0f9d8de231da6f3ab840c0cc39d3510a4 (diff)
downloadSheMov-028203679a6bbd45287e8ca35a104b026e886c69.tar.gz
SheMov-028203679a6bbd45287e8ca35a104b026e886c69.tar.bz2
SheMov-028203679a6bbd45287e8ca35a104b026e886c69.zip
Implement addCovers
Add covers to an already archived movie.
-rw-r--r--archivecontroller.cpp18
-rw-r--r--archivecontroller.h1
-rw-r--r--archivemodel.cpp32
-rw-r--r--archivemodel.h1
-rw-r--r--archiveview.cpp1
-rw-r--r--archiveview.h1
-rw-r--r--shemov.cpp7
-rw-r--r--shemov.h1
8 files changed, 60 insertions, 2 deletions
diff --git a/archivecontroller.cpp b/archivecontroller.cpp
index 0d89b96..84e714c 100644
--- a/archivecontroller.cpp
+++ b/archivecontroller.cpp
@@ -14,6 +14,7 @@
#include <QStandardItemModel>
#include <QAction>
#include <QApplication>
+#include <QFileDialog>
#include "archivecontroller.h"
#include "archivemodel.h"
@@ -209,6 +210,23 @@ void ArchiveController::addActionForTree(QAction *a){
mArchiveTree->addAction(a);
}
+void ArchiveController::addCovers(){
+ QSettings s;
+ QString startDir = s.value("paths/coverpath").toString();
+ QStringList covers = QFileDialog::getOpenFileNames(mArchiveView, tr("Select covers"), startDir);
+ if(covers.isEmpty()){
+ return;
+ }
+ QModelIndex part = mArchiveSelection->currentIndex();
+ if(!part.isValid()){
+ QMessageBox::critical(mArchiveView, tr("Error"), tr("No part selected!"));
+ return;
+ }
+ mArchiveModel->addCovers(part.data(ArchiveModel::SeriesPartIdRole).toInt(), covers);
+ mArchiveFilesModel->refresh();
+ mArchiveFiles->expandAll();
+}
+
void ArchiveController::readConfig(){
mActorIcon = SmGlobals::instance()->iconFor("actor");
mGenreIcon = SmGlobals::instance()->iconFor("genre");
diff --git a/archivecontroller.h b/archivecontroller.h
index 2e8fc22..e7593e1 100644
--- a/archivecontroller.h
+++ b/archivecontroller.h
@@ -54,6 +54,7 @@ class ArchiveController : public QObject {
void showProperties();
void showPreview();
void addActionForTree(QAction *a);
+ void addCovers();
void readConfig();
private slots:
diff --git a/archivemodel.cpp b/archivemodel.cpp
index 940f18f..75f6509 100644
--- a/archivemodel.cpp
+++ b/archivemodel.cpp
@@ -507,6 +507,38 @@ 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;
+ }
+ qint64 size = fi.size();
+ QString md5sum = Helper::md5Sum(c);
+ QVariant picSize = Helper::picSize(c);
+ int type = ArchiveFilesModel::GeneralCover;
+ QString archivedFile = Helper::moveToArchive(c, md5sum, true);
+ if(archivedFile.isEmpty()){
+ //copy failed
+ 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);
+ }else{
+ QFile::remove(archivedFile);
+ }
+ }
+}
+
QStringList ArchiveModel::allSources() const{
QSqlQuery sQ("SELECT DISTINCT(tsourcemedium) FROM metadata ORDER BY tsourcemedium ASC", mDb);
QStringList retval;
diff --git a/archivemodel.h b/archivemodel.h
index de79af6..83f8513 100644
--- a/archivemodel.h
+++ b/archivemodel.h
@@ -53,6 +53,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);
signals:
void needRefresh();
diff --git a/archiveview.cpp b/archiveview.cpp
index d049145..c8b72a0 100644
--- a/archiveview.cpp
+++ b/archiveview.cpp
@@ -713,4 +713,3 @@ void PartEditor::setSubtitle(const QString &subtitle){
QString PartEditor::subtitle() const {
return mSubtitle->text();
}
-
diff --git a/archiveview.h b/archiveview.h
index 22bc960..ce0732a 100644
--- a/archiveview.h
+++ b/archiveview.h
@@ -223,7 +223,6 @@ class PartEditor : public QDialog {
void setSubtitle(const QString &subtitle);
QString subtitle() const;
-
private:
QSpinBox *mPartNo;
QLineEdit *mSubtitle;
diff --git a/shemov.cpp b/shemov.cpp
index a3096a6..3e10a58 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -431,6 +431,7 @@ void SheMov::createActions(){
connect(mMoveToArchiveA, SIGNAL(triggered()), mFSWidget, SLOT(moveToArchive()));
//View menu (FS)
+
mRefreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh"), this);
connect(mRefreshA, SIGNAL(triggered()), mFSWidget->fileModel(), SLOT(refresh()));
mFSViewPropertiesA = new QAction(QIcon(":/bizarre_amputee.png"), tr("Properties..."), this);
@@ -572,7 +573,11 @@ void SheMov::createActions(){
// edit metadata
mArchiveViewMetadataA = new QAction(tr("Edit metadata..."), this);
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->setData(ArchiveModel::SeriesPartNode);
+ connect(mArchiveViewAddCoversA, SIGNAL(triggered()), c, SLOT(addCovers()));
// refresh all
mArchiveViewRefreshA = new QAction(tr("Refresh"), this);
mArchiveViewRefreshA->setData(ArchiveModel::AllNodes);
@@ -772,6 +777,7 @@ void SheMov::createMenus(){
c->addActionForTree(mArchiveViewGenresA);
c->addActionForTree(mArchiveViewPartnoA);
c->addActionForTree(mArchiveViewMetadataA);
+ c->addActionForTree(mArchiveViewAddCoversA);
c->addActionForTree(createSeparator());
c->addActionForTree(mArchiveViewMarkFavA);
c->addActionForTree(createSeparator());
@@ -851,6 +857,7 @@ void SheMov::createToolBar(){
mArchive->toolBar()->addSeparator();
mArchive->toolBar()->addAction(mArchiveFilesPreviewA);
mArchive->toolBar()->addAction(mArchiveFilesPropertiesA);
+ mArchive->toolBar()->addAction(mArchiveViewAddCoversA);
mArchive->toolBar()->addSeparator();
mArchive->toolBar()->addAction(mConfigA);
}
diff --git a/shemov.h b/shemov.h
index 4a6bf23..59dbab6 100644
--- a/shemov.h
+++ b/shemov.h
@@ -139,6 +139,7 @@ class SheMov : public QMainWindow {
QAction *mArchiveViewMetadataA;
QAction *mArchiveViewRefreshA;
QAction *mArchiveViewMarkFavA;
+ QAction *mArchiveViewAddCoversA;
QActionGroup *mArchiveFilesAG;
//ArchiveFiles actions