diff options
Diffstat (limited to 'filewidget.cpp')
-rw-r--r-- | filewidget.cpp | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/filewidget.cpp b/filewidget.cpp index e3759ff..fc94cdb 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -79,9 +79,12 @@ void FileWidget::setupGui(){ connect(mFavDirs, QOverload<const QString &>::of(&QComboBox::activated), [=](const QString &text) { cdAbsolute(text); }); mFilter = new QLineEdit; - connect(mFilter, &QLineEdit::returnPressed, this, &FileWidget::filter); + connect(mFilter, &QLineEdit::returnPressed, [this] { filter(NameColumn, mFilter->text()); }); QPushButton *searchBtn = new QPushButton(tr("F&ilter")); - connect(searchBtn, &QPushButton::clicked, this, &FileWidget::filter); + connect(searchBtn, &QPushButton::clicked, [this] { filter(NameColumn, mFilter->text()); }); + mMimeFilters = new QComboBox; + populateMimeFilters(); + connect(mMimeFilters, QOverload<const QString &>::of(&QComboBox::activated), [this](const QString &text) { filter(MimeColumn, text); }); QGridLayout *topL = new QGridLayout; topL->addWidget(new QLabel(tr("Directory")), 0, 0); @@ -89,8 +92,9 @@ void FileWidget::setupGui(){ topL->addWidget(selDirBtn, 0, 2); topL->addWidget(mFavDirs, 0, 3); topL->addWidget(new QLabel(tr("Filter")), 1, 0); - topL->addWidget(mFilter, 1, 1, 2, 1); + topL->addWidget(mFilter, 1, 1); topL->addWidget(searchBtn, 1, 2); + topL->addWidget(mMimeFilters, 1, 3); mFileView = new QTreeView; mFileView->setSortingEnabled(true); @@ -419,17 +423,22 @@ QAction *FileWidget::createSeparator(){ return retval; } -void FileWidget::filter(){ - mProxy->setFilterRegExp(mFilter->text()); - mProxy->setFilterKeyColumn(NameColumn); +void FileWidget::filter(int column, QString regexp){ + if(column == NameColumn){ + if(regexp.isEmpty()){ + column = MimeColumn; + regexp = mMimeFilters->currentText(); + } + }else if(column == MimeColumn){ + if(regexp == "<all>"){ + regexp = QString(); + } + } + mProxy->setFilterRegExp(regexp); + mProxy->setFilterKeyColumn(column); mProxy->setFilterCaseSensitivity(Qt::CaseInsensitive); } -void FileWidget::clearFilter(){ - mFilter->clear(); - filter(); -} - void FileWidget::copy(){ mFileAction = Copy; cutOrCopy(); @@ -460,6 +469,15 @@ void FileWidget::populateFavDirs(){ mFavDirs->addItems(favDirs); } +void FileWidget::populateMimeFilters(){ + QSettings s; + QStringList mimeFilters = s.value("mimefilters").toStringList(); + mimeFilters.sort(); + mimeFilters.prepend(tr("<all>")); + mMimeFilters->clear(); + mMimeFilters->addItems(mimeFilters); +} + QList<QStandardItem*> FileWidget::constructRow(CachedFileData *fd) const{ QList<QStandardItem*> fData; QBrush redBrush(Qt::red); |