messagingapp/msgsettings/settingsview/src/msgsettingsview.cpp
changeset 52 12db4185673b
parent 31 ebfee66fde93
child 70 a15d9966050f
--- a/messagingapp/msgsettings/settingsview/src/msgsettingsview.cpp	Tue Jul 06 14:12:40 2010 +0300
+++ b/messagingapp/msgsettings/settingsview/src/msgsettingsview.cpp	Wed Aug 18 09:45:25 2010 +0300
@@ -17,6 +17,7 @@
 #include <hbmainwindow.h>
 #include <hbgroupbox.h>
 #include <QGraphicsLinearLayout>
+#include <HbAction>
 
 #include "msgsettingsview.h"
 #include "msgsettingsform.h"
@@ -26,9 +27,11 @@
 //LOCALAIZED CONSTANTS 
 #define LOC_MESSAGE_SETTINGS_HEADING hbTrId("txt_messaging_title_messaging_settings")
 
-MsgSettingsView::MsgSettingsView(SettingsView settingsView,
-                                 QGraphicsItem *parent) :
-    MsgBaseView(parent), mSMSCenterView(0), mSettingsForm(0)
+MsgSettingsView::MsgSettingsView(SettingsView settingsView,QGraphicsItem *parent):
+MsgBaseView(parent),
+mSMSCenterView(0),
+mSettingsForm(0),
+mCurrentView(settingsView)
 {
     mMainWindow = this->mainWindow();
 
@@ -47,11 +50,18 @@
             SIGNAL(newSMSCCenterClicked(int)),
             this,
             SLOT(onNewSMSCCenterClicked(int)));
+    
 
     mainLayout->addItem(viewHeading);
     mainLayout->addItem(mSettingsForm);
 
     this->setLayout(mainLayout);
+    
+    //sms settings need to be created so launch MsgSMSCenterView in edit mode.
+    if(settingsView == SMSView)
+    {
+        onNewSMSCCenterClicked(-1);
+    }
 }
 
 MsgSettingsView::~MsgSettingsView()
@@ -81,14 +91,28 @@
 
 void MsgSettingsView::onSmsCenterEditViewClosed()
 {
+
+    //sms center view was directly launched, no need to go back to settings view.
+    if(mCurrentView == SMSView)
+    {
+        this->navigationAction()->trigger();
+        return;
+    }
     //remove the view 
     mMainWindow->removeView(mSMSCenterView);
-
-    //refresh the form
-    mSettingsForm->refreshViewForm();
-
-    //add the current view on top
-    mMainWindow->setCurrentView(this);
+    
+    // This check is needed in case when smsc center view is 
+    // launched directly 
+    if(mMainWindow->views().count() > 0)
+    {
+        QCRITICAL_WRITE("MsgViewManager::onSmsCenterEditViewClosed count>0");
+        
+        //refresh the form
+        mSettingsForm->refreshViewForm();
+        
+        //add the current view on top
+        mMainWindow->setCurrentView(this);
+    }
 }
 
 //eof