camerauis/cameraapp/generic/src/CamViewBase.cpp
branchRCL_3
changeset 15 bf64cebf4673
parent 13 38fb6f7eacd5
child 16 53c8aa5d97a3
--- a/camerauis/cameraapp/generic/src/CamViewBase.cpp	Tue Apr 27 16:19:06 2010 +0300
+++ b/camerauis/cameraapp/generic/src/CamViewBase.cpp	Tue May 11 15:56:11 2010 +0300
@@ -197,7 +197,7 @@
     PRINT( _L("CCamViewBase::DoActivateL call deactivate"));    
     TBool wasCameraUser = IsCameraUser();    
 
-    DoDeactivate();
+    PrepareDeactivate();
     // since we still use it
     if( wasCameraUser )
       {
@@ -212,9 +212,15 @@
   if ( !iContainer )
     {
     CreateContainerL();
+    
+    if( iTempContainer )
+        {
+        AppUi()->RemoveFromStack( iTempContainer );
+        }
     AppUi()->AddToStackL( *this, iContainer );
     iContainer->ActivateL();
     }
+  PostDeactivate();
   
   SetTitlePaneTextL();
   
@@ -278,6 +284,57 @@
 	}
 
 // ---------------------------------------------------------------------------
+// CCamViewBase::PrepareDeactivate
+// Prepare deactivation of this view
+// ---------------------------------------------------------------------------
+//
+void CCamViewBase::PrepareDeactivate()
+    {
+    PRINT( _L("Camera => CCamViewBase::PrepareDeactivate" ));
+      // Both standard container and standby container should be deactivated
+      // Store them for temporal variables until new containers have been
+      // created.
+      if ( iStandbyContainer ) // implies IsInStandbyMode
+          {
+          AppUi()->RemoveFromStack( iStandbyContainer );
+          iTempStandbyContainer=iStandbyContainer;
+          iStandbyContainer = NULL;
+          SetStandbyModeActive( EFalse );
+          }
+
+      if ( iContainer )
+          {
+          iTempContainer=iContainer;
+          iContainer = NULL;
+          }          
+    PRINT( _L("Camera <= CCamViewBase::PrepareDeactivate" ));    
+    }
+
+
+// ---------------------------------------------------------------------------
+// CCamViewBase::PostDeactivate
+// Completed prepared deactivation of this view
+// ---------------------------------------------------------------------------
+//
+void CCamViewBase::PostDeactivate()
+    {
+    PRINT( _L("Camera => CCamViewBase::PostDeactivate" ));    
+    // Both standard container and standby container should be deactivated
+    if ( iTempStandbyContainer ) // implies IsInStandbyMode
+        {
+        delete iTempStandbyContainer;
+        iTempStandbyContainer = NULL;
+        }
+
+    if ( iTempContainer )
+        {
+        delete iTempContainer;
+        iTempContainer = NULL;
+        }              
+    PRINT( _L("Camera <= CCamViewBase::PostDeactivate" ));    
+    }
+
+// ---------------------------------------------------------------------------
 // CCamViewBase::CCamViewBase
 // C++ constructor
 // ---------------------------------------------------------------------------