qstmgesturelib/qstmfilelogger/qstmfilelogger.cpp
changeset 16 3c88a81ff781
parent 3 0954f5dd2cd0
--- a/qstmgesturelib/qstmfilelogger/qstmfilelogger.cpp	Thu Sep 23 15:32:11 2010 -0400
+++ b/qstmgesturelib/qstmfilelogger/qstmfilelogger.cpp	Fri Oct 15 17:30:59 2010 -0400
@@ -23,28 +23,62 @@
 #include <QDateTime>
 #include "qstmfilelogger.h"
 
+#define BUF_SIZE  512*1004
 QStm_FileLogger* QStm_FileLogger::m_instance = 0;
 
-QStm_FileLogger::QStm_FileLogger()
+QStm_FileLogger::QStm_FileLogger() : QObject(), m_file(0), m_stream(0), m_enabled(0)
 {
+#ifdef GESTURES_LOGTOFILE
 	QString fname = getLogFileName();
 	m_file = new QFile(fname);
 	m_file->open(QIODevice::ReadWrite | QIODevice::Text);
 	m_stream = new QTextStream(m_file);
+#else
+	m_buffer = new QString();
+	m_buffer->reserve(BUF_SIZE);
+	m_debug = new QDebug(m_buffer);
+	m_noDebug = new QNoDebug();
+	connect(&m_flushTimer, SIGNAL(timeout()), this, SLOT(doFlush()));
+	m_flushTimer.start(5000);
+#endif
 }
 
 
 QStm_FileLogger::~QStm_FileLogger()
 {
+#ifdef GESTURES_LOGTOFILE
 	delete m_stream;
 	m_file->close();
 	delete m_file;
+#else
+	m_flushTimer.stop();
+	delete m_buffer;
+	delete m_debug;
+#endif
+}
+
+
+void QStm_FileLogger::enable(bool on) 
+{ 
+    m_enabled = on;
+    if (m_enabled) {
+        if (!m_buffer) {
+            m_buffer = new QString();
+            m_buffer->reserve(BUF_SIZE);   
+        }
+        m_flushTimer.start(5000);
+    }
+    else {
+        delete m_buffer;
+        m_buffer = NULL;
+        m_flushTimer.stop();
+    }
 }
 
 QString QStm_FileLogger::getLogFileName()
 {
 #ifdef Q_OS_SYMBIAN	
-    QString path = "E:/Others/Logs";
+    QString path = "c:/data/Others";
     QDir logdir(path);
     logdir.mkpath(path);
 #else 
@@ -63,32 +97,71 @@
 
 void QStm_FileLogger::log(const char* fmt,...)
 {
+    if (logger()->isEnabled()) {
 	va_list list;
 	QString logStr;
 	va_start(list, fmt);
 	logStr.vsprintf(fmt, list);
 	logger()->doLog(logStr);
 	va_end(list);
+    }
 }
 
 
 void QStm_FileLogger::log(const QString& text)
 {
+    if (logger()->isEnabled()) {
 	logger()->doLog(text);
+    }
 }
 
 void QStm_FileLogger::doLog(const QString& text) 
-{ 
-	*m_stream << QDateTime::currentDateTime().toString("dd-MM-yy hh:mm:ss.zzz") << " " << 
+{
+    if (m_enabled) {
+#ifdef GESTURES_LOGTOFILE
+	    *m_stream << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
 			text << "\n"; 
+#else
+        if (m_buffer->size() >= BUF_SIZE) {
+	    //doFlush();
+	    }
+        *m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
+                text << "\n"; 
+#endif
+    }
 }
 
 void QStm_FileLogger::doLog(const char* text) 
 { 
-	*m_stream << QDateTime::currentDateTime().toString("dd-MM-yy hh:mm:ss.zzz") << " " << 
+    if (m_enabled) {
+#ifdef GESTURES_LOGTOFILE
+	    *m_stream << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
 			text << "\n"; 
+#else
+	    if (m_buffer->size() >= BUF_SIZE) {
+	        //doFlush();
+	    }
+        *m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
+                text << "\n"; 
+#endif
+    }
 }
- 
+
+
+void QStm_FileLogger::doFlush() 
+{ 
+    if (m_enabled) {
+#ifdef GESTURES_LOGTOFILE
+        if (m_stream) m_stream->flush();
+#else
+        if (!m_buffer->isEmpty()) {
+            qDebug() << *m_buffer;
+            m_buffer->clear();
+        }
+#endif
+    }
+}
+
 QStm_FileLogger* QStm_FileLogger::logger()
 {
 	if (!m_instance) {
@@ -96,3 +169,11 @@
 	}
 	return m_instance;
 }
+
+QDebug QStm_FileLogger::debug() 
+{ 
+    if (logger()->isEnabled()) {
+        *logger()->m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " "; 
+    }
+    return *logger()->m_debug;
+}