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