summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-12-02 12:39:04 +0100
committerArno <arno@disconnect.de>2016-12-02 12:39:04 +0100
commite0b8c355e5f05398174abd8e70f0694f07a9821c (patch)
tree8e62809b2d3ad8eac5e0fd12eafdef5e23463379
parentdb12a715196e81863fc14ffa1be519e31aa7907a (diff)
downloadShemovCleaner-e0b8c355e5f05398174abd8e70f0694f07a9821c.tar.gz
ShemovCleaner-e0b8c355e5f05398174abd8e70f0694f07a9821c.tar.bz2
ShemovCleaner-e0b8c355e5f05398174abd8e70f0694f07a9821c.zip
Add configuration option for copy dirs
Copy dirs are destination directories for copy operations. They will be used later on to copy files or to check if a file has already been copied.
-rw-r--r--configurationwidget.cpp72
-rw-r--r--configurationwidget.h9
2 files changed, 81 insertions, 0 deletions
diff --git a/configurationwidget.cpp b/configurationwidget.cpp
index c757bc5..b68a069 100644
--- a/configurationwidget.cpp
+++ b/configurationwidget.cpp
@@ -7,6 +7,9 @@
#include <QVBoxLayout>
#include <QLineEdit>
#include <QFileDialog>
+#include <QStandardItemModel>
+#include <QListView>
+#include <QItemSelectionModel>
#include "configurationwidget.h"
@@ -54,6 +57,33 @@ ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : Q
QWidget *extWidget = new QWidget;
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);
+
//buttons
mAccept = new QPushButton(tr("Save"));
connect(mAccept, SIGNAL(clicked()), this, SLOT(accept()));
@@ -70,6 +100,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"));
mainLayout->addWidget(tab);
mainLayout->addLayout(bLayout);
readSettings();
@@ -86,6 +117,12 @@ 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();
+ }
+ s.setValue("copydirs", copyDirs);
QDialog::accept();
}
@@ -104,6 +141,36 @@ 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());
@@ -113,4 +180,9 @@ void ConfigurationWidget::readSettings(){
mFfProbe->setText(s.value("ext/ffprobe").toString());
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();
+ }
}
diff --git a/configurationwidget.h b/configurationwidget.h
index 53fb230..df69652 100644
--- a/configurationwidget.h
+++ b/configurationwidget.h
@@ -5,6 +5,8 @@
class QLineEdit;
class QPushButton;
+class QListView;
+class QStandardItemModel;
class ConfigurationWidget : public QDialog {
Q_OBJECT
@@ -18,6 +20,10 @@ 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();
@@ -28,8 +34,11 @@ class ConfigurationWidget : public QDialog {
QLineEdit *mFfProbe;
QLineEdit *mFfMpeg;
QLineEdit *mMkvInfo;
+ QLineEdit *mDir;
QPushButton *mAccept;
QPushButton *mCancel;
+ QListView *mCopyDirV;
+ QStandardItemModel *mCopyDirM;
};
#endif // CONFIGURATIONWIDGET_H