logsui/logsapp/src/logsmainwindow.cpp
changeset 15 76d2cf7a585e
parent 9 68f3171a5819
child 17 90fe74753f71
--- a/logsui/logsapp/src/logsmainwindow.cpp	Fri Aug 06 14:57:47 2010 +0300
+++ b/logsui/logsapp/src/logsmainwindow.cpp	Mon Aug 23 18:14:51 2010 +0300
@@ -18,14 +18,17 @@
 #include "logsmainwindow.h"
 #include "logslogger.h"
 #include <QKeyEvent>
+#include <QApplication>
 #include <xqserviceutil.h>
 
 // -----------------------------------------------------------------------------
 // LogsMainWindow::LogsMainWindow
 // -----------------------------------------------------------------------------
 //
-LogsMainWindow::LogsMainWindow() : HbMainWindow(), mForeground(false)
+LogsMainWindow::LogsMainWindow() 
+    : HbMainWindow(), mForeground(false), mLocaleChanged(false)
 {
+    qApp->installEventFilter(this);
 }
 
 // -----------------------------------------------------------------------------
@@ -43,7 +46,6 @@
 void LogsMainWindow::sendAppToBackground()
 {
     LOGS_QDEBUG( "logs [UI] -> LogsMainWindow::sendAppToBackground" );
-    mForeground = false;
     XQServiceUtil::toBackground(true);
     LOGS_QDEBUG( "logs [UI] <- LogsMainWindow::sendAppToBackground" );
 }
@@ -55,7 +57,6 @@
 void LogsMainWindow::bringAppToForeground()
 {
     LOGS_QDEBUG( "logs [UI] -> LogsMainWindow::bringAppToForeground" );
-    mForeground = true;
     show();
     raise();
     LOGS_QDEBUG( "logs [UI] <- LogsMainWindow::bringAppToForeground" );
@@ -87,3 +88,31 @@
     HbMainWindow::keyPressEvent(event);
 }
 
+// -----------------------------------------------------------------------------
+// LogsMainWindow::eventFilter
+// -----------------------------------------------------------------------------
+//
+bool LogsMainWindow::eventFilter(QObject *obj, QEvent *event)
+{
+    if (event->type() == QEvent::ApplicationActivate) {
+        LOGS_QDEBUG( "logs [UI] -> eventFilter(), QEvent::ApplicationActivate" );
+        mForeground = true;
+        if (mLocaleChanged) {
+            LOGS_QDEBUG( "logs [UI] -> locale changed when we were on BG" );
+            emit localeChanged();
+            mLocaleChanged = false;
+        }
+        emit appGainedForeground();
+    } else if (event->type() == QEvent::ApplicationDeactivate) {
+        LOGS_QDEBUG( "logs [UI] -> eventFilter(), QEvent::ApplicationDeactivate" );
+        mForeground = false;
+    } else if (event->type() == QEvent::LocaleChange) {
+        if (mForeground) {
+            emit localeChanged();
+        } else {
+            mLocaleChanged = true;
+        }
+    }
+    
+    return HbMainWindow::eventFilter(obj,event);
+}