controlpanelui/src/cpapplication/src/cpmainwindow.cpp
changeset 40 593f946f4fec
parent 22 a5692c68d772
--- a/controlpanelui/src/cpapplication/src/cpmainwindow.cpp	Fri Jun 25 17:12:20 2010 +0800
+++ b/controlpanelui/src/cpapplication/src/cpmainwindow.cpp	Wed Sep 29 10:09:58 2010 +0800
@@ -21,16 +21,26 @@
 #include <cpcategorysettingformitemdata.h>
 #include <hbapplication.h>
 #include <cpevent.h>
-
+#include <QTimer>
 //CpMainWindow implementation
 CpMainWindow::CpMainWindow(QWidget *parent /*= 0*/, Hb::WindowFlags windowFlags /*= Hb::WindowFlagNone*/)
-: HbMainWindow(parent,windowFlags)
+: HbMainWindow(parent,windowFlags),mStartupTimer(0)
 {
+    // start a zero interval timer to identify the startup of control panel is finished.
+    mStartupTimer = new QTimer(this);         
+    connect(mStartupTimer, SIGNAL(timeout()), this, SLOT(onStartupFininshed()));
+    mStartupTimer->start();
 }
 
 CpMainWindow::~CpMainWindow()
 {
-    
+    CpMainView *mainView = qobject_cast<CpMainView *>(views().first());
+    if(mainView != 0) {
+        mainView->saveActivity();
+    }
+    if(mStartupTimer != 0) {
+        delete mStartupTimer;
+    } 
 }
 
 bool CpMainWindow::event(QEvent *e)
@@ -43,6 +53,20 @@
     return HbMainWindow::event(e);
 }
 
+/**
+ * Emit applicationReady signal when start up process is finished.
+ */
+void CpMainWindow::onStartupFininshed()
+{
+    // emit applicationReady signal when the all initilizing event has been deal with.
+    // only emit it once
+    emit applicationReady();
+    if (mStartupTimer != 0) {
+        mStartupTimer->stop();
+        delete mStartupTimer;
+        mStartupTimer = 0;
+    }    
+}
 //End of File