phonebookui/pbkcommonui/src/cntdefaultviewmanager.cpp
changeset 59 a642906a277a
parent 47 7cbcb2896f0e
child 65 ae724a111993
equal deleted inserted replaced
47:7cbcb2896f0e 59:a642906a277a
   111     }
   111     }
   112     
   112     
   113     CNT_EXIT
   113     CNT_EXIT
   114 }
   114 }
   115 
   115 
   116 void CntDefaultViewManager::back(const CntViewParameters aArgs)
   116 void CntDefaultViewManager::back(const CntViewParameters aArgs, bool toRoot)
   117 {
   117 {
   118     CNT_ENTRY
   118     CNT_ENTRY
   119     
   119     
   120     mArgs.clear();
   120     mArgs.clear();
   121     
   121     
   122     QFlags<Hb::ViewSwitchFlag> flags;
   122     QFlags<Hb::ViewSwitchFlag> flags;
   123     int back = mNavigator->back( flags );
   123     int back = mNavigator->back( flags, toRoot );
   124 
   124 
   125     foreach( int k, aArgs.keys() )
   125     foreach( int k, aArgs.keys() )
   126     {
   126     {
   127         mArgs.insert( k, aArgs.value(k) );
   127         mArgs.insert( k, aArgs.value(k) );
   128     }
   128     }
   130 
   130 
   131     if (mArgs.value(EViewId).toInt() != noView)
   131     if (mArgs.value(EViewId).toInt() != noView)
   132     {
   132     {
   133         switchView( mArgs, flags );
   133         switchView( mArgs, flags );
   134     }
   134     }
   135     else {
   135     else 
       
   136     {
   136         // exiting application
   137         // exiting application
   137         cleanup();
   138         cleanup();
   138         closeApp();
   139         closeApp();
   139     }
   140     }
   140     
   141     
   190     
   191     
   191     if (mOldView) 
   192     if (mOldView) 
   192     {
   193     {
   193         connect(mMainWindow, SIGNAL(viewReady()), this, SLOT(deleteOldView()));
   194         connect(mMainWindow, SIGNAL(viewReady()), this, SLOT(deleteOldView()));
   194     }
   195     }
   195     else
       
   196     {
       
   197         mMainWindow->setInteractive( true );
       
   198     }
       
   199     
   196     
   200     CNT_EXIT
   197     CNT_EXIT
   201 }
   198 }
   202 
   199 
   203 void CntDefaultViewManager::deleteOldView()
   200 void CntDefaultViewManager::deleteOldView()
   207     disconnect(mMainWindow, SIGNAL(viewReady()), this, SLOT(deleteOldView()));
   204     disconnect(mMainWindow, SIGNAL(viewReady()), this, SLOT(deleteOldView()));
   208     
   205     
   209     if (mOldView)
   206     if (mOldView)
   210     {
   207     {
   211         mOldView->deactivate();
   208         mOldView->deactivate();
   212         
   209 
   213         // Due to something strange in wk16, this check will fail occationally and cause
   210         HbView* oldView = mOldView->view();
   214         // a memory leak... most likely when opening edit view for the first time
   211         mMainWindow->removeView( oldView );
   215         if (mCurrent == NULL || !mOldView->view()->isVisible())
   212 
   216         {
   213         if (!mOldView->isDefault())
   217             mMainWindow->removeView(mOldView->view());
   214         {
   218             
   215             delete mOldView;
   219             if (!mOldView->isDefault())
   216             mOldView = NULL;
   220             {
   217         }
   221                 delete mOldView;
   218         // If view id is not in defaults list, it means that view has changed
   222                 mOldView = NULL;
   219         // its opinnion about preserving state to true.
   223             }
   220         else if ( !mDefaults.contains(mOldView->viewId()) ) 
   224             // If view id is not in defaults list, it means that view has changed
   221         {
   225             // its opinnion about preserving state to true.
   222             mDefaults.insert( mOldView->viewId(), mOldView );
   226             else if ( !mDefaults.contains(mOldView->viewId()) ) 
   223         }
   227             {
   224     }
   228                 mDefaults.insert( mOldView->viewId(), mOldView );
       
   229             }
       
   230         }
       
   231     }
       
   232 
       
   233     mMainWindow->setInteractive(true);
       
   234     
   225     
   235     CNT_EXIT
   226     CNT_EXIT
   236 }
   227 }
   237 
   228 
   238 void CntDefaultViewManager::switchView(const CntViewParameters aArgs, QFlags<Hb::ViewSwitchFlag> flags)
   229 void CntDefaultViewManager::switchView(const CntViewParameters aArgs, QFlags<Hb::ViewSwitchFlag> flags)
   239 {
   230 {
   240     CNT_ENTRY
   231     CNT_ENTRY
   241     
   232 
   242     mMainWindow->setInteractive(false);
       
   243     int id = aArgs.value(EViewId).toInt();
   233     int id = aArgs.value(EViewId).toInt();
   244     if ( id != noView )
   234     if ( id != noView )
   245     {
   235     {
   246         CntAbstractView* nextView(NULL);
   236         CntAbstractView* nextView(NULL);
   247         if (mDefaults.contains(id))
   237         if (mDefaults.contains(id))
   266         removeCurrentView();
   256         removeCurrentView();
   267     }
   257     }
   268     
   258     
   269     CNT_EXIT
   259     CNT_EXIT
   270 }
   260 }
       
   261 
       
   262 int CntDefaultViewManager::currentViewId()
       
   263 {
       
   264     return mCurrent->viewId();
       
   265 }
       
   266 
   271 // End of File
   267 // End of File