phonebookui/cntcommonui/core/cntdefaultviewmanager.cpp
changeset 81 640d30f4fb64
parent 72 6abfb1094884
--- a/phonebookui/cntcommonui/core/cntdefaultviewmanager.cpp	Fri Oct 08 11:42:51 2010 +0300
+++ b/phonebookui/cntcommonui/core/cntdefaultviewmanager.cpp	Fri Oct 15 12:24:46 2010 +0300
@@ -133,6 +133,7 @@
     {
         mArgs.insert( k, aArgs.value(k) );
     }
+    
     mArgs.insert(EViewId, back );
 
     if (mArgs.value(EViewId).toInt() != noView)
@@ -140,9 +141,8 @@
         switchView( mArgs, flags );
     }
     else 
-    {
+    {  
         // exiting application
-        cleanup();
         closeApp();
     }
     
@@ -164,34 +164,16 @@
     
     QFlags<Hb::ViewSwitchFlag> flags;
     mNavigator->next(aArgs.value(EViewId).toInt(), flags);
+    
+    foreach(int k, aArgs.keys())
+    {
+        mArgs.insert(k, aArgs.value(k));
+    }
+    
     switchView(aArgs, flags);
     
     CNT_EXIT
 }
-/*
-QContactManager* CntDefaultViewManager::contactManager( const QString& aType )
-{
-    CNT_ENTRY
-    
-    foreach ( QContactManager* mgr, mBackends ) 
-    {
-        QString uri = mgr->managerUri();
-        if ( aType.compare(uri, Qt::CaseInsensitive) == 0 )
-        {
-            return mgr;
-        }
-    }
-    QContactManager* manager = QContactManager::fromUri( aType );
-    
-    if ( manager )
-    {
-        mBackends.append( manager );
-    }
-    
-    CNT_EXIT
-    return manager;
-}
-*/
 
 void CntDefaultViewManager::removeCurrentView()
 {
@@ -234,11 +216,11 @@
     CNT_EXIT
 }
 
-void CntDefaultViewManager::switchView(const CntViewParameters aArgs, QFlags<Hb::ViewSwitchFlag> flags)
+void CntDefaultViewManager::switchView(const CntViewParameters args, QFlags<Hb::ViewSwitchFlag> flags)
 {
     CNT_ENTRY
 
-    int id = aArgs.value(EViewId).toInt();
+    int id = args.value(EViewId).toInt();
     if ( id != noView )
     {
         CntAbstractView* nextView(NULL);
@@ -258,20 +240,79 @@
         }
         
         mOldView = mCurrent;
-        mCurrent = nextView;
-        mMainWindow->addView(mCurrent->view());
-        mMainWindow->setCurrentView(mCurrent->view(), true, flags);
-        mCurrent->activate(aArgs);
-        
+        activateView(nextView, args, flags);
         removeCurrentView();
     }
     
     CNT_EXIT
 }
 
-int CntDefaultViewManager::currentViewId()
+void CntDefaultViewManager::activateView(CntAbstractView* nextView, const CntViewParameters args, QFlags<Hb::ViewSwitchFlag> flags)
+{
+    CNT_ENTRY
+    
+    mCurrent = nextView;
+    mMainWindow->addView(mCurrent->view());
+    mMainWindow->setCurrentView(mCurrent->view(), true, flags);
+    mCurrent->activate(args);
+    
+    CNT_EXIT
+}
+
+bool CntDefaultViewManager::internalize(QDataStream &stream)
 {
-    return mCurrent->viewId();
+    CNT_ENTRY
+    
+    int id = mNavigator->internalize(stream);   
+    if (id == noView)
+    {
+        return false;
+    }
+    
+    CntAbstractView* nextView(NULL);
+    nextView = mFactory->createView(id);
+    nextView->setEngine(*mEngine);
+     
+    CntViewParameters viewParams;
+    
+    bool success = nextView->internalize(stream, viewParams);
+    
+    if (success)
+    {
+       if (nextView->isDefault())
+       {
+           mDefaults.insert(id, nextView);
+       }
+       QFlags<Hb::ViewSwitchFlag> flags;
+       mNavigator->next(id, flags);
+       
+       activateView(nextView, viewParams, flags);
+    }
+    else
+    {
+        mNavigator->clearViewStack();
+        delete nextView;
+    }
+      
+    CNT_EXIT  
+    return success;
+}
+
+QString CntDefaultViewManager::externalize(QDataStream& stream) const
+{
+    CNT_ENTRY
+    
+    mNavigator->externalize(stream);
+    
+    QString activity;
+    
+    if (mCurrent)
+    {
+        activity = mCurrent->externalize(stream); 
+    }
+       
+    CNT_EXIT
+    return activity;  
 }
 
 // End of File