Avoid complex types as statics.
[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     QPushButton *clearSettings = new QPushButton("Clear persistent data", this);
14     connect(clearSettings, SIGNAL(clicked()), this, SLOT(onClear()));
15     addWidget(clearSettings);
16
17     QLabel *level = new QLabel(tr("Trace level:"), this);
18     addWidget(level);
19
20     ToolButtonBox *box = new ToolButtonBox(this);
21     addWidget(box);
22     box->addButton(QtDebugMsg, tr("Debug"));
23     box->addButton(QtWarningMsg, tr("Warning"));
24     box->addButton(QtCriticalMsg, tr("Critical"));
25     box->addButton(QtFatalMsg, tr("Fatal"));
26     box->toggle(Trace::level);
27     connect(box, SIGNAL(buttonClicked(int)),
28             this, SLOT(onLevelButtonClicked(int)));
29
30     QCheckBox *traceToFile = new QCheckBox(tr("Trace to file"), this);
31     addWidget(traceToFile);
32     traceToFile->setChecked(!Trace::fileName().isEmpty());
33     connect(traceToFile, SIGNAL(toggled(bool)),
34             this, SLOT(onTraceToFileToggled(bool)));
35
36     addStretch();
37 }
38
39 void DevTools::onClear()
40 {
41     if (QMessageBox::Yes ==
42         QMessageBox::question(this, tr("Clear persistent data"),
43                               tr("Library and settings will be cleared, "
44                                  "application will be restarted. Continue?"),
45                               QMessageBox::Yes | QMessageBox::No)) {
46         QSettings().clear();
47         BookDb::instance()->removeAll();
48         QApplication::exit(1000);
49     }
50 }
51
52 void DevTools::onLevelButtonClicked(int level)
53 {
54     Trace::level = (QtMsgType)level;
55     Settings::instance()->setValue("tracelevel", level);
56 }
57
58 void DevTools::onTraceToFileToggled(bool enable)
59 {
60     QString name = enable? Platform::instance()->traceFileName(): QString();
61     Trace::setFileName(name);
62     Settings::instance()->setValue("tracefilename", name);
63 }