summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-01-04 09:25:20 +0100
committerArno <arno@disconnect.de>2018-01-04 09:25:20 +0100
commit73b49673c2a5b36ee562ebf95a890b19927607ec (patch)
treed1164e0d5b84185b33438fd73b4881ba0fae3de7
parentf459b30a4ab8ac4bc5d6646795d2e391f70851d3 (diff)
downloadShemovCleaner-73b49673c2a5b36ee562ebf95a890b19927607ec.tar.gz
ShemovCleaner-73b49673c2a5b36ee562ebf95a890b19927607ec.tar.bz2
ShemovCleaner-73b49673c2a5b36ee562ebf95a890b19927607ec.zip
More renaming for new ItemSelectionWidget
Use item instead of directory in var and function names to make clear that this a general purpose widget. Introduce a mode, so we can hide the browse button if we're not selecting directories. Make the label configurable and use different icons for folders or other items.
-rw-r--r--configurationwidget.cpp12
-rw-r--r--itemselectionwidget.cpp60
-rw-r--r--itemselectionwidget.h15
3 files changed, 46 insertions, 41 deletions
diff --git a/configurationwidget.cpp b/configurationwidget.cpp
index 1c4ff95..4601cdc 100644
--- a/configurationwidget.cpp
+++ b/configurationwidget.cpp
@@ -56,10 +56,10 @@ ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : Q
extWidget->setLayout(extL);
//copy directories
- mCopyDirW = new ItemSelectionWidget;
+ mCopyDirW = new ItemSelectionWidget(ItemSelectionWidget::Directories, tr("Directory"));
//favorite directories
- mFavDirW = new ItemSelectionWidget;
+ mFavDirW = new ItemSelectionWidget(ItemSelectionWidget::Directories, tr("Directory"));
//buttons
mAccept = new QPushButton(tr("Save"));
@@ -95,9 +95,9 @@ void ConfigurationWidget::accept(){
s.setValue("ext/ffprobe", mFfProbe->text());
s.setValue("ext/ffmpeg", mFfMpeg->text());
s.setValue("ext/mkvinfo", mMkvInfo->text());
- QStringList copyDirs = mCopyDirW->directories();
+ QStringList copyDirs = mCopyDirW->items();
s.setValue("copydirs", copyDirs);
- QStringList favDirs = mFavDirW->directories();
+ QStringList favDirs = mFavDirW->items();
s.setValue("favdirs", favDirs);
QDialog::accept();
}
@@ -127,7 +127,7 @@ void ConfigurationWidget::readSettings(){
mFfMpeg->setText(s.value("ext/ffmpeg").toString());
mMkvInfo->setText(s.value("ext/mkvinfo").toString());
QStringList copyDirs = s.value("copydirs").toStringList();
- mCopyDirW->setDirectories(copyDirs);
+ mCopyDirW->setItems(copyDirs);
QStringList favDirs = s.value("favdirs").toStringList();
- mFavDirW->setDirectories(favDirs);
+ mFavDirW->setItems(favDirs);
}
diff --git a/itemselectionwidget.cpp b/itemselectionwidget.cpp
index 08377c0..8c55d34 100644
--- a/itemselectionwidget.cpp
+++ b/itemselectionwidget.cpp
@@ -10,18 +10,23 @@
#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);
+ItemSelectionWidget::ItemSelectionWidget(int mode, QString labelText, QWidget *parent) : QWidget(parent) {
+ QHBoxLayout *newItemL = new QHBoxLayout;
+ newItemL->addWidget(new QLabel(labelText));
+ mItem = new QLineEdit;
+ newItemL->addWidget(mItem);
+ if(mode == Directories){
+ QPushButton *browseBtn = new QPushButton(tr("Browse..."));
+ connect(browseBtn, &QPushButton::clicked, this, &ItemSelectionWidget::browseDir);
+ newItemL->addWidget(browseBtn);
+ mIcon = QIcon(":/folder.png");
+ }else{
+ mIcon = QIcon(":/curlybrackets.png");
+ }
QPushButton *addBtn = new QPushButton(tr("Add"));
- connect(addBtn, &QPushButton::clicked, this, &ItemSelectionWidget::addDir);
+ connect(addBtn, &QPushButton::clicked, this, &ItemSelectionWidget::addItem);
QPushButton *removeBtn = new QPushButton(tr("Remove"));
- connect(removeBtn, &QPushButton::clicked, this, &ItemSelectionWidget::removeDir);
+ connect(removeBtn, &QPushButton::clicked, this, &ItemSelectionWidget::removeItem);
QHBoxLayout *addRemL = new QHBoxLayout;
addRemL->addStretch();
addRemL->addWidget(addBtn);
@@ -29,15 +34,15 @@ ItemSelectionWidget::ItemSelectionWidget(QWidget *parent) : QWidget(parent) {
mModel = new QStandardItemModel;
mView = new QListView;
mView->setModel(mModel);
- connect(mView->selectionModel(), &QItemSelectionModel::currentChanged, [=](const QModelIndex &cur) { mDir->setText(cur.data().toString()); });
+ connect(mView->selectionModel(), &QItemSelectionModel::currentChanged, [=](const QModelIndex &cur) { mItem->setText(cur.data().toString()); });
QVBoxLayout *newDirTabL = new QVBoxLayout;
- newDirTabL->addLayout(newDirL);
+ newDirTabL->addLayout(newItemL);
newDirTabL->addLayout(addRemL);
newDirTabL->addWidget(mView);
setLayout(newDirTabL);
}
-const QStringList ItemSelectionWidget::directories() const {
+const QStringList ItemSelectionWidget::items() const {
QStringList retval;
for(int i = 0; i < mModel->rowCount(); ++i){
QStandardItem *item = mModel->item(i, 0);
@@ -46,34 +51,31 @@ const QStringList ItemSelectionWidget::directories() const {
return retval;
}
-void ItemSelectionWidget::setDirectories(const QStringList &dirs){
+void ItemSelectionWidget::setItems(const QStringList &items){
mModel->clear();
- for(const QString &d : dirs){
- QStandardItem *newDir = new QStandardItem(QIcon(":/folder.png"), d);
+ for(const QString &d : items){
+ QStandardItem *newDir = new QStandardItem(mIcon, d);
mModel->insertRow(mModel->rowCount(), newDir);
}
}
void ItemSelectionWidget::browseDir(){
QString dir = QFileDialog::getExistingDirectory(this, tr("Select Directory"), QDir::homePath());
- mDir->setText(QDir::toNativeSeparators(dir));
+ mItem->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::addItem(){
+ QString item = mItem->text();
+ QList<QStandardItem*> search = mModel->findItems(item);
+ if(search.isEmpty()){
+ QStandardItem *newDir = new QStandardItem(mIcon, item);
+ mModel->insertRow(mModel->rowCount(), newDir);
}
}
-void ItemSelectionWidget::removeDir(){
- QString dir = mDir->text();
- auto search = mModel->findItems(dir);
+void ItemSelectionWidget::removeItem(){
+ QString item = mItem->text();
+ QList<QStandardItem*> search = mModel->findItems(item);
if(!search.isEmpty()){
mModel->removeRow(search.first()->row());
}
diff --git a/itemselectionwidget.h b/itemselectionwidget.h
index 0b8b48b..f78b9d1 100644
--- a/itemselectionwidget.h
+++ b/itemselectionwidget.h
@@ -2,6 +2,7 @@
#define DIRSELECTIONWIDGET_H
#include <QWidget>
+#include <QIcon>
class QStandardItemModel;
class QListView;
@@ -11,19 +12,21 @@ class ItemSelectionWidget : public QWidget
{
Q_OBJECT
public:
- explicit ItemSelectionWidget(QWidget *parent = nullptr);
- const QStringList directories() const;
- void setDirectories(const QStringList &dirs);
+ enum Mode { Item, Directories };
+ explicit ItemSelectionWidget(int mode, QString labelText, QWidget *parent = nullptr);
+ const QStringList items() const;
+ void setItems(const QStringList &items);
public slots:
void browseDir();
- void addDir();
- void removeDir();
+ void addItem();
+ void removeItem();
private:
QStandardItemModel *mModel;
QListView *mView;
- QLineEdit *mDir;
+ QLineEdit *mItem;
+ QIcon mIcon;
};
#endif // DIRSELECTIONWIDGET_H