diff options
author | Arno <arno@disconnect.de> | 2018-01-04 09:25:20 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-01-04 09:25:20 +0100 |
commit | 73b49673c2a5b36ee562ebf95a890b19927607ec (patch) | |
tree | d1164e0d5b84185b33438fd73b4881ba0fae3de7 /itemselectionwidget.cpp | |
parent | f459b30a4ab8ac4bc5d6646795d2e391f70851d3 (diff) | |
download | ShemovCleaner-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.
Diffstat (limited to 'itemselectionwidget.cpp')
-rw-r--r-- | itemselectionwidget.cpp | 60 |
1 files changed, 31 insertions, 29 deletions
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()); } |