#include <QDebug>
ApiTraceFilter::ApiTraceFilter(QObject *parent)
- : QSortFilterProxyModel()
+ : QSortFilterProxyModel(),
+ m_filters(ExtensionsFilter | ResolutionsFilter |
+ ErrorsQueryFilter | ExtraStateFilter)
{
}
}
ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
- QString function = call->name;
+ QString function = call->name();
- if (!m_text.isEmpty()) {
- return function.contains(m_text);
+ if (!m_regexp.isEmpty() && m_regexp.isValid()) {
+ return function.contains(m_regexp);
}
- //XXX make it configurable
- if (function.contains(QLatin1String("glXGetProcAddress")))
- return false;
- if (function.contains(QLatin1String("wglGetProcAddress")))
- return false;
+ if (m_filters & ResolutionsFilter) {
+ if (function.contains(QLatin1String("glXGetProcAddress")))
+ return false;
+ if (function.contains(QLatin1String("wglGetProcAddress")))
+ return false;
+ }
+
+ if (m_filters & ErrorsQueryFilter) {
+ if (function.contains(QLatin1String("glGetError")))
+ return false;
+ }
+
+ if (m_filters & ExtraStateFilter) {
+ if (function.contains(QLatin1String("glXGetCurrentDisplay")))
+ return false;
+ if (function.contains(QLatin1String("wglDescribePixelFormat")))
+ return false;
+ }
+
+ if (m_filters & ExtensionsFilter) {
+ if (function.contains(QLatin1String("glXGetClientString")))
+ return false;
+ if (function.contains(QLatin1String("glXQueryExtensionsString")))
+ return false;
+ if (function.contains(QLatin1String("glGetString")))
+ return false;
+ }
- QString fullText = call->filterText();
- if (function.contains(QLatin1String("glGetString")) &&
- fullText.contains(QLatin1String("GL_EXTENSIONS")))
- return false;
return true;
}
-void ApiTraceFilter::setFilterString(const QString &text)
+void ApiTraceFilter::setFilterRegexp(const QRegExp ®exp)
{
- if (text != m_text) {
- m_text = text;
+ if (regexp != m_regexp) {
+ m_regexp = regexp;
invalidate();
}
}
+ApiTraceFilter::FilterOptions ApiTraceFilter::filterOptions() const
+{
+ return m_filters;
+}
+
+void ApiTraceFilter::setFilterOptions(ApiTraceFilter::FilterOptions opts)
+{
+ if (opts != m_filters) {
+ m_filters = opts;
+ invalidate();
+ }
+}
+
+
+QModelIndex ApiTraceFilter::indexForCall(ApiTraceCall *call) const
+{
+ ApiTraceModel *model = static_cast<ApiTraceModel *>(sourceModel());
+ QModelIndex index = model->indexForCall(call);
+ return mapFromSource(index);
+}
+
+QRegExp ApiTraceFilter::filterRegexp() const
+{
+ return m_regexp;
+}
+
#include "apitracefilter.moc"