filtering of messages is run with delay to avoid repeated filtering
This commit is contained in:
parent
5c5a5b004c
commit
91356bcaec
|
@ -659,6 +659,10 @@ void MessagesView::selectNextUnreadItem() {
|
|||
}
|
||||
|
||||
void MessagesView::searchMessages(const QString& pattern) {
|
||||
qDebugNN << LOGSEC_GUI
|
||||
<< "Running search of messages with pattern"
|
||||
<< QUOTE_W_SPACE_DOT(pattern);
|
||||
|
||||
#if QT_VERSION < 0x050C00 // Qt < 5.12.0
|
||||
m_proxyModel->setFilterRegExp(pattern.toLower());
|
||||
#else
|
||||
|
|
|
@ -7,10 +7,14 @@
|
|||
#include "miscellaneous/iconfactory.h"
|
||||
#include "miscellaneous/settings.h"
|
||||
|
||||
#include <chrono>
|
||||
#include <QMenu>
|
||||
#include <QTimer>
|
||||
#include <QToolButton>
|
||||
#include <QWidgetAction>
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
MessagesToolBar::MessagesToolBar(const QString& title, QWidget* parent) : BaseToolBar(title, parent) {
|
||||
initializeSearchBox();
|
||||
initializeHighlighter();
|
||||
|
@ -101,6 +105,9 @@ void MessagesToolBar::handleMessageHighlighterChange(QAction* action) {
|
|||
}
|
||||
|
||||
void MessagesToolBar::initializeSearchBox() {
|
||||
m_tmrSearchPattern = new QTimer(this);
|
||||
m_tmrSearchPattern->setSingleShot(true);
|
||||
|
||||
m_txtSearchMessages = new BaseLineEdit(this);
|
||||
m_txtSearchMessages->setSizePolicy(QSizePolicy::Policy::Expanding, m_txtSearchMessages->sizePolicy().verticalPolicy());
|
||||
m_txtSearchMessages->setPlaceholderText(tr("Search articles"));
|
||||
|
@ -112,7 +119,10 @@ void MessagesToolBar::initializeSearchBox() {
|
|||
m_actionSearchMessages->setProperty("type", SEARCH_BOX_ACTION_NAME);
|
||||
m_actionSearchMessages->setProperty("name", tr("Article search box"));
|
||||
|
||||
connect(m_txtSearchMessages, &BaseLineEdit::textChanged, this, &MessagesToolBar::messageSearchPatternChanged);
|
||||
connect(m_txtSearchMessages, &BaseLineEdit::textChanged, this, &MessagesToolBar::onSearchPatternChanged);
|
||||
connect(m_tmrSearchPattern, &QTimer::timeout, this, [this]() {
|
||||
emit messageSearchPatternChanged(m_searchPattern);
|
||||
});
|
||||
}
|
||||
|
||||
void MessagesToolBar::initializeHighlighter() {
|
||||
|
@ -155,3 +165,8 @@ QStringList MessagesToolBar::savedActions() const {
|
|||
QString::SplitBehavior::SkipEmptyParts);
|
||||
#endif
|
||||
}
|
||||
|
||||
void MessagesToolBar::onSearchPatternChanged(const QString& search_pattern) {
|
||||
m_searchPattern = search_pattern;
|
||||
m_tmrSearchPattern->start(700ms);
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ class BaseLineEdit;
|
|||
class QWidgetAction;
|
||||
class QToolButton;
|
||||
class QMenu;
|
||||
class QTimer;
|
||||
|
||||
class MessagesToolBar : public BaseToolBar {
|
||||
Q_OBJECT
|
||||
|
@ -31,6 +32,7 @@ class MessagesToolBar : public BaseToolBar {
|
|||
void messageFilterChanged(MessagesModel::MessageHighlighter filter);
|
||||
|
||||
private slots:
|
||||
void onSearchPatternChanged(const QString& search_pattern);
|
||||
void handleMessageHighlighterChange(QAction* action);
|
||||
|
||||
private:
|
||||
|
@ -43,6 +45,8 @@ class MessagesToolBar : public BaseToolBar {
|
|||
QMenu* m_menuMessageHighlighter;
|
||||
QWidgetAction* m_actionSearchMessages;
|
||||
BaseLineEdit* m_txtSearchMessages;
|
||||
QTimer* m_tmrSearchPattern;
|
||||
QString m_searchPattern;
|
||||
};
|
||||
|
||||
#endif // NEWSTOOLBAR_H
|
||||
|
|
Loading…
Reference in New Issue