From df9aa6dc367b6d65b4f4977a75a794a385843c3d Mon Sep 17 00:00:00 2001 From: thalieht Date: Sun, 25 Feb 2018 20:07:37 +0200 Subject: [PATCH] Add a name filter for search results Closes #8226 --- src/gui/search/searchjobwidget.cpp | 14 ++++++++++++++ src/gui/search/searchjobwidget.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/src/gui/search/searchjobwidget.cpp b/src/gui/search/searchjobwidget.cpp index 20385f0f2..9d140001c 100644 --- a/src/gui/search/searchjobwidget.cpp +++ b/src/gui/search/searchjobwidget.cpp @@ -49,9 +49,11 @@ #include "base/utils/misc.h" #include "addnewtorrentdialog.h" #include "guiiconprovider.h" +#include "lineedit.h" #include "searchlistdelegate.h" #include "searchsortmodel.h" #include "ui_searchjobwidget.h" +#include "utils.h" SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, QWidget *parent) : QWidget(parent) @@ -126,6 +128,12 @@ SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, QWidget *parent) updateFilter(); + m_lineEditSearchResultsFilter = new LineEdit(this); + m_lineEditSearchResultsFilter->setFixedWidth(Utils::Gui::scaledSize(this, 170)); + m_lineEditSearchResultsFilter->setPlaceholderText(tr("Filter search results...")); + m_ui->horizontalLayout->insertWidget(0, m_lineEditSearchResultsFilter); + + connect(m_lineEditSearchResultsFilter, &LineEdit::textChanged, this, &SearchJobWidget::filterSearchResults); connect(m_ui->filterMode, static_cast(&QComboBox::currentIndexChanged) , this, &SearchJobWidget::updateFilter); connect(m_ui->minSeeds, &QAbstractSpinBox::editingFinished, this, &SearchJobWidget::updateFilter); @@ -327,6 +335,12 @@ void SearchJobWidget::fillFilterComboBoxes() m_ui->filterMode->setCurrentIndex((index == -1) ? 0 : index); } +void SearchJobWidget::filterSearchResults(const QString &name) +{ + m_proxyModel->setFilterRegExp(QRegExp(name, Qt::CaseInsensitive)); + updateResultsCount(); +} + QString SearchJobWidget::statusText(SearchJobWidget::Status st) { switch (st) { diff --git a/src/gui/search/searchjobwidget.h b/src/gui/search/searchjobwidget.h index 6a9cc12b3..3b2409189 100644 --- a/src/gui/search/searchjobwidget.h +++ b/src/gui/search/searchjobwidget.h @@ -41,6 +41,7 @@ class QStandardItemModel; template class CachedSettingValue; +class LineEdit; class SearchHandler; class SearchListDelegate; class SearchSortModel; @@ -93,6 +94,7 @@ private: void loadSettings(); void saveSettings() const; void updateFilter(); + void filterSearchResults(const QString &name); void displayToggleColumnsMenu(const QPoint&); void onItemDoubleClicked(const QModelIndex &index); void searchFinished(bool cancelled); @@ -115,6 +117,7 @@ private: QStandardItemModel *m_searchListModel; SearchSortModel *m_proxyModel; SearchListDelegate *m_searchDelegate; + LineEdit *m_lineEditSearchResultsFilter; Status m_status = Status::Ongoing; bool m_noSearchResults = true; };