fixed #1590
This commit is contained in:
parent
1ad746fdd6
commit
7c0ca64196
4 changed files with 40 additions and 6 deletions
|
@ -6,12 +6,25 @@
|
||||||
#include "gui/reusable/plaintoolbutton.h"
|
#include "gui/reusable/plaintoolbutton.h"
|
||||||
#include "miscellaneous/application.h"
|
#include "miscellaneous/application.h"
|
||||||
#include "miscellaneous/iconfactory.h"
|
#include "miscellaneous/iconfactory.h"
|
||||||
|
#include "miscellaneous/settings.h"
|
||||||
|
|
||||||
#include <QActionGroup>
|
#include <QActionGroup>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QWidgetAction>
|
#include <QWidgetAction>
|
||||||
|
|
||||||
SearchLineEdit::SearchLineEdit(const QList<CustomSearchChoice>& choices, QWidget* parent) : BaseLineEdit(parent) {
|
SearchLineEdit::SearchLineEdit(const QString& save_identification,
|
||||||
|
const QList<CustomSearchChoice>& choices,
|
||||||
|
QWidget* parent)
|
||||||
|
: BaseLineEdit(parent), m_saveIdentification(save_identification) {
|
||||||
|
Qt::CaseSensitivity save_sens = Qt::CaseSensitivity(qApp->settings()
|
||||||
|
->value(m_saveIdentification,
|
||||||
|
QSL("case_sensitivity"),
|
||||||
|
int(Qt::CaseSensitivity::CaseInsensitive))
|
||||||
|
.toInt());
|
||||||
|
SearchMode save_mode =
|
||||||
|
SearchMode(qApp->settings()->value(m_saveIdentification, QSL("search_mode"), int(SearchMode::FixedString)).toInt());
|
||||||
|
int save_custom_choice = qApp->settings()->value(m_saveIdentification, QSL("criteria"), choices.at(0).m_data).toInt();
|
||||||
|
|
||||||
QWidgetAction* act = new QWidgetAction(this);
|
QWidgetAction* act = new QWidgetAction(this);
|
||||||
PlainToolButton* btn = new PlainToolButton(this);
|
PlainToolButton* btn = new PlainToolButton(this);
|
||||||
|
|
||||||
|
@ -29,6 +42,7 @@ SearchLineEdit::SearchLineEdit(const QList<CustomSearchChoice>& choices, QWidget
|
||||||
|
|
||||||
m_actCaseSensitivity = m_menu->addAction(tr("Case-sensitive"));
|
m_actCaseSensitivity = m_menu->addAction(tr("Case-sensitive"));
|
||||||
m_actCaseSensitivity->setCheckable(true);
|
m_actCaseSensitivity->setCheckable(true);
|
||||||
|
m_actCaseSensitivity->setChecked(save_sens == Qt::CaseSensitivity::CaseSensitive);
|
||||||
|
|
||||||
m_menu->addSeparator();
|
m_menu->addSeparator();
|
||||||
|
|
||||||
|
@ -47,9 +61,10 @@ SearchLineEdit::SearchLineEdit(const QList<CustomSearchChoice>& choices, QWidget
|
||||||
|
|
||||||
ac->setCheckable(true);
|
ac->setCheckable(true);
|
||||||
ac->setData(int(mode));
|
ac->setData(int(mode));
|
||||||
|
ac->setChecked(mode == save_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_actionGroupModes->actions().first()->setChecked(true);
|
// m_actionGroupModes->actions().first()->setChecked(true);
|
||||||
|
|
||||||
if (!choices.isEmpty()) {
|
if (!choices.isEmpty()) {
|
||||||
m_menu->addSeparator();
|
m_menu->addSeparator();
|
||||||
|
@ -60,9 +75,10 @@ SearchLineEdit::SearchLineEdit(const QList<CustomSearchChoice>& choices, QWidget
|
||||||
|
|
||||||
ac->setCheckable(true);
|
ac->setCheckable(true);
|
||||||
ac->setData(choice.m_data);
|
ac->setData(choice.m_data);
|
||||||
|
ac->setChecked(choice.m_data == save_custom_choice);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_actionGroupChoices->actions().first()->setChecked(true);
|
// m_actionGroupChoices->actions().first()->setChecked(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: When any change is made, (re)start the timer which fires
|
// NOTE: When any change is made, (re)start the timer which fires
|
||||||
|
@ -70,6 +86,7 @@ SearchLineEdit::SearchLineEdit(const QList<CustomSearchChoice>& choices, QWidget
|
||||||
connect(this, &SearchLineEdit::textChanged, m_tmrSearchPattern, QOverload<>::of(&QTimer::start));
|
connect(this, &SearchLineEdit::textChanged, m_tmrSearchPattern, QOverload<>::of(&QTimer::start));
|
||||||
connect(m_menu, &QMenu::triggered, m_tmrSearchPattern, QOverload<>::of(&QTimer::start));
|
connect(m_menu, &QMenu::triggered, m_tmrSearchPattern, QOverload<>::of(&QTimer::start));
|
||||||
connect(m_tmrSearchPattern, &QTimer::timeout, this, &SearchLineEdit::startSearch);
|
connect(m_tmrSearchPattern, &QTimer::timeout, this, &SearchLineEdit::startSearch);
|
||||||
|
connect(this, &SearchLineEdit::searchCriteriaChanged, this, &SearchLineEdit::saveSearchConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SearchLineEdit::startSearch() {
|
void SearchLineEdit::startSearch() {
|
||||||
|
@ -95,6 +112,17 @@ void SearchLineEdit::startSearch() {
|
||||||
text());
|
text());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SearchLineEdit::saveSearchConfig(SearchMode mode,
|
||||||
|
Qt::CaseSensitivity sensitivity,
|
||||||
|
int custom_criteria,
|
||||||
|
const QString& phrase) {
|
||||||
|
Q_UNUSED(phrase)
|
||||||
|
|
||||||
|
qApp->settings()->setValue(m_saveIdentification, QSL("case_sensitivity"), int(sensitivity));
|
||||||
|
qApp->settings()->setValue(m_saveIdentification, QSL("search_mode"), int(mode));
|
||||||
|
qApp->settings()->setValue(m_saveIdentification, QSL("criteria"), custom_criteria);
|
||||||
|
}
|
||||||
|
|
||||||
QString SearchLineEdit::titleForMode(SearchMode mode) {
|
QString SearchLineEdit::titleForMode(SearchMode mode) {
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case SearchLineEdit::SearchMode::FixedString:
|
case SearchLineEdit::SearchMode::FixedString:
|
||||||
|
|
|
@ -25,10 +25,13 @@ class SearchLineEdit : public BaseLineEdit {
|
||||||
RegularExpression = 4
|
RegularExpression = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit SearchLineEdit(const QList<CustomSearchChoice>& choices, QWidget* parent = nullptr);
|
explicit SearchLineEdit(const QString& save_identification,
|
||||||
|
const QList<CustomSearchChoice>& choices,
|
||||||
|
QWidget* parent = nullptr);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void startSearch();
|
void startSearch();
|
||||||
|
void saveSearchConfig(SearchMode mode, Qt::CaseSensitivity sensitivity, int custom_criteria, const QString& phrase);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void searchCriteriaChanged(SearchMode mode,
|
void searchCriteriaChanged(SearchMode mode,
|
||||||
|
@ -40,6 +43,7 @@ class SearchLineEdit : public BaseLineEdit {
|
||||||
QString titleForMode(SearchMode mode);
|
QString titleForMode(SearchMode mode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QString m_saveIdentification;
|
||||||
QTimer* m_tmrSearchPattern;
|
QTimer* m_tmrSearchPattern;
|
||||||
QMenu* m_menu;
|
QMenu* m_menu;
|
||||||
QAction* m_actCaseSensitivity;
|
QAction* m_actCaseSensitivity;
|
||||||
|
|
|
@ -117,7 +117,8 @@ QStringList FeedsToolBar::savedActions() const {
|
||||||
|
|
||||||
void FeedsToolBar::initializeSearchBox() {
|
void FeedsToolBar::initializeSearchBox() {
|
||||||
m_txtSearchMessages =
|
m_txtSearchMessages =
|
||||||
new SearchLineEdit({SearchLineEdit::CustomSearchChoice(tr("Everywhere"), int(SearchFields::SearchAll)),
|
new SearchLineEdit(QSL("feed_list_searcher"),
|
||||||
|
{SearchLineEdit::CustomSearchChoice(tr("Everywhere"), int(SearchFields::SearchAll)),
|
||||||
SearchLineEdit::CustomSearchChoice(tr("Titles only"), int(SearchFields::SearchTitleOnly))},
|
SearchLineEdit::CustomSearchChoice(tr("Titles only"), int(SearchFields::SearchTitleOnly))},
|
||||||
this);
|
this);
|
||||||
m_txtSearchMessages->setSizePolicy(QSizePolicy::Policy::Expanding,
|
m_txtSearchMessages->setSizePolicy(QSizePolicy::Policy::Expanding,
|
||||||
|
|
|
@ -217,7 +217,8 @@ void MessagesToolBar::handleMessageFilterChange(QAction* action) {
|
||||||
|
|
||||||
void MessagesToolBar::initializeSearchBox() {
|
void MessagesToolBar::initializeSearchBox() {
|
||||||
m_txtSearchMessages =
|
m_txtSearchMessages =
|
||||||
new SearchLineEdit({SearchLineEdit::CustomSearchChoice(tr("Everywhere"), int(SearchFields::SearchAll)),
|
new SearchLineEdit(QSL("article_list_searcher"),
|
||||||
|
{SearchLineEdit::CustomSearchChoice(tr("Everywhere"), int(SearchFields::SearchAll)),
|
||||||
SearchLineEdit::CustomSearchChoice(tr("Titles only"), int(SearchFields::SearchTitleOnly))},
|
SearchLineEdit::CustomSearchChoice(tr("Titles only"), int(SearchFields::SearchTitleOnly))},
|
||||||
this);
|
this);
|
||||||
m_txtSearchMessages->setSizePolicy(QSizePolicy::Policy::Expanding,
|
m_txtSearchMessages->setSizePolicy(QSizePolicy::Policy::Expanding,
|
||||||
|
|
Loading…
Add table
Reference in a new issue