diff options
-rw-r--r-- | fswidget.cpp | 37 | ||||
-rw-r--r-- | fswidget.h | 4 | ||||
-rw-r--r-- | newmoviewizard.cpp | 3 | ||||
-rw-r--r-- | smglobals.cpp | 4 | ||||
-rw-r--r-- | smglobals.h | 2 |
5 files changed, 46 insertions, 4 deletions
diff --git a/fswidget.cpp b/fswidget.cpp index fb78a1f..92be9ae 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -19,8 +19,11 @@ #include "fswidget.h" #include "helper.h" +#include "newmoviewizard.h" FSWidget::FSWidget(QWidget *parent) : QWidget(parent) { + mMovieWizard = new NewMovieWizard(this); + mMovieWizard->setMinimumWidth(1024); setPalette(qApp->palette()); setupWidget(); } @@ -43,6 +46,10 @@ void FSWidget::setupWidget(){ connect(refreshA, &QAction::triggered, this, &FSWidget::refresh); toolbar->addSeparator(); toolbar->addAction(refreshA); + QAction *archiveMovieA = new QAction(QIcon(":/huge_bra.png"), tr("Archive movies..."), this); + connect(archiveMovieA, &QAction::triggered, this, &FSWidget::archiveMovie); + connect(mMovieWizard, &NewMovieWizard::accepted, this, &FSWidget::refresh); + toolbar->addAction(archiveMovieA); QIcon plusIcon = Helper::icon(QColor(255,85,255), '+'); QIcon minusIcon = Helper::icon(QColor(255,85,255), '-'); @@ -104,7 +111,7 @@ void FSWidget::setupWidget(){ mProxy->setSourceModel(mModel); mFileView->setModel(mProxy); - addActions(QList<QAction*>() << backA << forwardA << Helper::createSeparator(this) << refreshA); + addActions(QList<QAction*>() << backA << forwardA << Helper::createSeparator(this) << refreshA << archiveMovieA); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(topWL); @@ -203,7 +210,6 @@ void FSWidget::gatherData(const QString &curDir){ QBrush blackBrush(Qt::black); QBrush greenBrush(Qt::darkGreen); QBrush blueBrush(Qt::darkBlue); - QBrush currentBrush = blackBrush; //setup database QSqlDatabase db = QSqlDatabase::database("treedb"); @@ -219,6 +225,7 @@ void FSWidget::gatherData(const QString &curDir){ QDirIterator it(curDir, QDir::Files); mFileView->setUpdatesEnabled(false); while(it.hasNext()){ + QBrush currentBrush = blackBrush; QFileInfo fi = it.next(); ++fileCount; QMimeType mimeType = mimedb.mimeTypeForFile(fi); @@ -272,6 +279,7 @@ void FSWidget::gatherData(const QString &curDir){ items << item; } items[0]->setText(fi.fileName()); + items[0]->setData(fi.absoluteFilePath(), FullPathRole); if(mimeName.startsWith("video")){ items[0]->setIcon(videoIcon); }else if(mimeName.startsWith("image")){ @@ -297,6 +305,31 @@ void FSWidget::gatherData(const QString &curDir){ emit message(msg); } +void FSWidget::archiveMovie(){ + QModelIndexList selected = mFileView->selectionModel()->selectedRows(); + if(selected.isEmpty()){ + return; + } + mMovieWizard->restart(); + mMovieWizard->infoPage()->setCurrentDir(mDirCB->currentText()); + for(const QModelIndex &idx : selected){ + QString path = idx.data(FullPathRole).toString(); + mMovieWizard->infoPage()->addFile(path); + mMovieWizard->infoPage()->guessOld(path); + } + QSettings s; + bool autoAddCovers = s.value("ui/autoaddcovers", false).toBool(); + QString coverPath = s.value("paths/coverpath").toString(); + if(autoAddCovers && !coverPath.isEmpty()){ + QDir coverDir(coverPath); + for(const QFileInfo &fi : coverDir.entryInfoList(QDir::Files)){ + mMovieWizard->infoPage()->addFile(fi.absoluteFilePath()); + } + } + mMovieWizard->infoPage()->selectFirst(); + mMovieWizard->show(); +} + void FSWidget::advanceDir(int by){ int dirCount = mDirCB->count(); int nextIdx = mDirCB->currentIndex() + by; @@ -9,10 +9,12 @@ class QTreeView; class QStandardItemModel; class QSortFilterProxyModel; class QContextMenuEvent; +class NewMovieWizard; class FSWidget : public QWidget { Q_OBJECT public: + enum CustomRoles { FullPathRole = Qt::UserRole + 1}; explicit FSWidget(QWidget *parent = nullptr); ~FSWidget(); @@ -28,6 +30,7 @@ class FSWidget : public QWidget { void insertItem(QComboBox *cb, const QString &text); void removeItem(QComboBox *cb); void gatherData(const QString &curDir); + void archiveMovie(); void advanceDir(int by); int queryCount(QSqlQuery &q, const QString &arg); @@ -41,6 +44,7 @@ class FSWidget : public QWidget { QTreeView *mFileView; QStandardItemModel *mModel; QSortFilterProxyModel *mProxy; + NewMovieWizard *mMovieWizard; int mQueryCount; }; diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp index f8c373f..c68cf42 100644 --- a/newmoviewizard.cpp +++ b/newmoviewizard.cpp @@ -516,7 +516,8 @@ void MovieInfoPage::addOld(){ void MovieInfoPage::guessOld(const QString &fullPath){ QFileInfo fi(fullPath); QString baseName = fi.completeBaseName(); - QRegularExpression fnRe(baseName); + QString fnReStr = QString("^%1").arg(baseName); + QRegularExpression fnRe(fnReStr); QModelIndex parent; QDirIterator it(fi.dir()); QList<QVariant> itemData; diff --git a/smglobals.cpp b/smglobals.cpp index 0e4b3a9..49758e0 100644 --- a/smglobals.cpp +++ b/smglobals.cpp @@ -163,6 +163,10 @@ void SmGlobals::registerWidget(const QString &name, QWidget *w){ mWidgets.insert(name, w); } +QWidget *SmGlobals::getRegisteredWidget(const QString &name){ + return mWidgets.value(name); +} + void SmGlobals::setReencReasons(const QStringList reasons){ mReencReasons = reasons; std::sort(mReencReasons.begin(), mReencReasons.end()); diff --git a/smglobals.h b/smglobals.h index 7cc332f..0ac20ac 100644 --- a/smglobals.h +++ b/smglobals.h @@ -42,8 +42,8 @@ class SmGlobals : public QObject { QIcon iconFor(const QString &type); const QHash<QString, QString> & icons() const { return mIcons; } QHash<int, QString> filetypeMap() const { return mFiletypeMap; } - QHash<QString, QWidget*> registeredWidgets() { return mWidgets; } void registerWidget(const QString &name, QWidget *w); + QWidget *getRegisteredWidget(const QString &name); QStringList reencReasons() const { return mReencReasons; } void setReencReasons(const QStringList reasons); |