#include <QtGui>
+#include <QDebug>
#include "devtools.h"
+#include "trace.h"
+#include "settings.h"
DevTools::DevTools(QWidget *parent):
QDialog(parent, Qt::Dialog | Qt::WindowTitleHint |
connect(clearSettings, SIGNAL(clicked()), this, SLOT(onClear()));
layout->addWidget(clearSettings);
+ QLabel *level = new QLabel(tr("Trace level:"), contents);
+ layout->addWidget(level);
+
+ QFrame *box = new QFrame(this);
+ layout->addWidget(box);
+ QHBoxLayout *boxLayout = new QHBoxLayout(box);
+ boxLayout->setMargin(0);
+ box->setLayout(boxLayout);
+ QButtonGroup *group = new QButtonGroup(this);
+ group->setExclusive(true);
+
+ QToolButton *levelDebug = new QToolButton(box);
+ levelDebug->setToolButtonStyle(Qt::ToolButtonTextOnly);
+ levelDebug->setText(tr("Debug"));
+ levelDebug->setCheckable(true);
+ boxLayout->addWidget(levelDebug);
+ group->addButton(levelDebug, QtDebugMsg);
+
+ QToolButton *levelWarning = new QToolButton(box);
+ levelWarning->setToolButtonStyle(Qt::ToolButtonTextOnly);
+ levelWarning->setText(tr("Warning"));
+ levelWarning->setCheckable(true);
+ boxLayout->addWidget(levelWarning);
+ group->addButton(levelWarning, QtWarningMsg);
+
+ QToolButton *levelCritical = new QToolButton(box);
+ levelCritical->setToolButtonStyle(Qt::ToolButtonTextOnly);
+ levelCritical->setText(tr("Critical"));
+ levelCritical->setCheckable(true);
+ boxLayout->addWidget(levelCritical);
+ group->addButton(levelCritical, QtCriticalMsg);
+
+ QToolButton *levelFatal = new QToolButton(box);
+ levelFatal->setToolButtonStyle(Qt::ToolButtonTextOnly);
+ levelFatal->setText(tr("Fatal"));
+ levelFatal->setCheckable(true);
+ boxLayout->addWidget(levelFatal);
+ group->addButton(levelFatal, QtFatalMsg);
+
+ if (Trace::level == QtFatalMsg) {
+ levelFatal->toggle();
+ } else if (Trace::level == QtCriticalMsg) {
+ levelCritical->toggle();
+ } else if (Trace::level == QtWarningMsg) {
+ levelWarning->toggle();
+ } else {
+ levelDebug->toggle();
+ }
+
+ connect(group, SIGNAL(buttonClicked(int)),
+ this, SLOT(onLevelButtonClicked(int)));
+ layout->addWidget(box);
+
contents->setLayout(layout);
scroller->setWidget(contents);
QApplication::exit(1000);
}
}
+
+void DevTools::onLevelButtonClicked(int level) {
+ Trace::level = (QtMsgType)level;
+ Settings::instance()->setValue("tracelevel", level);
+}
+#include <stdio.h>
+#include <stdlib.h>
+
#include <QEvent>
#include "trace.h"
int Trace::indent;
+QtMsgType Trace::level = QtDebugMsg;
Trace::EventName Trace::eventTab[] = {
{QEvent::None, "QEvent::None"},
{0, 0}
};
+
+void Trace::messageHandler(QtMsgType type, const char *msg)
+{
+ if (type >= Trace::level) {
+ switch (type) {
+ case QtDebugMsg:
+ fprintf(stderr, "%s\n", msg);
+ break;
+ case QtWarningMsg:
+ fprintf(stderr, "Warning: %s\n", msg);
+ break;
+ case QtCriticalMsg:
+ fprintf(stderr, "Critical: %s\n", msg);
+ break;
+ case QtFatalMsg:
+ fprintf(stderr, "Fatal: %s\n", msg);
+ abort();
+ }
+ }
+}