phonebookui/pbkcommonui/src/cntdefaultviewmanager.cpp
changeset 31 2a11b5b00470
parent 27 de1630741fbe
child 37 fd64c38c277d
--- a/phonebookui/pbkcommonui/src/cntdefaultviewmanager.cpp	Mon May 03 12:24:20 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntdefaultviewmanager.cpp	Fri May 14 15:42:23 2010 +0300
@@ -23,38 +23,34 @@
 #include <hbmainwindow.h>
 #include <qtcontacts.h>
 #include "cntviewnavigator.h"
-#include <simutility.h>
+#include "simutility.h"
 
 CntDefaultViewManager::CntDefaultViewManager( HbMainWindow* aWindow ) : QObject(),
     mFactory(NULL),
     mCurrent(NULL),
     mOldView(NULL),
     mNavigator(NULL),
-    mMainWindow( aWindow )
+    mMainWindow( aWindow ),
+    mSimUtility(NULL)
 
 {    
     setViewFactory(new CntDefaultViewFactory());
     setViewNavigator(new CntViewNavigator(this));
 
-#ifndef __WINS__
     int error = -1;
-    SimUtility simUtility = SimUtility(SimUtility::AdnStore, error);
-    if (error == 0) 
+    mSimUtility = new SimUtility(SimUtility::AdnStore, error);
+    if (error != 0) 
     {
-        SimUtility::AvailableStores store = simUtility.getAvailableStores(error);
-        if (error == 0 && store.AdnStorePresent)
-        {
-            QContactManager* manager = QContactManager::fromUri(SIM_BACKEND_ADN);
-            mBackends.append( manager );
-        }
+        delete mSimUtility; 
+        mSimUtility = 0;
     }
-#endif
 }
 
 CntDefaultViewManager::~CntDefaultViewManager()
 {
     qDeleteAll(mDefaults.values());
     delete mFactory;
+    delete mSimUtility;
 }
 
 void CntDefaultViewManager::setViewFactory( CntAbstractViewFactory* aFactory ) 
@@ -79,12 +75,16 @@
     
     QFlags<Hb::ViewSwitchFlag> flags;
     int back = mNavigator->back( flags );
-    
+
+    foreach( int k, aArgs.keys() )
+    {
+        mArgs.insert( k, aArgs.value(k) );
+    }
     mArgs.insert(EViewId, back );
-    mArgs.insert(ESelectedAction, aArgs.value(ESelectedAction));
-    mArgs.insert(ESelectedContact, aArgs.value(ESelectedContact));
-    mArgs.insert(ESelectedGroupContact, aArgs.value(ESelectedGroupContact));
-    mArgs.insert(ESelectedDetail, aArgs.value(ESelectedDetail));
+//    mArgs.insert(ESelectedAction, aArgs.value(ESelectedAction));
+//    mArgs.insert(ESelectedContact, aArgs.value(ESelectedContact));
+//    mArgs.insert(ESelectedGroupContact, aArgs.value(ESelectedGroupContact));
+//    mArgs.insert(ESelectedDetail, aArgs.value(ESelectedDetail));
 
     if (mArgs.value(EViewId).toInt() != noView)
     {
@@ -110,6 +110,7 @@
         }
     }
     QContactManager* manager = QContactManager::fromUri( aType );
+    
     if ( manager )
     {
         mBackends.append( manager );
@@ -143,6 +144,13 @@
             delete mOldView;
             mOldView = NULL;
         }
+        // If view id is not in defaults list, it means that view has changed
+        // its opinnion about preserving state to true.
+        else if ( !mDefaults.contains(mOldView->viewId()) ) 
+        {
+            mDefaults.insert( mOldView->viewId(), mOldView );
+        }
+
         mMainWindow->setInteractive(true);
     }
 }