]> git.cworth.org Git - apitrace/blob - gui/apitracefilter.h
Use skiplist-based FastCallSet within trace::CallSet
[apitrace] / gui / apitracefilter.h
1 #ifndef APITRACEFILTER_H
2 #define APITRACEFILTER_H
3
4 #include <QRegExp>
5 #include <QSortFilterProxyModel>
6
7 class ApiTraceCall;
8
9 class ApiTraceFilter : public QSortFilterProxyModel
10 {
11     Q_OBJECT
12 public:
13     enum FilterOption {
14         NullFilter        = 0,
15         ExtensionsFilter  = 1 << 0,
16         ResolutionsFilter = 1 << 1,
17         ErrorsQueryFilter = 1 << 2,
18         ExtraStateFilter  = 1 << 3,
19         CustomFilter      = 1 << 4,
20     };
21     Q_DECLARE_FLAGS(FilterOptions, FilterOption)
22 public:
23     ApiTraceFilter(QObject *parent = 0);
24
25     FilterOptions filterOptions() const;
26     void setFilterOptions(FilterOptions opts);
27
28     void setFilterRegexp(const QRegExp &regexp);
29     QRegExp filterRegexp() const;
30
31     void setCustomFilterRegexp(const QString &str);
32     QString customFilterRegexp() const;
33
34     QModelIndex indexForCall(ApiTraceCall *call) const;
35 protected:
36     bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
37
38 private:
39     QRegExp m_regexp;
40     FilterOptions m_filters;
41     QRegExp m_customRegexp;
42 };
43
44 #endif