1 // For license of this file, see <project-root-folder>/LICENSE.md.
2 
3 #ifndef NEWSTOOLBAR_H
4 #define NEWSTOOLBAR_H
5 
6 #include "gui/toolbars/basetoolbar.h"
7 
8 #include "core/messagesmodel.h"
9 
10 class BaseLineEdit;
11 class QWidgetAction;
12 class QToolButton;
13 class QMenu;
14 class QTimer;
15 
16 class MessagesToolBar : public BaseToolBar {
17   Q_OBJECT
18 
19   public:
20     explicit MessagesToolBar(const QString& title, QWidget* parent = nullptr);
21 
22     virtual QList<QAction*> availableActions() const;
23     virtual QList<QAction*> activatedActions() const;
24     virtual void saveAndSetActions(const QStringList& actions);
25     virtual void loadSpecificActions(const QList<QAction*>& actions, bool initial_load = false);
26     virtual QList<QAction*> convertActions(const QStringList& actions);
27     virtual QStringList defaultActions() const;
28     virtual QStringList savedActions() const;
29 
30   signals:
31     void messageSearchPatternChanged(const QString& pattern);
32     void messageFilterChanged(MessagesModel::MessageHighlighter filter);
33 
34   private slots:
35     void onSearchPatternChanged(const QString& search_pattern);
36     void handleMessageHighlighterChange(QAction* action);
37 
38   private:
39     void initializeSearchBox();
40     void initializeHighlighter();
41 
42   private:
43     QWidgetAction* m_actionMessageHighlighter;
44     QToolButton* m_btnMessageHighlighter;
45     QMenu* m_menuMessageHighlighter;
46     QWidgetAction* m_actionSearchMessages;
47     BaseLineEdit* m_txtSearchMessages;
48     QTimer* m_tmrSearchPattern;
49     QString m_searchPattern;
50 };
51 
52 #endif // NEWSTOOLBAR_H
53