Increase default trace level. Set level from Developer dialog box.
authorAkos Polster <polster@marzipan.pipacs.com>
Sun, 1 Aug 2010 22:57:15 +0000 (00:57 +0200)
committerAkos Polster <polster@marzipan.pipacs.com>
Sun, 1 Aug 2010 22:57:15 +0000 (00:57 +0200)
devtools.cpp
devtools.h
main.cpp
mainwindow.cpp
pkg/changelog
trace.cpp
trace.h

index fa25015..110a003 100644 (file)
@@ -1,6 +1,9 @@
 #include <QtGui>
+#include <QDebug>
 
 #include "devtools.h"
+#include "trace.h"
+#include "settings.h"
 
 DevTools::DevTools(QWidget *parent):
         QDialog(parent, Qt::Dialog | Qt::WindowTitleHint |
@@ -25,6 +28,59 @@ DevTools::DevTools(QWidget *parent):
     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);
 
@@ -48,3 +104,8 @@ void DevTools::onClear()
         QApplication::exit(1000);
     }
 }
+
+void DevTools::onLevelButtonClicked(int level) {
+    Trace::level = (QtMsgType)level;
+    Settings::instance()->setValue("tracelevel", level);
+}
index 7f8d0d2..040c22b 100644 (file)
@@ -12,6 +12,7 @@ public:
 
 public slots:
     void onClear();
+    void onLevelButtonClicked(int level);
 };
 
 #endif // DEVTOOLS_H
index d3aa091..647822e 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -5,6 +5,8 @@
 #include <QtGui/QApplication>
 
 #include "mainwindow.h"
+#include "trace.h"
+#include "settings.h"
 
 int main(int argc, char *argv[])
 {
@@ -14,6 +16,10 @@ int main(int argc, char *argv[])
     a.setOrganizationDomain("pipacs.com");
     a.setOrganizationName("Pipacs");
 
+    Trace::level = (QtMsgType)Settings::instance()->
+        value("tracelevel", (int)QtWarningMsg).toInt();
+    qInstallMsgHandler(Trace::messageHandler);
+
     MainWindow w;
 #ifdef Q_WS_S60
     w.showMaximized();
index b10614b..df4729d 100755 (executable)
@@ -228,7 +228,6 @@ void MainWindow::onSettingsChanged(const QString &key)
     Trace t("MainWindow::onSettingsChanged");
 #ifdef Q_WS_MAEMO_5
     if (key == "orientation") {
-        // view->setLastBookmark();
         QString value = Settings::instance()->value(key).toString();
         if (value == "portrait") {
             setAttribute(Qt::WA_Maemo5LandscapeOrientation, false);
index c3e5fb0..cf276d7 100644 (file)
@@ -4,6 +4,7 @@ dorian (0.0.14-1) unstable; urgency=low
   * Add more restrictions to JavaScript handling
   * Restore bookmarks to the correct position
   * Save and restore positon when application changes orientation temporarily
+  * Increase default trace level. Set level from Developer dialog
 
  -- Akos Polster <akos@pipacs.com>  Sat, 31 Jul 2010 20:00:00 +0200
 
index 0ba8199..dd1acd1 100644 (file)
--- a/trace.cpp
+++ b/trace.cpp
@@ -1,8 +1,12 @@
+#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"},
@@ -224,3 +228,23 @@ Trace::EventName Trace::eventTab[] = {
 
     {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();
+        }
+    }
+}
diff --git a/trace.h b/trace.h
index b79ea30..ea41852 100644 (file)
--- a/trace.h
+++ b/trace.h
@@ -40,6 +40,10 @@ public:
         }
     }
 
+    static void messageHandler(QtMsgType type, const char *msg);
+
+    static QtMsgType level;
+
 protected:
     static QString prefix() {
         return QTime::currentTime().toString("hh:mm:ss.zzz ") +