HAL
searchbar.h
Go to the documentation of this file.
1 // MIT License
2 //
3 // Copyright (c) 2019 Ruhr University Bochum, Chair for Embedded Security. All Rights reserved.
4 // Copyright (c) 2019 Marc Fyrbiak, Sebastian Wallat, Max Hoffmann ("ORIGINAL AUTHORS"). All rights reserved.
5 // Copyright (c) 2021 Max Planck Institute for Security and Privacy. All Rights reserved.
6 // Copyright (c) 2021 Jörn Langheinrich, Julian Speith, Nils Albartus, René Walendy, Simon Klix ("ORIGINAL AUTHORS"). All Rights reserved.
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to deal
10 // in the Software without restriction, including without limitation the rights
11 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 // copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
14 //
15 // The above copyright notice and this permission notice shall be included in all
16 // copies or substantial portions of the Software.
17 //
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 // SOFTWARE.
25 
26 #pragma once
27 
29 #include <QFrame>
30 
31 class QLabel;
32 class QLineEdit;
33 class QHBoxLayout;
34 class QPushButton;
35 class QToolButton;
36 
37 namespace hal
38 {
47  class Searchbar : public QFrame
48  {
49  Q_OBJECT
56 
57  public:
63  Searchbar(QWidget* parent = nullptr);
64 
67  QString searchIcon() const;
68  QString searchIconStyle() const;
69  QString clearIcon() const;
70  QString clearIconStyle() const;
71  QString optionDialogIcon() const;
74 
77  void setSearchIcon(const QString& icon);
78  void setSearchIconStyle(const QString& style);
79  void setClearIcon(const QString& icon);
80  void setClearIconStyle(const QString& style);
81  void setColumnNames(QList<QString> list);
82  void setOptionDialogIcon(const QString& icon);
85 
92  void setPlaceholderText(const QString& text);
93 
97  void clear();
98 
102  void hideEvent(QHideEvent *) override;
103 
107  void showEvent(QShowEvent *) override;
108 
115 
122 
128  QString addFlags(const QString& text);
129 
133  void repolish();
134 
139  // bool exactMatchChecked();
140 
144  // bool caseSensitiveChecked();
145 
152  bool filterApplied();
153 
154  void setEmitTextWithFlags(bool);
155 
156  bool getEmitTextWithFlags();
157 
158  bool eventFilter(QObject *object, QEvent *event) override;
159 
160 
161  Q_SIGNALS:
167  void triggerNewSearch(const QString& text, int searchOptions);
168 
173 
174  // testing, might be removed
176 
177  public Q_SLOTS:
181  void handleTextEdited();
182 
186  void handleReturnPressed();
187 
191  void handleClearClicked();
192 
194 
195  void updateSearchHistory(QString entry);
196 
197  private:
198  QHBoxLayout* mLayout;
199 
200  QLabel* mSearchIconLabel;
201  QLineEdit* mLineEdit;
202  QLabel* mClearIconLabel;
203 
204  QToolButton* mDownButton;
205  QToolButton* mUpButton;
206  //QToolButton* mCaseSensitiveButton;
207  QToolButton* mSearchOptionsButton;
208  QToolButton* mClearButton;
209 
210  QString mSearchIcon;
211  QString mSearchIconStyle;
212  QString mClearIcon;
213  QString mClearIconStyle;
214  QString mOptionDialogIcon;
215  QString mOptionDialogIconStyle;
216 
217  QList<QString> mColumnNames;
218 
219 
220  // One can decide wether to receive the text (emitted by textEdited) with or without regex modifier
221  // If set to false, one has to manually implement 'Exact Match'/'Case Sensitive' functionality
222  bool mEmitTextWithFlags = true;
223 
224  SearchOptions* mCurrentOptions;
225  bool mIncrementalSearch = true;
226  int mMinCharsToStartIncSearch = 3;
227 
228  QStringList mSearchHistory;
229  };
230 }
A QFrame with a QLineEdit that can be used to input a substring to search for.
Definition: searchbar.h:48
QString getCurrentTextWithFlags()
Definition: searchbar.cpp:171
bool filterApplied()
Definition: searchbar.cpp:259
QString searchIcon
Definition: searchbar.h:50
void setClearIcon(const QString &icon)
Definition: searchbar.cpp:120
void setPlaceholderText(const QString &text)
Definition: searchbar.cpp:145
void handleTextEdited()
Definition: searchbar.cpp:207
void setOptionDialogIconStyle(const QString &style)
Definition: searchbar.cpp:140
QString optionDialogIcon
Definition: searchbar.h:54
void hideEvent(QHideEvent *) override
Definition: searchbar.cpp:156
QString optionDialogIconStyle
Definition: searchbar.h:55
bool eventFilter(QObject *object, QEvent *event) override
Definition: searchbar.cpp:246
void setSearchIcon(const QString &icon)
Definition: searchbar.cpp:110
void setSearchIconStyle(const QString &style)
Definition: searchbar.cpp:115
SearchOptions getSearchOptions() const
Definition: searchbar.cpp:74
void handleReturnPressed()
Definition: searchbar.cpp:220
void updateSearchHistory(QString entry)
Definition: searchbar.cpp:293
Searchbar(QWidget *parent=nullptr)
Definition: searchbar.cpp:20
void setClearIconStyle(const QString &style)
Definition: searchbar.cpp:125
void handleSearchOptionsDialog()
Definition: searchbar.cpp:264
bool getEmitTextWithFlags()
Definition: searchbar.cpp:241
void setColumnNames(QList< QString > list)
Definition: searchbar.cpp:130
void setOptionDialogIcon(const QString &icon)
Definition: searchbar.cpp:135
void setEmitTextWithFlags(bool)
Definition: searchbar.cpp:236
QString searchIconStyle
Definition: searchbar.h:51
QString addFlags(const QString &text)
Definition: searchbar.cpp:176
void searchIconClicked()
QString clearIconStyle
Definition: searchbar.h:53
void handleClearClicked()
Definition: searchbar.cpp:231
QString getCurrentText()
Definition: searchbar.cpp:166
void triggerNewSearch(const QString &text, int searchOptions)
void returnPressed()
void showEvent(QShowEvent *) override
Definition: searchbar.cpp:161
QString clearIcon
Definition: searchbar.h:52
virtual bool event(QEvent *e) override
Q_OBJECTQ_OBJECT
Q_PROPERTY(...)
Q_SIGNALSQ_SIGNALS
Q_SLOTSQ_SLOTS
QObject * parent() const const
QStyle * style() const const