Fix forward navigation control on Linux.
[dorian] / devtools.cpp
index 110a003..e2427d8 100644 (file)
 #include <QtGui>
-#include <QDebug>
 
 #include "devtools.h"
 #include "trace.h"
 #include "settings.h"
+#include "toolbuttonbox.h"
+#include "bookdb.h"
+#include "platform.h"
 
-DevTools::DevTools(QWidget *parent):
-        QDialog(parent, Qt::Dialog | Qt::WindowTitleHint |
-                Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint)
+DevTools::DevTools(QWidget *parent): Dyalog(parent, false)
 {
     setWindowTitle(tr("Developer"));
-    QScrollArea *scroller = new QScrollArea(this);
-    scroller->setFrameStyle(QFrame::NoFrame);
-#ifdef Q_WS_MAEMO_5
-    scroller->setProperty("FingerScrollable", true);
-    scroller->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-#else
-    scroller->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
-    setSizeGripEnabled(true);
-#endif // Q_WS_MAEMO_5
-    scroller->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-
-    QWidget *contents = new QWidget(scroller);
-    QVBoxLayout *layout = new QVBoxLayout(contents);
+    addWidget(new QLabel(tr("Qt API version %1").arg(QT_VERSION_STR), this));
+    addWidget(new QLabel(tr("Qt runtime version %1").arg(qVersion()), this));
 
     QPushButton *clearSettings = new QPushButton("Clear persistent data", this);
     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)),
+    addWidget(clearSettings);
+
+    addWidget(new QLabel(tr("Trace level:"), this));
+    ToolButtonBox *box = new ToolButtonBox(this);
+    addWidget(box);
+    box->addButton(QtDebugMsg, tr("Debug"));
+    box->addButton(QtWarningMsg, tr("Warn"));
+    box->addButton(QtCriticalMsg, tr("Critical"));
+    box->addButton(QtFatalMsg, tr("Fatal"));
+    box->toggle(Trace::level);
+    connect(box, SIGNAL(buttonClicked(int)),
             this, SLOT(onLevelButtonClicked(int)));
-    layout->addWidget(box);
 
-    contents->setLayout(layout);
-    scroller->setWidget(contents);
+    QCheckBox *traceToFile = new QCheckBox(tr("Trace to file"), this);
+    addWidget(traceToFile);
+    traceToFile->setChecked(!Trace::fileName().isEmpty());
+    connect(traceToFile, SIGNAL(toggled(bool)),
+            this, SLOT(onTraceToFileToggled(bool)));
 
-    QHBoxLayout *dialogLayout = new QHBoxLayout();
-    dialogLayout->addWidget(scroller);
-    setLayout(dialogLayout);
+    addStretch();
 }
 
 void DevTools::onClear()
 {
     if (QMessageBox::Yes ==
-        QMessageBox::question(this, "Clear persistent data?",
-                              "Library and settings data will be cleared, "
-                              "application will be restarted. Continue?",
-                              QMessageBox::Yes
-#ifndef Q_WS_MAEMO_5
-                              , QMessageBox::No
-#endif
-                              )) {
+        QMessageBox::question(this, tr("Clear persistent data"),
+                              tr("Library and settings will be cleared, "
+                                 "application will be restarted. Continue?"),
+                              QMessageBox::Yes | QMessageBox::No)) {
         QSettings().clear();
+        BookDb::instance()->removeAll();
         QApplication::exit(1000);
     }
 }
 
-void DevTools::onLevelButtonClicked(int level) {
+void DevTools::onLevelButtonClicked(int level)
+{
     Trace::level = (QtMsgType)level;
     Settings::instance()->setValue("tracelevel", level);
 }
+
+void DevTools::onTraceToFileToggled(bool enable)
+{
+    QString name = enable? Platform::instance()->traceFileName(): QString();
+    Trace::setFileName(name);
+    Settings::instance()->setValue("tracefilename", name);
+}