diff options
author | Arno <am@disconnect.de> | 2013-09-21 05:43:34 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-09-21 05:43:34 +0200 |
commit | 028203679a6bbd45287e8ca35a104b026e886c69 (patch) | |
tree | 1140abc63440a40c5a4a6be35ce16013b93f351a | |
parent | 896be3c0f9d8de231da6f3ab840c0cc39d3510a4 (diff) | |
download | SheMov-028203679a6bbd45287e8ca35a104b026e886c69.tar.gz SheMov-028203679a6bbd45287e8ca35a104b026e886c69.tar.bz2 SheMov-028203679a6bbd45287e8ca35a104b026e886c69.zip |
Implement addCovers
Add covers to an already archived movie.
-rw-r--r-- | archivecontroller.cpp | 18 | ||||
-rw-r--r-- | archivecontroller.h | 1 | ||||
-rw-r--r-- | archivemodel.cpp | 32 | ||||
-rw-r--r-- | archivemodel.h | 1 | ||||
-rw-r--r-- | archiveview.cpp | 1 | ||||
-rw-r--r-- | archiveview.h | 1 | ||||
-rw-r--r-- | shemov.cpp | 7 | ||||
-rw-r--r-- | shemov.h | 1 |
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; @@ -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); } @@ -139,6 +139,7 @@ class SheMov : public QMainWindow { QAction *mArchiveViewMetadataA; QAction *mArchiveViewRefreshA; QAction *mArchiveViewMarkFavA; + QAction *mArchiveViewAddCoversA; QActionGroup *mArchiveFilesAG; //ArchiveFiles actions |