summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filewidget.cpp')
-rw-r--r--filewidget.cpp40
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);