diff --git a/src/librssguard/gui/reusable/searchlineedit.cpp b/src/librssguard/gui/reusable/searchlineedit.cpp index 5ffcb7851..d5a51b111 100644 --- a/src/librssguard/gui/reusable/searchlineedit.cpp +++ b/src/librssguard/gui/reusable/searchlineedit.cpp @@ -6,12 +6,25 @@ #include "gui/reusable/plaintoolbutton.h" #include "miscellaneous/application.h" #include "miscellaneous/iconfactory.h" +#include "miscellaneous/settings.h" #include #include #include -SearchLineEdit::SearchLineEdit(const QList& choices, QWidget* parent) : BaseLineEdit(parent) { +SearchLineEdit::SearchLineEdit(const QString& save_identification, + const QList& 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& 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& 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& 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& 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: diff --git a/src/librssguard/gui/reusable/searchlineedit.h b/src/librssguard/gui/reusable/searchlineedit.h index 96b82b733..366986280 100644 --- a/src/librssguard/gui/reusable/searchlineedit.h +++ b/src/librssguard/gui/reusable/searchlineedit.h @@ -25,10 +25,13 @@ class SearchLineEdit : public BaseLineEdit { RegularExpression = 4 }; - explicit SearchLineEdit(const QList& choices, QWidget* parent = nullptr); + explicit SearchLineEdit(const QString& save_identification, + const QList& 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; diff --git a/src/librssguard/gui/toolbars/feedstoolbar.cpp b/src/librssguard/gui/toolbars/feedstoolbar.cpp index a005291cd..7b2c98cc2 100644 --- a/src/librssguard/gui/toolbars/feedstoolbar.cpp +++ b/src/librssguard/gui/toolbars/feedstoolbar.cpp @@ -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, diff --git a/src/librssguard/gui/toolbars/messagestoolbar.cpp b/src/librssguard/gui/toolbars/messagestoolbar.cpp index f20907058..075fbda1c 100644 --- a/src/librssguard/gui/toolbars/messagestoolbar.cpp +++ b/src/librssguard/gui/toolbars/messagestoolbar.cpp @@ -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,