summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--newmoviewizard.cpp69
-rw-r--r--newmoviewizard.h12
-rw-r--r--shemov.cpp18
-rw-r--r--shemov.h2
4 files changed, 77 insertions, 24 deletions
diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp
index 5325c1c..00893fb 100644
--- a/newmoviewizard.cpp
+++ b/newmoviewizard.cpp
@@ -33,9 +33,12 @@
#include "helper.h"
NewMovieWizard::NewMovieWizard(QWidget *parent) : QWizard(parent){
- addPage(new MovieInfoPage);
- addPage(new MovieMappingPage("actors"));
- addPage(new MovieMappingPage("genres"));
+ mInfoPage = new MovieInfoPage;
+ mActorPage = new MovieMappingPage("actors");
+ mGenrePage = new MovieMappingPage("genres");
+ addPage(mInfoPage);
+ addPage(mActorPage);
+ addPage(mGenrePage);
setOption(QWizard::IndependentPages, true);
}
@@ -118,6 +121,10 @@ void NewMovieWizard::accept(){
}
MovieInfoPage::MovieInfoPage(QWidget *parent) : QWizardPage(parent){
+ setupGui();
+}
+
+void MovieInfoPage::setupGui(){
setTitle(tr("Collect files for movie"));
setSubTitle(tr("Select files by clicking the \"Add files...\" button. After adding files select one by one and set the appropriate file type. The series no is the number the movie has in the series: 14 in case of e.g. rogue adventures 14. The part number only has to be set if the movie is split in several parts."));
setPixmap(QWizard::LogoPixmap, QPixmap(":/shemov.png"));
@@ -232,37 +239,51 @@ void MovieInfoPage::initializePage(){
mOnDvd->setChecked(false);
}
-void MovieInfoPage::addFiles(){
- QSettings s;
- QString startDir = s.value("paths/selecteddir", QDir::homePath()).toString();
- QStringList files = QFileDialog::getOpenFileNames(this, tr("Select files"), startDir);
- if(files.isEmpty()){
- return;
- }
- foreach(QString f, files){
- QFileInfo fi(f);
- if(fi.exists()){
- QList<QVariant> itemData;
- QModelIndex parent = QModelIndex();
- itemData << fi.fileName() << fi.size() << QVariant() << QVariant() << fi.absoluteFilePath();
- QString mimeType = Helper::mimeType(fi.absoluteFilePath());
- if(mimeType.startsWith("video")){
- itemData[WizardTreeModel::FileType] = WizardTreeModel::Movie;
- parent = mFileModel->find("Movie files");
+void MovieInfoPage::addFile(const QString &file){
+ QFileInfo fi(file);
+ if(fi.exists()){
+ QList<QVariant> itemData;
+ QModelIndex parent = QModelIndex();
+ itemData << fi.fileName() << fi.size() << QVariant() << QVariant() << fi.absoluteFilePath();
+ QString mimeType = Helper::mimeType(fi.absoluteFilePath());
+ if(mimeType.startsWith("video")){
+ itemData[WizardTreeModel::FileType] = WizardTreeModel::Movie;
+ parent = mFileModel->find("Movie files");
+ }else{
+ QString baseName = fi.completeBaseName();
+ QRegExp reFront = QRegExp("front");
+ reFront.setCaseSensitivity(Qt::CaseInsensitive);
+ QRegExp reBack = QRegExp("back");
+ reBack.setCaseSensitivity(Qt::CaseInsensitive);
+ if(baseName.endsWith('f') || (reFront.indexIn(baseName) != -1)){
+ itemData[WizardTreeModel::FileType] = WizardTreeModel::FrontCover;
+ }else if(baseName.endsWith('b') || (reBack.indexIn(baseName) != -1)){
+ itemData[WizardTreeModel::FileType] = WizardTreeModel::BackCover;
}else{
itemData[WizardTreeModel::FileType] = WizardTreeModel::GeneralCover;
- parent = mFileModel->find("Cover files");
- }
- if(parent.isValid()){
- mFileModel->addRow(itemData, parent);
}
+ parent = mFileModel->find("Cover files");
+ }
+ if(parent.isValid()){
+ mFileModel->addRow(itemData, parent);
}
}
mFileView->expandAll();
mFileView->resizeColumnToContents(0);
mFileView->resizeColumnToContents(1);
mFileView->resizeColumnToContents(2);
+}
+void MovieInfoPage::addFiles(){
+ QSettings s;
+ QString startDir = s.value("paths/selecteddir", QDir::homePath()).toString();
+ QStringList files = QFileDialog::getOpenFileNames(this, tr("Select files"), startDir);
+ if(files.isEmpty()){
+ return;
+ }
+ foreach(QString f, files){
+ addFile(f);
+ }
}
void MovieInfoPage::removeFile(){
diff --git a/newmoviewizard.h b/newmoviewizard.h
index 9f476ed..93da626 100644
--- a/newmoviewizard.h
+++ b/newmoviewizard.h
@@ -24,16 +24,26 @@ class QCheckBox;
class QStringListModel;
class WizardTreeModel;
class SmTreeItem;
+class MovieInfoPage;
+class MovieMappingPage;
class NewMovieWizard : public QWizard {
Q_OBJECT
public:
explicit NewMovieWizard(QWidget *parent = 0);
void accept();
+ MovieInfoPage *infoPage() { return mInfoPage; }
+ MovieMappingPage *actorPage() { return mActorPage; }
+ MovieMappingPage *genrePage() { return mGenrePage; }
signals:
void seriesAdded(const QString series, int seriesPart);
+ private:
+ MovieInfoPage *mInfoPage;
+ MovieMappingPage *mActorPage;
+ MovieMappingPage *mGenrePage;
+
};
class MovieInfoPage : public QWizardPage {
@@ -42,6 +52,7 @@ class MovieInfoPage : public QWizardPage {
explicit MovieInfoPage(QWidget *parent = 0);
WizardTreeModel *model() { return mFileModel; }
virtual void initializePage();
+ void addFile(const QString &file);
private slots:
void addFiles();
@@ -54,6 +65,7 @@ class MovieInfoPage : public QWizardPage {
void fileSelectionChanged(const QModelIndex &current, const QModelIndex &previous);
private:
+ void setupGui();
QTreeView *mFileView;
QLineEdit *mTitle;
QSpinBox *mSeriesNo;
diff --git a/shemov.cpp b/shemov.cpp
index a37ec83..2fa47d3 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -218,6 +218,18 @@ void SheMov::newMovieWizard(){
mNewMovieWizard->show();
}
+void SheMov::newMovieWizardWithFiles(){
+ QModelIndexList selected = mFSWidget->fileView()->selectionModel()->selectedRows();
+ if(selected.isEmpty()){
+ return;
+ }
+ mNewMovieWizard->restart();
+ foreach(QModelIndex sel, selected){
+ mNewMovieWizard->infoPage()->addFile(sel.data(QFileSystemModel::FilePathRole).toString());
+ }
+ mNewMovieWizard->show();
+}
+
void SheMov::setSize(qint64 size){
QLocale l;
QString val;
@@ -258,6 +270,8 @@ void SheMov::createActions(){
connect(mPlaySelectedFSA, SIGNAL(triggered()), mFSWidget, SLOT(playSelected()));
mNewMovieWizardA = new QAction(tr("Archive movie..."), this);
connect(mNewMovieWizardA, SIGNAL(triggered()), this, SLOT(newMovieWizard()));
+ mArchiveSelectedA = new QAction(tr("Archive selected..."), this);
+ connect(mArchiveSelectedA, SIGNAL(triggered()), this, SLOT(newMovieWizardWithFiles()));
mCleanupMapper = new QSignalMapper(this);
mCleanupGroup = new QActionGroup(this);
QAction *cleanup1 = new QAction(tr("Cleanup actors..."), this);
@@ -472,6 +486,10 @@ void SheMov::createMenus(){
mFSWidget->fileView()->addAction(mCopyA);
mFSWidget->fileView()->addAction(mMoveA);
mFSWidget->fileView()->addAction(mRenameMenuA);
+ QAction *sep10 = new QAction(this);
+ sep10->setSeparator(true);
+ mFSWidget->fileView()->addAction(sep10);
+ mFSWidget->fileView()->addAction(mArchiveSelectedA);
//ArchiveTreeView context menu
mATree->seriesWidget()->seriesTree()->addAction(mNewSeriesA);
diff --git a/shemov.h b/shemov.h
index 3d52c7e..57e9fda 100644
--- a/shemov.h
+++ b/shemov.h
@@ -41,6 +41,7 @@ class SheMov : public QMainWindow {
void aboutShemov();
void showStatistics();
void newMovieWizard();
+ void newMovieWizardWithFiles();
void setSize(qint64 size);
private:
@@ -82,6 +83,7 @@ class SheMov : public QMainWindow {
QAction *mOpenWithMenuFSA;
QAction *mOpenWithMenuAVA;
QAction *mRenameMenuA;
+ QAction *mArchiveSelectedA;
//TreeView Actions
//Series Actions