modelfilter.cpp
Go to the documentation of this file.
1 #include "modelfilter.hpp"
2 #include "logs_table_model.hpp"
3 
4 ModelFilter::ModelFilter(QObject* parent) : QSortFilterProxyModel(parent)
5 {
6  _msg_filter_enabled = false;
7  _node_filter_enabled = false;
10 
11  _info_filter_enabled = false;
12  _error_filter_enabled = false;
13  _warn_filter_enabled = false;
14  _debug_filter_enabled = false;
15 }
16 
18 {
19  _msg_filter_enabled = enabled;
20  invalidateFilter();
21 }
22 
24 {
25  _node_filter_enabled = enabled;
26  invalidateFilter();
27 }
28 
30 {
31  _source_filter_enabled = enabled;
32  invalidateFilter();
33 }
34 
36 {
37  _time_filter_enabled = enabled;
38  invalidateFilter();
39 }
40 
42 {
43  _msg_mode = mode;
44  _msg_text = filter;
45 
46  if (mode == WILDCARDS)
47  {
48  QRegExp regexp(filter, Qt::CaseSensitive, QRegExp::Wildcard);
49  _msg_validator.setRegExp(regexp);
50  }
51  else if (mode == REGEX)
52  {
53  QRegExp regexp(filter, Qt::CaseSensitive, QRegExp::RegExp2);
54  _msg_validator.setRegExp(regexp);
55  }
56 
57  invalidateFilter();
58 }
59 
61 {
62  _node_mode = mode;
63  _node_text = filter;
64 
65  if (mode == WILDCARDS)
66  {
67  QRegExp regexp(filter, Qt::CaseSensitive, QRegExp::Wildcard);
68  _node_validator.setRegExp(regexp);
69  }
70  else if (mode == REGEX)
71  {
72  QRegExp regexp(filter, Qt::CaseSensitive, QRegExp::RegExp2);
73  _node_validator.setRegExp(regexp);
74  }
75  invalidateFilter();
76 }
77 
79 {
81  _source_text = filter;
82 
83  if (mode == WILDCARDS)
84  {
85  QRegExp regexp(filter, Qt::CaseSensitive, QRegExp::Wildcard);
86  _source_validator.setRegExp(regexp);
87  }
88  else if (mode == REGEX)
89  {
90  QRegExp regexp(filter, Qt::CaseSensitive, QRegExp::RegExp2);
91  _source_validator.setRegExp(regexp);
92  }
93  invalidateFilter();
94 }
95 
97 {
98  _min = min;
99  _max = max;
100  invalidateFilter();
101 }
102 
104 {
105  _info_filter_enabled = enabled;
106  invalidateFilter();
107 }
108 
110 {
111  _debug_filter_enabled = enabled;
112  invalidateFilter();
113 }
114 
116 {
117  _error_filter_enabled = enabled;
118  invalidateFilter();
119 }
120 
122 {
123  _warn_filter_enabled = enabled;
124  invalidateFilter();
125 }
126 
127 bool ModelFilter::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const
128 {
129  QModelIndex index_time = sourceModel()->index(sourceRow, 1, sourceParent);
130  QModelIndex index_severity = sourceModel()->index(sourceRow, 2, sourceParent);
131  QModelIndex index_node = sourceModel()->index(sourceRow, 3, sourceParent);
132  QModelIndex index_message = sourceModel()->index(sourceRow, 4, sourceParent);
133  QModelIndex index_source = sourceModel()->index(sourceRow, 5, sourceParent);
134 
135  int severity = sourceModel()->data(index_severity, Qt::UserRole).toInt();
136 
137  if (!_info_filter_enabled && severity == LogsTableModel::INFO)
138  return false;
139  if (!_error_filter_enabled && severity == LogsTableModel::ERROR)
140  return false;
142  return false;
143  if (!_debug_filter_enabled && severity == LogsTableModel::DEBUG)
144  return false;
145 
147  {
148  int64_t usec = sourceModel()->data(index_time, Qt::UserRole).toLongLong();
149  auto timestamp = TimePoint() + std::chrono::microseconds(usec);
150 
151  if (timestamp < _min || timestamp > _max)
152  {
153  return false;
154  }
155  }
156 
158  {
159  const QString& text = sourceModel()->data(index_message, Qt::UserRole).toString();
161  if (!ret)
162  {
163  return false;
164  }
165  }
166 
168  {
169  const QString& text = sourceModel()->data(index_source, Qt::UserRole).toString();
171  if (!ret)
172  {
173  return false;
174  }
175  }
176 
178  {
179  const QString& text = sourceModel()->data(index_node, Qt::UserRole).toString();
181  if (!ret)
182  {
183  return false;
184  }
185  }
186 
187  return true;
188 }
189 
190 bool ModelFilter::applyFilter(const QString& filter, ModelFilter::FilterMode mode, const QString& text_to_parse,
191  const QRegExpValidator* validator) const
192 {
193  // accept if no filter
194  if (filter.count() == 0)
195  {
196  return true;
197  }
198 
199  assert(!(validator == nullptr && (mode == WILDCARDS || mode == REGEX)));
200 
201  if (mode == CONTAINS_ONE)
202  {
203  QStringList filter_words = filter.split(QRegExp("\\s"), QString::SkipEmptyParts);
204 
205  for (int i = 0; i < filter_words.size(); i++)
206  {
207  if (text_to_parse.contains(filter_words[i], Qt::CaseSensitive) == true)
208  {
209  return true;
210  }
211  }
212  return false;
213  }
214  //-----------------------
215  if (mode == WILDCARDS || mode == REGEX)
216  {
217  QString message = text_to_parse;
218  int pos = 0;
219  return validator->validate(message, pos) == QValidator::Acceptable;
220  }
221  return false;
222 }
modelfilter.hpp
ModelFilter::applyFilter
bool applyFilter(const QString &filter, ModelFilter::FilterMode mode, const QString &text_to_parse, const QRegExpValidator *validator) const
Definition: modelfilter.cpp:190
ModelFilter::_max
TimePoint _max
Definition: modelfilter.hpp:52
ModelFilter::_debug_filter_enabled
bool _debug_filter_enabled
Definition: modelfilter.hpp:59
min
int min(int a, int b)
TimePoint
std::chrono::high_resolution_clock::time_point TimePoint
Definition: logs_table_model.hpp:17
ModelFilter::timeMinMaxUpdated
void timeMinMaxUpdated(TimePoint min, TimePoint max)
Definition: modelfilter.cpp:96
ModelFilter::setSourceFilterEnabled
void setSourceFilterEnabled(bool enabled)
Definition: modelfilter.cpp:29
ModelFilter::setSeverityWarningsEnabled
void setSeverityWarningsEnabled(bool enabled)
Definition: modelfilter.cpp:121
ModelFilter::sourceFilterUpdated
void sourceFilterUpdated(FilterMode mode, const QString &text)
Definition: modelfilter.cpp:78
ModelFilter::_msg_text
QString _msg_text
Definition: modelfilter.hpp:69
LogsTableModel::ERROR
@ ERROR
Definition: logs_table_model.hpp:31
ModelFilter::FilterMode
FilterMode
Definition: modelfilter.hpp:18
ModelFilter::setNodeFilterEnabled
void setNodeFilterEnabled(bool enabled)
Definition: modelfilter.cpp:23
ModelFilter::_msg_mode
FilterMode _msg_mode
Definition: modelfilter.hpp:65
i
size_t & i
load_mode::text
@ text
ModelFilter::_source_validator
QRegExpValidator _source_validator
Definition: modelfilter.hpp:74
ModelFilter::_node_mode
FilterMode _node_mode
Definition: modelfilter.hpp:64
ModelFilter::CONTAINS_ONE
@ CONTAINS_ONE
Definition: modelfilter.hpp:19
ModelFilter::_time_filter_enabled
bool _time_filter_enabled
Definition: modelfilter.hpp:57
ModelFilter::setSeverityErrorEnabled
void setSeverityErrorEnabled(bool enabled)
Definition: modelfilter.cpp:115
logs_table_model.hpp
ModelFilter::setTimeFilterEnabled
void setTimeFilterEnabled(bool enabled)
Definition: modelfilter.cpp:35
ModelFilter::_source_mode
FilterMode _source_mode
Definition: modelfilter.hpp:66
ModelFilter::setSeverityDebugEnabled
void setSeverityDebugEnabled(bool enabled)
Definition: modelfilter.cpp:109
LogsTableModel::INFO
@ INFO
Definition: logs_table_model.hpp:29
ModelFilter::_node_text
QString _node_text
Definition: modelfilter.hpp:68
ModelFilter::ModelFilter
ModelFilter(QObject *parent=0)
Definition: modelfilter.cpp:4
meta_function::mode
@ mode
ModelFilter::_node_filter_enabled
bool _node_filter_enabled
Definition: modelfilter.hpp:54
assert
#define assert(condition)
ModelFilter::_source_text
QString _source_text
Definition: modelfilter.hpp:70
ModelFilter::setMessageFilterEnabled
void setMessageFilterEnabled(bool enabled)
Definition: modelfilter.cpp:17
ModelFilter::_min
TimePoint _min
Definition: modelfilter.hpp:51
ModelFilter::_warn_filter_enabled
bool _warn_filter_enabled
Definition: modelfilter.hpp:62
ModelFilter::_msg_validator
QRegExpValidator _msg_validator
Definition: modelfilter.hpp:73
ModelFilter::messageFilterUpdated
void messageFilterUpdated(FilterMode mode, const QString &text)
Definition: modelfilter.cpp:41
ModelFilter::_info_filter_enabled
bool _info_filter_enabled
Definition: modelfilter.hpp:60
LogsTableModel::DEBUG
@ DEBUG
Definition: logs_table_model.hpp:28
ModelFilter::REGEX
@ REGEX
Definition: modelfilter.hpp:21
ModelFilter::setSeverityInfoEnabled
void setSeverityInfoEnabled(bool enabled)
Definition: modelfilter.cpp:103
ModelFilter::WILDCARDS
@ WILDCARDS
Definition: modelfilter.hpp:20
LogsTableModel::WARNINGS
@ WARNINGS
Definition: logs_table_model.hpp:30
ModelFilter::_node_validator
QRegExpValidator _node_validator
Definition: modelfilter.hpp:72
ModelFilter::nodeFilterUpdated
void nodeFilterUpdated(FilterMode mode, const QString &text)
Definition: modelfilter.cpp:60
ret
ret
ModelFilter::_msg_filter_enabled
bool _msg_filter_enabled
Definition: modelfilter.hpp:56
ModelFilter::filterAcceptsRow
virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
Definition: modelfilter.cpp:127
ModelFilter::_source_filter_enabled
bool _source_filter_enabled
Definition: modelfilter.hpp:55
ModelFilter::_error_filter_enabled
bool _error_filter_enabled
Definition: modelfilter.hpp:61


plotjuggler_ros
Author(s): Davide Faconti
autogenerated on Wed Feb 21 2024 03:22:55