1 #include "settingsdialog.h"
5 SettingsDialog::SettingsDialog(QWidget *parent)
13 QRegExp("glDraw|glVertex|glBegin|glEnd"));
16 QRegExp("glTex|glBindTex|glBegin|glEnd"));
18 QMap<QString, QRegExp>::const_iterator itr;
19 for (itr = m_showFilters.constBegin();
20 itr != m_showFilters.constEnd(); ++itr) {
21 showFilterCB->addItem(itr.key(), itr.value());
23 showFilterCB->addItem(tr("Custom"), QRegExp());
25 connect(showFilterCB, SIGNAL(currentIndexChanged(const QString &)),
26 SLOT(changeRegexp(const QString&)));
27 connect(showFilterEdit, SIGNAL(textEdited(const QString &)),
28 SLOT(regexpChanged(const QString&)));
30 showFilterCB->setCurrentIndex(0);
31 showFilterEdit->setText(m_showFilters.constBegin().value().pattern());
34 void SettingsDialog::filtersFromModel(const ApiTraceFilter *model)
36 ApiTraceFilter::FilterOptions opts = model->filterOptions();
37 extensionsBox->setChecked(opts & ApiTraceFilter::ExtensionsFilter);
38 functionsBox->setChecked(opts & ApiTraceFilter::ResolutionsFilter);
39 errorsBox->setChecked(opts & ApiTraceFilter::ErrorsQueryFilter);
40 statesBox->setChecked(opts & ApiTraceFilter::ExtraStateFilter);
41 customBox->setChecked(opts & ApiTraceFilter::CustomFilter);
42 QString customFilter = model->customFilterRegexp();
43 if (!customFilter.isEmpty()) {
44 customEdit->setText(customFilter);
46 //Add a common default
47 QLatin1String str("glXMakeContextCurrent");
48 customEdit->setText(str);
51 QRegExp regexp = model->filterRegexp();
52 if (regexp.isEmpty()) {
53 showFilterBox->setChecked(false);
55 showFilterBox->setChecked(true);
56 QMap<QString, QRegExp>::const_iterator itr;
58 for (itr = m_showFilters.constBegin();
59 itr != m_showFilters.constEnd(); ++itr, ++i) {
60 if (itr.value() == regexp) {
61 showFilterCB->setCurrentIndex(i);
62 showFilterEdit->setText(itr.value().pattern());
67 showFilterCB->setCurrentIndex(m_showFilters.count());
68 showFilterEdit->setText(regexp.pattern());
72 void SettingsDialog::filtersToModel(ApiTraceFilter *model)
74 ApiTraceFilter::FilterOptions opts = ApiTraceFilter::NullFilter;
75 if (extensionsBox->isChecked()) {
76 opts |= ApiTraceFilter::ExtensionsFilter;
78 if (functionsBox->isChecked()) {
79 opts |= ApiTraceFilter::ResolutionsFilter;
81 if (errorsBox->isChecked()) {
82 opts |= ApiTraceFilter::ErrorsQueryFilter;
84 if (statesBox->isChecked()) {
85 opts |= ApiTraceFilter::ExtraStateFilter;
87 if (customBox->isChecked()) {
88 opts |= ApiTraceFilter::CustomFilter;
89 m_filter->setCustomFilterRegexp(customEdit->text());
91 m_filter->setFilterOptions(opts);
92 if (showFilterBox->isChecked()) {
93 m_filter->setFilterRegexp(QRegExp(showFilterEdit->text()));
95 m_filter->setFilterRegexp(QRegExp());
99 void SettingsDialog::accept()
101 if (showFilterBox->isChecked()) {
102 QRegExp regexp(showFilterEdit->text());
103 if (!regexp.isValid()) {
104 QMessageBox::warning(
106 tr("Invalid Regexp"),
107 tr("The currently set regular expression "
108 "for filtering events is invalid."));
112 if (customBox->isChecked()) {
113 QRegExp regexp(customEdit->text());
114 if (!regexp.isValid()) {
115 QMessageBox::warning(
117 tr("Invalid Regexp"),
118 tr("The currently set regular expression "
119 "for custom events is invalid."));
123 filtersToModel(m_filter);
127 void SettingsDialog::changeRegexp(const QString &name)
129 showFilterEdit->setText(m_showFilters[name].pattern());
132 void SettingsDialog::regexpChanged(const QString &pattern)
134 int customIndex = m_showFilters.count();
135 if (showFilterCB->currentIndex() != customIndex) {
136 showFilterCB->blockSignals(true);
137 showFilterCB->setCurrentIndex(customIndex);
138 showFilterCB->blockSignals(false);
142 void SettingsDialog::setFilterModel(ApiTraceFilter *filter)
145 filtersFromModel(m_filter);
148 #include "settingsdialog.moc"