Fix forward navigation control on Linux.
[dorian] / trace.h
diff --git a/trace.h b/trace.h
index d3ceb40..870bd87 100644 (file)
--- a/trace.h
+++ b/trace.h
@@ -1,28 +1,42 @@
 #ifndef TRACE_H
 #define TRACE_H
 
+#include <QtGlobal>
 #include <QtDebug>
+#include <QString>
+#include <QTime>
+#include <QEvent>
+#include <QFile>
 
+#ifdef Q_OS_SYMBIAN
+#   ifdef __PRETTY_FUNCTION__
+#       define TRACE Trace _(__PRETTY_FUNCTION__)
+#   else
+#       define TRACE Trace _(__FUNCTION__)
+#   endif
+#else
+#   define TRACE Trace _(Q_FUNC_INFO)
+#endif
+
+/** Trace helper. */
 class Trace
 {
 public:
-    Trace(const QString &s): name(s) {
-        qDebug() << QString(" ").repeated(indent) + ">" + name;
-        indent++;
-    }
-    ~Trace() {
-        if (--indent < 0) {
-            indent = 0;
-        }
-        qDebug() << QString(" ").repeated(indent) + "<" + name;
-    }
-    void trace(const QString &s) const {
-        qDebug() << QString(" ").repeated(indent)  + name + ": " + s;
-    }
+    Trace(const QString &s);
+    ~Trace();
+    static QString event(QEvent::Type t);
+    static void messageHandler(QtMsgType type, const char *msg);
+    static QtMsgType level;
+    static void setFileName(const QString &fileName);
+    static QString fileName();
 
 protected:
+    static QString prefix();
     QString name;
     static int indent;
+    typedef struct {int type; const char *name;} EventName;
+    static EventName eventTab[];
+    static QFile file;
 };
 
 #endif // TRACE_H