- write logfile for debugging purposes
[buliscores] / src / main.cpp
index 655cb33..5d4cef7 100644 (file)
 #include "backendkicker.h"
 
 #include <QtGui>
+#include <QFile>
+#include <QTextStream>
 #include <src/mainwidget.h>
 
+
+
+void messageHandler(QtMsgType type, const char *msg)
+{
+    static QFile logfile;
+    static QTextStream fw;
+    static const QString LOGFILE_PATH = "/tmp/buliscores.log";
+    static const QtMsgType LOGLEVEL = QtDebugMsg;
+    QString out;
+
+    if (type < LOGLEVEL) {
+        return;
+    }
+
+    if (logfile.isOpen() == false) {
+        logfile.setFileName(LOGFILE_PATH);
+        if (logfile.open(QIODevice::Append) == true) {
+            fw.setDevice((QIODevice*)&logfile);
+            fw << "Logfile Opened: " << QDateTime::currentDateTime().toString();
+        }
+    }
+
+    switch (type) {
+    case QtDebugMsg:
+        out = "%1   Debug: %2\n";
+        break;
+    case QtWarningMsg:
+        out = "%1   Warning: %2\n";
+        break;
+    case QtCriticalMsg:
+        out = "%1   Critical: %2\n";
+        break;
+    case QtFatalMsg:
+        out = "%1   Fatal: %2\n";
+        break;
+    }
+
+    out = out.arg(QDateTime::currentDateTime().toString(), msg);
+
+    if (logfile.isOpen()) {
+        fw << out;
+        fw.flush();
+    }
+    printf("%s", out.toAscii().constData());
+
+    if (type == QtFatalMsg) {
+        abort();
+    }
+}
+
 int main(int argc, char *argv[])
 {
     // enforce native graphics system for now due to a bug in transparency handling
     // you can remove this line if you only target PR 1.2
+    qInstallMsgHandler(messageHandler);
     QApplication::setGraphicsSystem("native");
     QApplication app(argc, argv);
     MainWidget mw;
@@ -56,6 +109,8 @@ int main(int argc, char *argv[])
     app.setApplicationName("Buli Scores");
     app.setApplicationVersion("0.1");
     app.setOrganizationName("David Solbach");
+
+
     mw.resize(400,250);
 
     QMaemo5HomescreenAdaptor *adaptor = new QMaemo5HomescreenAdaptor(&mw);