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 "miscellaneous/application.h"
|
||||
#include "miscellaneous/iconfactory.h"
|
||||
#include "miscellaneous/settings.h"
|
||||
|
||||
#include <QActionGroup>
|
||||
#include <QTimer>
|
||||
#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);
|
||||
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->setCheckable(true);
|
||||
m_actCaseSensitivity->setChecked(save_sens == Qt::CaseSensitivity::CaseSensitive);
|
||||
|
||||
m_menu->addSeparator();
|
||||
|
||||
|
@ -47,9 +61,10 @@ SearchLineEdit::SearchLineEdit(const QList<CustomSearchChoice>& choices, QWidget
|
|||
|
||||
ac->setCheckable(true);
|
||||
ac->setData(int(mode));
|
||||
ac->setChecked(mode == save_mode);
|
||||
}
|
||||
|
||||
m_actionGroupModes->actions().first()->setChecked(true);
|
||||
// m_actionGroupModes->actions().first()->setChecked(true);
|
||||
|
||||
if (!choices.isEmpty()) {
|
||||
m_menu->addSeparator();
|
||||
|
@ -60,9 +75,10 @@ SearchLineEdit::SearchLineEdit(const QList<CustomSearchChoice>& choices, QWidget
|
|||
|
||||
ac->setCheckable(true);
|
||||
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
|
||||
|
@ -70,6 +86,7 @@ SearchLineEdit::SearchLineEdit(const QList<CustomSearchChoice>& choices, QWidget
|
|||
connect(this, &SearchLineEdit::textChanged, 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(this, &SearchLineEdit::searchCriteriaChanged, this, &SearchLineEdit::saveSearchConfig);
|
||||
}
|
||||
|
||||
void SearchLineEdit::startSearch() {
|
||||
|
@ -95,6 +112,17 @@ void SearchLineEdit::startSearch() {
|
|||
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) {
|
||||
switch (mode) {
|
||||
case SearchLineEdit::SearchMode::FixedString:
|
||||
|
|
|
@ -25,10 +25,13 @@ class SearchLineEdit : public BaseLineEdit {
|
|||
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:
|
||||
void startSearch();
|
||||
void saveSearchConfig(SearchMode mode, Qt::CaseSensitivity sensitivity, int custom_criteria, const QString& phrase);
|
||||
|
||||
signals:
|
||||
void searchCriteriaChanged(SearchMode mode,
|
||||
|
@ -40,6 +43,7 @@ class SearchLineEdit : public BaseLineEdit {
|
|||
QString titleForMode(SearchMode mode);
|
||||
|
||||
private:
|
||||
QString m_saveIdentification;
|
||||
QTimer* m_tmrSearchPattern;
|
||||
QMenu* m_menu;
|
||||
QAction* m_actCaseSensitivity;
|
||||
|
|
|
@ -117,7 +117,8 @@ QStringList FeedsToolBar::savedActions() const {
|
|||
|
||||
void FeedsToolBar::initializeSearchBox() {
|
||||
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))},
|
||||
this);
|
||||
m_txtSearchMessages->setSizePolicy(QSizePolicy::Policy::Expanding,
|
||||
|
|
|
@ -217,7 +217,8 @@ void MessagesToolBar::handleMessageFilterChange(QAction* action) {
|
|||
|
||||
void MessagesToolBar::initializeSearchBox() {
|
||||
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))},
|
||||
this);
|
||||
m_txtSearchMessages->setSizePolicy(QSizePolicy::Policy::Expanding,
|
||||
|
|
Loading…
Add table
Reference in a new issue