Browse Source

Add regex option in the search filter's context menu

In the search job widget.
adaptive-webui-19844
thalieht 6 years ago
parent
commit
4dcb0b922e
  1. 10
      src/base/preferences.cpp
  2. 2
      src/base/preferences.h
  3. 23
      src/gui/search/searchjobwidget.cpp
  4. 1
      src/gui/search/searchjobwidget.h

10
src/base/preferences.cpp

@ -1429,6 +1429,16 @@ void Preferences::setSearchTabHeaderState(const QByteArray &state)
setValue("SearchTab/qt5/HeaderState", state); setValue("SearchTab/qt5/HeaderState", state);
} }
bool Preferences::getRegexAsFilteringPatternForSearchJob() const
{
return value("SearchTab/UseRegexAsFilteringPattern", false).toBool();
}
void Preferences::setRegexAsFilteringPatternForSearchJob(const bool checked)
{
setValue("SearchTab/UseRegexAsFilteringPattern", checked);
}
QStringList Preferences::getSearchEngDisabled() const QStringList Preferences::getSearchEngDisabled() const
{ {
return value("SearchEngines/disabledEngines").toStringList(); return value("SearchEngines/disabledEngines").toStringList();

2
src/base/preferences.h

@ -342,6 +342,8 @@ public:
void setRssMainSplitterState(const QByteArray &state); void setRssMainSplitterState(const QByteArray &state);
QByteArray getSearchTabHeaderState() const; QByteArray getSearchTabHeaderState() const;
void setSearchTabHeaderState(const QByteArray &state); void setSearchTabHeaderState(const QByteArray &state);
bool getRegexAsFilteringPatternForSearchJob() const;
void setRegexAsFilteringPatternForSearchJob(bool checked);
QStringList getSearchEngDisabled() const; QStringList getSearchEngDisabled() const;
void setSearchEngDisabled(const QStringList &engines); void setSearchEngDisabled(const QStringList &engines);
QString getTorImportLastContentDir() const; QString getTorImportLastContentDir() const;

23
src/gui/search/searchjobwidget.cpp

@ -131,6 +131,8 @@ SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, QWidget *parent)
m_lineEditSearchResultsFilter = new LineEdit(this); m_lineEditSearchResultsFilter = new LineEdit(this);
m_lineEditSearchResultsFilter->setFixedWidth(Utils::Gui::scaledSize(this, 170)); m_lineEditSearchResultsFilter->setFixedWidth(Utils::Gui::scaledSize(this, 170));
m_lineEditSearchResultsFilter->setPlaceholderText(tr("Filter search results...")); m_lineEditSearchResultsFilter->setPlaceholderText(tr("Filter search results..."));
m_lineEditSearchResultsFilter->setContextMenuPolicy(Qt::CustomContextMenu);
connect(m_lineEditSearchResultsFilter, &QWidget::customContextMenuRequested, this, &SearchJobWidget::showFilterContextMenu);
m_ui->horizontalLayout->insertWidget(0, m_lineEditSearchResultsFilter); m_ui->horizontalLayout->insertWidget(0, m_lineEditSearchResultsFilter);
connect(m_lineEditSearchResultsFilter, &LineEdit::textChanged, this, &SearchJobWidget::filterSearchResults); connect(m_lineEditSearchResultsFilter, &LineEdit::textChanged, this, &SearchJobWidget::filterSearchResults);
@ -342,10 +344,29 @@ void SearchJobWidget::fillFilterComboBoxes()
void SearchJobWidget::filterSearchResults(const QString &name) void SearchJobWidget::filterSearchResults(const QString &name)
{ {
m_proxyModel->setFilterRegExp(QRegExp(name, Qt::CaseInsensitive)); const QRegExp::PatternSyntax patternSyntax = Preferences::instance()->getRegexAsFilteringPatternForSearchJob()
? QRegExp::RegExp : QRegExp::WildcardUnix;
m_proxyModel->setFilterRegExp(QRegExp(name, Qt::CaseInsensitive, patternSyntax));
updateResultsCount(); updateResultsCount();
} }
void SearchJobWidget::showFilterContextMenu(const QPoint &)
{
const Preferences *pref = Preferences::instance();
QMenu *menu = m_lineEditSearchResultsFilter->createStandardContextMenu();
menu->addSeparator();
QAction *useRegexAct = new QAction(tr("Use regular expressions"), menu);
useRegexAct->setCheckable(true);
useRegexAct->setChecked(pref->getRegexAsFilteringPatternForSearchJob());
menu->addAction(useRegexAct);
connect(useRegexAct, &QAction::toggled, pref, &Preferences::setRegexAsFilteringPatternForSearchJob);
connect(useRegexAct, &QAction::toggled, this, [this]() { filterSearchResults(m_lineEditSearchResultsFilter->text()); });
menu->exec(QCursor::pos());
}
QString SearchJobWidget::statusText(SearchJobWidget::Status st) QString SearchJobWidget::statusText(SearchJobWidget::Status st)
{ {
switch (st) { switch (st) {

1
src/gui/search/searchjobwidget.h

@ -96,6 +96,7 @@ private:
void saveSettings() const; void saveSettings() const;
void updateFilter(); void updateFilter();
void filterSearchResults(const QString &name); void filterSearchResults(const QString &name);
void showFilterContextMenu(const QPoint &);
void displayToggleColumnsMenu(const QPoint&); void displayToggleColumnsMenu(const QPoint&);
void onItemDoubleClicked(const QModelIndex &index); void onItemDoubleClicked(const QModelIndex &index);
void searchFinished(bool cancelled); void searchFinished(bool cancelled);

Loading…
Cancel
Save