From f459b30a4ab8ac4bc5d6646795d2e391f70851d3 Mon Sep 17 00:00:00 2001 From: Arno Date: Thu, 4 Jan 2018 09:04:48 +0100 Subject: Rename dirselectionwidget > itemselectionwidget It's much more general purpose than I thought. I'm gonna reuse the code for MIME-type filters later on. --- ShemovCleaner.pro | 4 +-- configurationwidget.cpp | 6 ++-- configurationwidget.h | 6 ++-- dirselectionwidget.cpp | 80 ------------------------------------------------- dirselectionwidget.h | 29 ------------------ itemselectionwidget.cpp | 80 +++++++++++++++++++++++++++++++++++++++++++++++++ itemselectionwidget.h | 29 ++++++++++++++++++ 7 files changed, 117 insertions(+), 117 deletions(-) delete mode 100644 dirselectionwidget.cpp delete mode 100644 dirselectionwidget.h create mode 100644 itemselectionwidget.cpp create mode 100644 itemselectionwidget.h diff --git a/ShemovCleaner.pro b/ShemovCleaner.pro index f3f298b..bffc1bd 100644 --- a/ShemovCleaner.pro +++ b/ShemovCleaner.pro @@ -37,7 +37,7 @@ HEADERS += actorwidget.h \ torrentwidget.h \ viewer.h \ cachedfiledata.h \ - dirselectionwidget.h + itemselectionwidget.h SOURCES += actorwidget.cpp \ configurationwidget.cpp \ filecopier.cpp \ @@ -56,5 +56,5 @@ SOURCES += actorwidget.cpp \ torrentwidget.cpp \ viewer.cpp \ cachedfiledata.cpp \ - dirselectionwidget.cpp + itemselectionwidget.cpp RESOURCES += shemovcleaner.qrc diff --git a/configurationwidget.cpp b/configurationwidget.cpp index 5aea6d7..1c4ff95 100644 --- a/configurationwidget.cpp +++ b/configurationwidget.cpp @@ -9,7 +9,7 @@ #include #include "configurationwidget.h" -#include "dirselectionwidget.h" +#include "itemselectionwidget.h" ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) { //database setup @@ -56,10 +56,10 @@ ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : Q extWidget->setLayout(extL); //copy directories - mCopyDirW = new DirSelectionWidget; + mCopyDirW = new ItemSelectionWidget; //favorite directories - mFavDirW = new DirSelectionWidget; + mFavDirW = new ItemSelectionWidget; //buttons mAccept = new QPushButton(tr("Save")); diff --git a/configurationwidget.h b/configurationwidget.h index d268f84..37118b4 100644 --- a/configurationwidget.h +++ b/configurationwidget.h @@ -5,7 +5,7 @@ class QLineEdit; class QPushButton; -class DirSelectionWidget; +class ItemSelectionWidget; class ConfigurationWidget : public QDialog { Q_OBJECT @@ -31,8 +31,8 @@ class ConfigurationWidget : public QDialog { QLineEdit *mMkvInfo; QPushButton *mAccept; QPushButton *mCancel; - DirSelectionWidget *mCopyDirW; - DirSelectionWidget *mFavDirW; + ItemSelectionWidget *mCopyDirW; + ItemSelectionWidget *mFavDirW; }; #endif // CONFIGURATIONWIDGET_H diff --git a/dirselectionwidget.cpp b/dirselectionwidget.cpp deleted file mode 100644 index c23bd04..0000000 --- a/dirselectionwidget.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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 deleted file mode 100644 index 7d43326..0000000 --- a/dirselectionwidget.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef DIRSELECTIONWIDGET_H -#define DIRSELECTIONWIDGET_H - -#include - -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 diff --git a/itemselectionwidget.cpp b/itemselectionwidget.cpp new file mode 100644 index 0000000..08377c0 --- /dev/null +++ b/itemselectionwidget.cpp @@ -0,0 +1,80 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "itemselectionwidget.h" + +ItemSelectionWidget::ItemSelectionWidget(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, &ItemSelectionWidget::browseDir); + newDirL->addWidget(browseBtn); + QPushButton *addBtn = new QPushButton(tr("Add")); + connect(addBtn, &QPushButton::clicked, this, &ItemSelectionWidget::addDir); + QPushButton *removeBtn = new QPushButton(tr("Remove")); + connect(removeBtn, &QPushButton::clicked, this, &ItemSelectionWidget::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 ItemSelectionWidget::directories() const { + QStringList retval; + for(int i = 0; i < mModel->rowCount(); ++i){ + QStandardItem *item = mModel->item(i, 0); + retval << item->text(); + } + return retval; +} + +void ItemSelectionWidget::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 ItemSelectionWidget::browseDir(){ + QString dir = QFileDialog::getExistingDirectory(this, tr("Select Directory"), QDir::homePath()); + mDir->setText(QDir::toNativeSeparators(dir)); +} + +void ItemSelectionWidget::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 ItemSelectionWidget::removeDir(){ + QString dir = mDir->text(); + auto search = mModel->findItems(dir); + if(!search.isEmpty()){ + mModel->removeRow(search.first()->row()); + } +} diff --git a/itemselectionwidget.h b/itemselectionwidget.h new file mode 100644 index 0000000..0b8b48b --- /dev/null +++ b/itemselectionwidget.h @@ -0,0 +1,29 @@ +#ifndef DIRSELECTIONWIDGET_H +#define DIRSELECTIONWIDGET_H + +#include + +class QStandardItemModel; +class QListView; +class QLineEdit; + +class ItemSelectionWidget : public QWidget +{ + Q_OBJECT + public: + explicit ItemSelectionWidget(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 -- cgit v1.2.3-70-g09d2