diff options
author | Arno <arno@disconnect.de> | 2016-12-02 12:39:04 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-12-02 12:39:04 +0100 |
commit | e0b8c355e5f05398174abd8e70f0694f07a9821c (patch) | |
tree | 8e62809b2d3ad8eac5e0fd12eafdef5e23463379 | |
parent | db12a715196e81863fc14ffa1be519e31aa7907a (diff) | |
download | ShemovCleaner-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.cpp | 72 | ||||
-rw-r--r-- | configurationwidget.h | 9 |
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 |