MIRA
TreeViewFilter.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 by
3  * MetraLabs GmbH (MLAB), GERMANY
4  * and
5  * Neuroinformatics and Cognitive Robotics Labs (NICR) at TU Ilmenau, GERMANY
6  * All rights reserved.
7  *
8  * Contact: info@mira-project.org
9  *
10  * Commercial Usage:
11  * Licensees holding valid commercial licenses may use this file in
12  * accordance with the commercial license agreement provided with the
13  * software or, alternatively, in accordance with the terms contained in
14  * a written agreement between you and MLAB or NICR.
15  *
16  * GNU General Public License Usage:
17  * Alternatively, this file may be used under the terms of the GNU
18  * General Public License version 3.0 as published by the Free Software
19  * Foundation and appearing in the file LICENSE.GPL3 included in the
20  * packaging of this file. Please review the following information to
21  * ensure the GNU General Public License version 3.0 requirements will be
22  * met: http://www.gnu.org/copyleft/gpl.html.
23  * Alternatively you may (at your option) use any later version of the GNU
24  * General Public License if such license has been publicly approved by
25  * MLAB and NICR (or its successors, if any).
26  *
27  * IN NO EVENT SHALL "MLAB" OR "NICR" BE LIABLE TO ANY PARTY FOR DIRECT,
28  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
29  * THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF "MLAB" OR
30  * "NICR" HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * "MLAB" AND "NICR" SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
33  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
34  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
35  * ON AN "AS IS" BASIS, AND "MLAB" AND "NICR" HAVE NO OBLIGATION TO
36  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS.
37  */
38 
48 #ifndef _MIRA_TREEVIEWFILTER_H_
49 #define _MIRA_TREEVIEWFILTER_H_
50 
51 #include <QWidget>
52 
53 class QModelIndex;
54 class QTreeView;
55 
56 namespace mira {
57 
59 
60 class LineEditClear;
61 
62 class TreeViewFilter : public QWidget
63 {
64  Q_OBJECT
65 public:
66 
67  TreeViewFilter(QTreeView* view, QWidget* parent=NULL);
68 
69 protected:
70 
71  virtual void timerEvent(QTimerEvent*);
72 
73 public slots:
74 
75  void setAutoHide(bool hide);
76  void showFilter();
77  void hideFilter();
78 
94  void useFilterRole(bool use=true);
95 
96 public:
97  enum {
98  FilterRole = Qt::UserRole+0x1F
99  };
100 
101 public:
102 
103  bool getAutoHide() const;
104 
110  void setAlwaysActive(bool always);
111 
117  void setExpandAll(bool expandAll);
118 
124  void setShowChildren(bool show);
125 
131  void setExpandChildren(bool expand);
132 
139  void setFilterColumns(const std::vector<int>& cols);
140  void setFilterColumns(int col1);
141  void setFilterColumns(int col1, int col2);
142  void setFilterColumns(int col1, int col2, int col3);
143 
147  void clearFilter();
148 
149 private slots:
150 
151  void onFilterTextChanged(const QString& text);
152 
153 private:
154 
155  void autoHide();
156  bool applyFilter(const QString& filter, const QModelIndex& parent,
157  bool forceVisible);
158  void startFilterUpdateTimer(int delay);
159 
160 private:
161 
162  QTreeView* mTreeView;
163  LineEditClear* mFilterEdit;
164  int mFilterTimerId;
165  int mHideTimerId;
166 
167  std::vector<int> mFilterColumns;
168 
169  bool mAutoHide;
170  bool mAlwaysActive;
171  bool mExpandAll;
172  bool mShowChildren;
173  bool mExpandChildren;
174  bool mUseFilterRole;
175 };
176 
178 
179 }
180 
181 #endif
void setAlwaysActive(bool always)
If set to true, the filter will stay active as long as its filter string is not empty, i.e.
Definition: TreeViewFilter.h:98
virtual void timerEvent(QTimerEvent *)
specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
Definition: IOService.h:67
void setExpandAll(bool expandAll)
If set to true, all (visible) nodes in the tree will be always expanded.
bool getAutoHide() const
void setFilterColumns(const std::vector< int > &cols)
Specifies the columns that are used for testing if the pattern matches.
void setExpandChildren(bool expand)
If set to true, the children of items matching the entered filter (if visible) will be expanded autom...
void setShowChildren(bool show)
If set to true, the children of items matching the entered filter will be visible, otherwise hidden.
void useFilterRole(bool use=true)
Tell this filter to use the special FilterRole of the tree view items to be used for checking if the ...
void clearFilter()
Clear the filter text.
Provides a QLineEdit widget that has a small button on its right side for clearing the content...
Definition: LineEditClear.h:63
TreeViewFilter(QTreeView *view, QWidget *parent=NULL)
void setAutoHide(bool hide)
Definition: TreeViewFilter.h:62