Fix forward navigation control on Linux.
[dorian] / devtools.cpp
1 #include <QtGui>
2
3 #include "devtools.h"
4 #include "trace.h"
5 #include "settings.h"
6 #include "toolbuttonbox.h"
7 #include "bookdb.h"
8 #include "platform.h"
9
10 DevTools::DevTools(QWidget *parent): Dyalog(parent, false)
11 {
12     setWindowTitle(tr("Developer"));
13     addWidget(new QLabel(tr("Qt API version %1").arg(QT_VERSION_STR), this));
14     addWidget(new QLabel(tr("Qt runtime version %1").arg(qVersion()), this));
15
16     QPushButton *clearSettings = new QPushButton("Clear persistent data", this);
17     connect(clearSettings, SIGNAL(clicked()), this, SLOT(onClear()));
18     addWidget(clearSettings);
19
20     addWidget(new QLabel(tr("Trace level:"), this));
21     ToolButtonBox *box = new ToolButtonBox(this);
22     addWidget(box);
23     box->addButton(QtDebugMsg, tr("Debug"));
24     box->addButton(QtWarningMsg, tr("Warn"));
25     box->addButton(QtCriticalMsg, tr("Critical"));
26     box->addButton(QtFatalMsg, tr("Fatal"));
27     box->toggle(Trace::level);
28     connect(box, SIGNAL(buttonClicked(int)),
29             this, SLOT(onLevelButtonClicked(int)));
30
31     QCheckBox *traceToFile = new QCheckBox(tr("Trace to file"), this);
32     addWidget(traceToFile);
33     traceToFile->setChecked(!Trace::fileName().isEmpty());
34     connect(traceToFile, SIGNAL(toggled(bool)),
35             this, SLOT(onTraceToFileToggled(bool)));
36
37     addStretch();
38 }
39
40 void DevTools::onClear()
41 {
42     if (QMessageBox::Yes ==
43         QMessageBox::question(this, tr("Clear persistent data"),
44                               tr("Library and settings will be cleared, "
45                                  "application will be restarted. Continue?"),
46                               QMessageBox::Yes | QMessageBox::No)) {
47         QSettings().clear();
48         BookDb::instance()->removeAll();
49         QApplication::exit(1000);
50     }
51 }
52
53 void DevTools::onLevelButtonClicked(int level)
54 {
55     Trace::level = (QtMsgType)level;
56     Settings::instance()->setValue("tracelevel", level);
57 }
58
59 void DevTools::onTraceToFileToggled(bool enable)
60 {
61     QString name = enable? Platform::instance()->traceFileName(): QString();
62     Trace::setFileName(name);
63     Settings::instance()->setValue("tracefilename", name);
64 }