summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ShemovCleaner.pro6
-rw-r--r--configurationwidget.cpp73
-rw-r--r--configurationwidget.h11
-rw-r--r--dirselectionwidget.cpp80
-rw-r--r--dirselectionwidget.h29
5 files changed, 120 insertions, 79 deletions
diff --git a/ShemovCleaner.pro b/ShemovCleaner.pro
index cc357f6..f3f298b 100644
--- a/ShemovCleaner.pro
+++ b/ShemovCleaner.pro
@@ -36,7 +36,8 @@ HEADERS += actorwidget.h \
torrentparser.h \
torrentwidget.h \
viewer.h \
- cachedfiledata.h
+ cachedfiledata.h \
+ dirselectionwidget.h
SOURCES += actorwidget.cpp \
configurationwidget.cpp \
filecopier.cpp \
@@ -54,5 +55,6 @@ SOURCES += actorwidget.cpp \
torrentparser.cpp \
torrentwidget.cpp \
viewer.cpp \
- cachedfiledata.cpp
+ cachedfiledata.cpp \
+ dirselectionwidget.cpp
RESOURCES += shemovcleaner.qrc
diff --git a/configurationwidget.cpp b/configurationwidget.cpp
index b68a069..1f12377 100644
--- a/configurationwidget.cpp
+++ b/configurationwidget.cpp
@@ -7,11 +7,9 @@
#include <QVBoxLayout>
#include <QLineEdit>
#include <QFileDialog>
-#include <QStandardItemModel>
-#include <QListView>
-#include <QItemSelectionModel>
#include "configurationwidget.h"
+#include "dirselectionwidget.h"
ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) {
//database setup
@@ -58,31 +56,7 @@ ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : Q
extWidget->setLayout(extL);
//copy directories
- QHBoxLayout *newDirL = new QHBoxLayout;
- newDirL->addWidget(new QLabel(tr("Directory")));
- mDir = new QLineEdit;
- newDirL->addWidget(mDir);
- QPushButton *browseCopyDirBtn = new QPushButton(tr("Browse..."));
- connect(browseCopyDirBtn, SIGNAL(clicked()), this, SLOT(browseCopyDir()));
- newDirL->addWidget(browseCopyDirBtn);
- QPushButton *addDir = new QPushButton(tr("Add"));
- connect(addDir, SIGNAL(clicked()), this, SLOT(addCopyDir()));
- QPushButton *removeDir = new QPushButton(tr("Remove"));
- connect(removeDir, SIGNAL(clicked()), this, SLOT(removeCopyDir()));
- QHBoxLayout *addRemL = new QHBoxLayout;
- addRemL->addStretch();
- addRemL->addWidget(addDir);
- addRemL->addWidget(removeDir);
- mCopyDirM = new QStandardItemModel;
- mCopyDirV = new QListView;
- mCopyDirV->setModel(mCopyDirM);
- connect(mCopyDirV->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(selectCopyDir(QModelIndex,QModelIndex)));
- QVBoxLayout *newDirTabL = new QVBoxLayout;
- newDirTabL->addLayout(newDirL);
- newDirTabL->addLayout(addRemL);
- newDirTabL->addWidget(mCopyDirV);
- QWidget *dirWidget = new QWidget;
- dirWidget->setLayout(newDirTabL);
+ mCopyDirW = new DirSelectionWidget;
//buttons
mAccept = new QPushButton(tr("Save"));
@@ -100,7 +74,7 @@ ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : Q
QTabWidget *tab = new QTabWidget;
tab->addTab(dbWidget, tr("Database"));
tab->addTab(extWidget, tr("Programs"));
- tab->addTab(dirWidget, tr("Copy dirs"));
+ tab->addTab(mCopyDirW, tr("Copy dirs"));
mainLayout->addWidget(tab);
mainLayout->addLayout(bLayout);
readSettings();
@@ -117,11 +91,7 @@ void ConfigurationWidget::accept(){
s.setValue("ext/ffprobe", mFfProbe->text());
s.setValue("ext/ffmpeg", mFfMpeg->text());
s.setValue("ext/mkvinfo", mMkvInfo->text());
- QStringList copyDirs;
- for(int i = 0; i < mCopyDirM->rowCount(); ++i){
- auto item = mCopyDirM->item(i);
- copyDirs << item->text();
- }
+ QStringList copyDirs = mCopyDirW->directories();
s.setValue("copydirs", copyDirs);
QDialog::accept();
}
@@ -141,36 +111,6 @@ void ConfigurationWidget::browseMkvInfo(){
mMkvInfo->setText(QDir::toNativeSeparators(mkvinfo));
}
-void ConfigurationWidget::browseCopyDir(){
- QString copyDir = QFileDialog::getExistingDirectory(this, tr("Select Directory"), QDir::homePath());
- mDir->setText(QDir::toNativeSeparators(copyDir));
-}
-
-void ConfigurationWidget::addCopyDir(){
- QString dir = mDir->text();
- QFileInfo dinfo(dir);
- if(dinfo.exists() && dinfo.isDir()){
- auto search = mCopyDirM->findItems(dir);
- if(search.isEmpty()){
- QStandardItem *newDir = new QStandardItem(QIcon(":/folder.png"), dir);
- mCopyDirM->insertRow(mCopyDirM->rowCount(), newDir);
- }
- }
-}
-
-void ConfigurationWidget::removeCopyDir(){
- QString dir = mDir->text();
- auto search = mCopyDirM->findItems(dir);
- if(!search.isEmpty()){
- mCopyDirM->removeRow(search.first()->row());
- }
-}
-
-void ConfigurationWidget::selectCopyDir(const QModelIndex &cur, const QModelIndex &prev){
- Q_UNUSED(prev);
- mDir->setText(cur.data().toString());
-}
-
void ConfigurationWidget::readSettings(){
QSettings s;
mDbHost->setText(s.value("dbhost").toString());
@@ -181,8 +121,5 @@ void ConfigurationWidget::readSettings(){
mFfMpeg->setText(s.value("ext/ffmpeg").toString());
mMkvInfo->setText(s.value("ext/mkvinfo").toString());
QStringList copyDirs = s.value("copydirs").toStringList();
- foreach(auto d, copyDirs){
- mDir->setText(d);
- addCopyDir();
- }
+ mCopyDirW->setDirectories(copyDirs);
}
diff --git a/configurationwidget.h b/configurationwidget.h
index df69652..9dacde9 100644
--- a/configurationwidget.h
+++ b/configurationwidget.h
@@ -5,8 +5,7 @@
class QLineEdit;
class QPushButton;
-class QListView;
-class QStandardItemModel;
+class DirSelectionWidget;
class ConfigurationWidget : public QDialog {
Q_OBJECT
@@ -20,10 +19,6 @@ class ConfigurationWidget : public QDialog {
void browseFfProbe();
void browseFfMpeg();
void browseMkvInfo();
- void browseCopyDir();
- void addCopyDir();
- void removeCopyDir();
- void selectCopyDir(const QModelIndex &cur, const QModelIndex &prev);
private:
void readSettings();
@@ -34,11 +29,9 @@ class ConfigurationWidget : public QDialog {
QLineEdit *mFfProbe;
QLineEdit *mFfMpeg;
QLineEdit *mMkvInfo;
- QLineEdit *mDir;
QPushButton *mAccept;
QPushButton *mCancel;
- QListView *mCopyDirV;
- QStandardItemModel *mCopyDirM;
+ DirSelectionWidget *mCopyDirW;
};
#endif // CONFIGURATIONWIDGET_H
diff --git a/dirselectionwidget.cpp b/dirselectionwidget.cpp
new file mode 100644
index 0000000..c23bd04
--- /dev/null
+++ b/dirselectionwidget.cpp
@@ -0,0 +1,80 @@
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QLabel>
+#include <QStandardItemModel>
+#include <QListView>
+#include <QFileDialog>
+#include <QDir>
+
+#include "dirselectionwidget.h"
+
+DirSelectionWidget::DirSelectionWidget(QWidget *parent) : QWidget(parent) {
+ QHBoxLayout *newDirL = new QHBoxLayout;
+ newDirL->addWidget(new QLabel(tr("Directory")));
+ mDir = new QLineEdit;
+ newDirL->addWidget(mDir);
+ QPushButton *browseBtn = new QPushButton(tr("Browse..."));
+ connect(browseBtn, &QPushButton::clicked, this, &DirSelectionWidget::browseDir);
+ newDirL->addWidget(browseBtn);
+ QPushButton *addBtn = new QPushButton(tr("Add"));
+ connect(addBtn, &QPushButton::clicked, this, &DirSelectionWidget::addDir);
+ QPushButton *removeBtn = new QPushButton(tr("Remove"));
+ connect(removeBtn, &QPushButton::clicked, this, &DirSelectionWidget::removeDir);
+ QHBoxLayout *addRemL = new QHBoxLayout;
+ addRemL->addStretch();
+ addRemL->addWidget(addBtn);
+ addRemL->addWidget(removeBtn);
+ mModel = new QStandardItemModel;
+ mView = new QListView;
+ mView->setModel(mModel);
+ connect(mView->selectionModel(), &QItemSelectionModel::currentChanged, [=](const QModelIndex &cur) { mDir->setText(cur.data().toString()); });
+ QVBoxLayout *newDirTabL = new QVBoxLayout;
+ newDirTabL->addLayout(newDirL);
+ newDirTabL->addLayout(addRemL);
+ newDirTabL->addWidget(mView);
+ setLayout(newDirTabL);
+}
+
+const QStringList DirSelectionWidget::directories() const {
+ QStringList retval;
+ for(int i = 0; i < mModel->rowCount(); ++i){
+ QStandardItem *item = mModel->item(i, 0);
+ retval << item->text();
+ }
+ return retval;
+}
+
+void DirSelectionWidget::setDirectories(const QStringList &dirs){
+ mModel->clear();
+ for(const QString &d : dirs){
+ QStandardItem *newDir = new QStandardItem(QIcon(":/folder.png"), d);
+ mModel->insertRow(mModel->rowCount(), newDir);
+ }
+}
+
+void DirSelectionWidget::browseDir(){
+ QString dir = QFileDialog::getExistingDirectory(this, tr("Select Directory"), QDir::homePath());
+ mDir->setText(QDir::toNativeSeparators(dir));
+}
+
+void DirSelectionWidget::addDir(){
+ QString dir = mDir->text();
+ QFileInfo dinfo(dir);
+ if(dinfo.exists() && dinfo.isDir()){
+ auto search = mModel->findItems(dir);
+ if(search.isEmpty()){
+ QStandardItem *newDir = new QStandardItem(QIcon(":/folder.png"), dir);
+ mModel->insertRow(mModel->rowCount(), newDir);
+ }
+ }
+}
+
+void DirSelectionWidget::removeDir(){
+ QString dir = mDir->text();
+ auto search = mModel->findItems(dir);
+ if(!search.isEmpty()){
+ mModel->removeRow(search.first()->row());
+ }
+}
diff --git a/dirselectionwidget.h b/dirselectionwidget.h
new file mode 100644
index 0000000..7d43326
--- /dev/null
+++ b/dirselectionwidget.h
@@ -0,0 +1,29 @@
+#ifndef DIRSELECTIONWIDGET_H
+#define DIRSELECTIONWIDGET_H
+
+#include <QWidget>
+
+class QStandardItemModel;
+class QListView;
+class QLineEdit;
+
+class DirSelectionWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ explicit DirSelectionWidget(QWidget *parent = nullptr);
+ const QStringList directories() const;
+ void setDirectories(const QStringList &dirs);
+
+ public slots:
+ void browseDir();
+ void addDir();
+ void removeDir();
+
+ private:
+ QStandardItemModel *mModel;
+ QListView *mView;
+ QLineEdit *mDir;
+};
+
+#endif // DIRSELECTIONWIDGET_H