summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-03-31 18:23:30 +0200
committerArno <arno@disconnect.de>2018-03-31 18:23:30 +0200
commit3ef1fdee3a8f698cea243c86f4747a4060eb1763 (patch)
tree516883fe5410cb9f7a94a2ce8cc88f16a4ec46b1
parent8691fe4f1cae523bc2fdd64d3e90326f92fcb9d6 (diff)
downloadSheMov-3ef1fdee3a8f698cea243c86f4747a4060eb1763.tar.gz
SheMov-3ef1fdee3a8f698cea243c86f4747a4060eb1763.tar.bz2
SheMov-3ef1fdee3a8f698cea243c86f4747a4060eb1763.zip
Implement archive movies for FSWidget
Mimic the old behavior, but make the Wizard local to FSWidget. It's only called from there, so no need to make it global.
-rw-r--r--fswidget.cpp37
-rw-r--r--fswidget.h4
-rw-r--r--newmoviewizard.cpp3
-rw-r--r--smglobals.cpp4
-rw-r--r--smglobals.h2
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;
diff --git a/fswidget.h b/fswidget.h
index 0beb44e..f55ad99 100644
--- a/fswidget.h
+++ b/fswidget.h
@@ -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);