From 4bbcd75f1ff29c8dbd9befcbe8913587d35a3ed0 Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 16 Oct 2016 00:26:48 +0200 Subject: Add Next> to NewPicsDialog Make archiving various pictures easier. When NewPicsDialog is calles with a directory, the Next> button archives the current pic and selects the next. --- newpicsdialog.cpp | 33 ++++++++++++++++++++++++++++++++- newpicsdialog.h | 8 ++++++++ pictureviewer2.cpp | 1 + shemov.cpp | 11 +++++++++++ shemov.h | 3 ++- 5 files changed, 54 insertions(+), 2 deletions(-) diff --git a/newpicsdialog.cpp b/newpicsdialog.cpp index b1b5842..a161d8d 100644 --- a/newpicsdialog.cpp +++ b/newpicsdialog.cpp @@ -70,9 +70,12 @@ void NewPicsDialog::setupDlg(){ connect(mOk, SIGNAL(clicked()), this, SLOT(accept())); mCancel = new QPushButton(tr("Cancel")); connect(mCancel, SIGNAL(clicked()), this, SLOT(reject())); + mNext = new QPushButton(tr("Next >")); + connect(mNext, SIGNAL(clicked()), this, SLOT(next())); QHBoxLayout *dlgButtonLayout = new QHBoxLayout; dlgButtonLayout->addStretch(); dlgButtonLayout->addWidget(mCancel); + dlgButtonLayout->addWidget(mNext); dlgButtonLayout->addWidget(mOk); //put it together @@ -133,6 +136,16 @@ void NewPicsDialog::setFile(const QString &file){ } } +void NewPicsDialog::setDir(const QString &dir){ + mFiles.clear(); + QDir d(dir); + foreach(QFileInfo fi, d.entryInfoList(QDir::Files, QDir::Name)){ + mFiles << fi.absoluteFilePath(); + } + mFilesCtr = 0; + setNextPic(); +} + void NewPicsDialog::clearFiles(){ mFilesV->setSortingEnabled(false); SmTreeItem *rootItem = new SmTreeItem(NewPicFilesModel::NumFields); @@ -145,6 +158,15 @@ void NewPicsDialog::setFocusToMappings(){ mMappingEditWidget->treeWidget()->mappingTreeView()->setFocus(); } +void NewPicsDialog::setNextPic(){ + if(mFilesCtr < mFiles.count()){ + QString fp = mFiles.at(mFilesCtr); + setFile(fp); + SmGlobals::instance()->pictureViewer()->setFile(fp); + ++mFilesCtr; + } +} + void NewPicsDialog::removeFiles(){ QModelIndexList selected = mFilesV->selectionModel()->selectedRows(); if(selected.isEmpty()){ @@ -164,6 +186,11 @@ void NewPicsDialog::removeFiles(){ } void NewPicsDialog::accept(){ + archive(); + return QDialog::accept(); +} + +void NewPicsDialog::archive(){ writeSettings(); QList files = mFilesModel->validFiles(); if(files.isEmpty()){ @@ -206,7 +233,11 @@ void NewPicsDialog::accept(){ mFilesModel->clear(); } } - return QDialog::accept(); +} + +void NewPicsDialog::next(){ + archive(); + setNextPic(); } void NewPicsDialog::writeSettings(){ diff --git a/newpicsdialog.h b/newpicsdialog.h index d526e58..79a6acb 100644 --- a/newpicsdialog.h +++ b/newpicsdialog.h @@ -19,6 +19,7 @@ class QLabel; class QMenu; class SmTreeView; class NewPicFilesModel; +class PictureViewer2; class QSortFilterProxyModel; class MappingTreeWidget; class MappingEditWidget; @@ -35,11 +36,15 @@ class NewPicsDialog : public QDialog { void removeFiles(); void addFiles(const QStringList &files); void setFile(const QString &file); + void setDir(const QString &dir); void clearFiles(); void setFocusToMappings(); + void setNextPic(); + void next(); void accept(); private slots: + void archive(); void writeSettings(); void readSettings(); @@ -55,8 +60,11 @@ class NewPicsDialog : public QDialog { QPushButton *mRemoveFiles; QPushButton *mOk; QPushButton *mCancel; + QPushButton *mNext; QSqlDatabase mDb; QPoint mPos; + QStringList mFiles; + int mFilesCtr; }; class NewPicFilesModel : public SmTreeModel { diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 2a53986..965111c 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -349,6 +349,7 @@ void PictureViewer2::showNewPicsDialog(){ void PictureViewer2::addToNewPics(){ mNewPicsDlg->setFile(mCurPicData.at(PicFilesModel::FullPath).toString()); + mNewPicsDlg->show(); } void PictureViewer2::markCurrent(){ diff --git a/shemov.cpp b/shemov.cpp index 17194f2..38bbf7a 100644 --- a/shemov.cpp +++ b/shemov.cpp @@ -397,6 +397,8 @@ void SheMov::createActions(){ connect(mArchiveSelectedMovsA, SIGNAL(triggered()), this, SLOT(newMovieWizardWithFiles())); mArchiveSelectedPicsA = new QAction(QIcon(":/hourglass_figure.png"), tr("Archive selected pics..."), this); connect(mArchiveSelectedPicsA, SIGNAL(triggered()), this, SLOT(newPicsDialogWithFiles())); + mArchivePicsInDirA = new QAction(QIcon(":/higheels.png"), tr("Archive all pics..."), this); + connect(mArchivePicsInDirA, SIGNAL(triggered()), this, SLOT(newPicsDialogWithDir())); mConsistencyA = new QAction(tr("Check consisteny..."), this); connect(mConsistencyA, SIGNAL(triggered()), this, SLOT(checkConsistency())); mNewPicsA = new QAction(tr("Archive pics...."), this); @@ -872,6 +874,7 @@ void SheMov::createMenus(){ mFSWidget->fileView()->addAction(createSeparator()); mFSWidget->fileView()->addAction(mArchiveSelectedPicsA); + mFSWidget->fileView()->addAction(mArchivePicsInDirA); mFSWidget->fileView()->addAction(mArchiveSelectedMovsA); mFSWidget->fileView()->addAction(createSeparator()); mFSWidget->fileView()->addAction(mUnpackA); @@ -1105,6 +1108,14 @@ void SheMov::newPicsDialogWithFiles(){ mNewPicsDialog->exec(); } +void SheMov::newPicsDialogWithDir(){ + QString dir = mFSWidget->currentDir(); + mNewPicsDialog->clearFiles(); + mNewPicsDialog->setDir(dir); + SmGlobals::instance()->pictureViewer()->show(); + mNewPicsDialog->exec(); +} + void SheMov::searchResult(int seriesPartId){ mSearchDialog->hide(); mTab->setCurrentIndex(Movies); diff --git a/shemov.h b/shemov.h index 1bb0a18..3406446 100644 --- a/shemov.h +++ b/shemov.h @@ -51,9 +51,9 @@ class SheMov : public QMainWindow { void checkMount(bool mounted); void newPicsDialog(); void newPicsDialogWithFiles(); + void newPicsDialogWithDir(); void searchResult(int seriesPartId); void gotoArchive(); - void analyzeActors(); void analyzeGenres(); void analyzeSeries(); @@ -106,6 +106,7 @@ class SheMov : public QMainWindow { QAction *mPlaySelectedTimesMenuFSA; QAction *mArchiveSelectedMovsA; QAction *mArchiveSelectedPicsA; + QAction *mArchivePicsInDirA; QAction *mConsistencyA; QAction *mNewPicsA; QAction *mNewMovieWizardA; -- cgit v1.2.3-70-g09d2