camerauis/cameraapp/generic/src/CamPreCaptureViewBase.cpp
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/src/CamPreCaptureViewBase.cpp	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1748 +0,0 @@
-/*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Base class for pre capture views*
-*/
-
-
-// INCLUDE FILES
-#include <eikbtgpc.h>
-#include <eikmenub.h>
-#include <musresourceproperties.h>
-#include <cameraplatpskeys.h>
-#include <cameraapp.rsg>
-#include <vgacamsettings.rsg>
-#include <akntoolbar.h>
-#include <akntoolbarextension.h>
-#include <aknbutton.h>
-#include <eiksoftkeypostingtransparency.h>
-#include <AknsUtils.h>
-#include <gulicon.h>
-
-#include "Cam.hrh"
-#include "CamAppUi.h"
-#include "CamUtility.h"
-#include "CamAppController.h"
-#include "CamPreCaptureContainerBase.h"
-#include "CamLogger.h"
-#include "CamPanic.h"
-#include "CamCaptureSetupMenu.h"
-#include "CamStandbyContainer.h"
-#include "CamSelfTimer.h"
-#include "CamTimer.h"
-#include "camactivepalettehandler.h"
-#include "CamPreCaptureViewBase.h"
-#include "CameraUiConfigManager.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "CamPreCaptureViewBaseTraces.h"
-#endif
-
-
-// ===========================================================================
-// Constants
-
-
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase destructor
-// 
-// ---------------------------------------------------------------------------
-//
-CCamPreCaptureViewBase::~CCamPreCaptureViewBase()
-  {
-  PRINT( _L("Camera => ~CCamPreCaptureViewBase") );
-  PRINT( _L("Camera <= ~CCamPreCaptureViewBase") );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamPreCaptureViewBase::HandleCommandL
-// Handle commands
-// -----------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::HandleCommandL( TInt aCommand )
-    {
-    PRINT( _L("Camera => CCamPreCaptureViewBase::HandleCommandL") );
-                  
-    switch ( aCommand )
-        {              
-        case ECamCmdShootSetup:
-            {
-            CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );
-            TBool selfTimerEnabled = appUi->SelfTimerEnabled();
-
-            if ( selfTimerEnabled )
-                {                
-                CCamSelfTimer* selftimer = appUi->SelfTimer();
-
-                // If self-timer is enabled, we need to check that it is in
-                // self-timer standby, ie Enabled but not Active (ie not 
-                // counting down)
-                if ( selftimer && !selftimer->IsActive() )
-                    {
-                    // In self-timer standby, pressing "select" button starts 
-                    // self-timer count down.  Pass this event on to AppUi.
-                    appUi->HandleCommandL( ECamCmdSelfTimerActivate );
-                    }
-                }
-            else 
-                {
-                // we are not in self -timer mode and check we are
-                // not already in capture setup mode
-                if ( !iCaptureSetupMenuModeActive )
-                    {
-                    // Ensure first item is selected in CSM.
-                    iCaptureSetupMenuLastItemIndex = 0;
-                    SwitchToCaptureSetupMenuModeL();
-                    }
-                    
-                }            
-            }
-            break;
-
-        // If an item in the capture setup menu has been selected.
-        case EAknSoftkeySelect:  
-            {
-            if ( ActiveSettingMode() == ECamSettingModeCaptureMenu )
-                {
-                iCaptureSetupMenuContainer->HandleCommandL( aCommand );
-                }
-            else
-                {          
-                CCamCaptureSetupViewBase::HandleCommandL( aCommand );             
-                }
-            }
-            break;
-            
-        // If capture setup menu is active and user presses softkey back,
-        //  deactivate the menu. This is EEikBidCancel which has the same
-        //  enumeration value as EAknSoftkeyCancel.
-        case EAknSoftkeyCancel:
-            {            
-            if ( ActiveSettingMode() == ECamSettingModeCaptureMenu )
-                {
-                ExitCaptureSetupMenuModeL();
-                }
-            else if ( iController.SequenceCaptureInProgress() )                         
-                // Check if currently capturing a burst, if so, cancel it
-                {
-                // If already received all the snapshots
-                if ( iController.AllSnapshotsReceived() ) 
-                    {
-                    // stop burst immediately
-                    iController.StopSequenceCaptureL();
-                    }
-                else
-                    {
-                    // capture the min images (2), before stopping the burst
-                    iController.SetKeyUp( ETrue );
-                    iController.SoftStopBurstL( ETrue );
-                    }
-                // Update CBA for setup pane usage
-                SetSoftKeysL( R_CAM_SOFTKEYS_BLANK ); 
-                }     
-            else
-                {
-                CCamCaptureSetupViewBase::HandleCommandL( aCommand );                                                                                       
-                }                        
-            }
-            break;
-        case EAknSoftkeyOptions:
-            {
-            // do nothing, the command is handled by the framework
-            }
-            break;
-            
-        // Note: CaptureSetupMenu mode also uses a 'Back' softkey but this has
-        // the command value EEikBidCancel            
-        case EAknSoftkeyBack:
-            {                                          
-            // exit to embedded app if we're embedded and in plain pre-capture
-            if ( iEmbedded 
-                && ActiveSettingMode() != ECamSettingModeScene 
-                && ActiveSettingMode() != ECamSettingModeInfoListBox )
-                {
-                CCamCaptureSetupViewBase::HandleCommandL( ECamCmdInternalExit );
-                }
-            else
-                {
-                CCamCaptureSetupViewBase::HandleCommandL( aCommand );              
-                }                           
-               
-            }
-            break;
-            
-        case EAknSoftkeyOk:
-            {                                                                
-                // Else pass on to lower levels
-                CCamCaptureSetupViewBase::HandleCommandL( aCommand );                                     
-            }
-            break;
-            
-        case ECamCmdToggleCourtesyUI:
-            {
-            CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-            
-            if ( appUi )
-                {
-                appUi->SetAlwaysDrawPreCaptureCourtesyUI( !appUi->AlwaysDrawPreCaptureCourtesyUI() );
-                }
-            }
-            break;
-       case ECamCmdPopUpMenuZoom: 
-            {
-            iContainer->ShowZoomPaneWithTimer();
-            }     
-            break;
-        case ECamCmdCaptureSetupFlashStill:
-            {
-            iToolbarExtensionInvisible = ETrue;
-           	CCamCaptureSetupViewBase::HandleCommandL( aCommand );
-            }     
-            break;
-        case ECamCmdInternalExit:
-            {
-            const TCamCaptureOperation operation( 
-                    iController.CurrentOperation() );
-            
-                 if ( ECamPaused == operation )
-                   {
-                   iController.StopVideoRecording();
-                   iController.SetCaptureKeyPressedWhileImageSaving( ETrue );
-                   }
-            StopViewFinder();
-            CCamCaptureSetupViewBase::HandleCommandL( aCommand );
-            if ( iController.IsTouchScreenSupported() )
-                {
-                CAknToolbar* fixedToolbar = Toolbar();
-                if ( fixedToolbar )
-                    {
-                    CAknToolbarExtension* extension = 
-                        fixedToolbar->ToolbarExtension();
-                    if ( extension )
-                        {
-                        // Reset toolbar extension button and view to closed state
-                        extension->SetShown( EFalse );
-                        extension->SetCurrentState( 0, EFalse );
-                        }
-                    }
-                }
-            }     
-            break;
-        default:
-            {                                       
-            CCamCaptureSetupViewBase::HandleCommandL( aCommand );                            
-            }
-        }
-    PRINT( _L("Camera <= CCamPreCaptureViewBase::HandleCommandL") );
-    }
-
-// -----------------------------------------------------------------------------
-// CCamPreCaptureViewBase::HandleForegroundEventL
-// Handle a move to the foreground
-// -----------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::HandleForegroundEventL( TBool aForeground )
-  {
-  PRINT1( _L( "Camera => CCamPreCaptureViewBase::HandleForegroundEventL %d" ), aForeground );    
-
-  CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );                
-  __ASSERT_DEBUG(appUi, CamPanic(ECamPanicNullPointer));
-
-  // -----------------------------------------------------
-  // coming to the foreground
-  if ( aForeground )
-    {
-    // Ignore foregrounding if view switch to postcapture anyway in progress.
-    if( appUi->TargetViewState() == ECamViewStatePostCapture
-     || appUi->TargetViewState() == ECamViewStateBurstThumbnail ) {
-      PRINT( _L( "Camera <= CCamPreCaptureViewBase::HandleForegroundEventL, ignored as going to postcapture") );    
-      return;
-    }
-    
-    
-    if ( !( iController.UiConfigManagerPtr() && 
-            iController.UiConfigManagerPtr()->IsUIOrientationOverrideSupported() ) )
-        {
-        if ( !iController.IsTouchScreenSupported() )
-            {
-            if ( !appUi->ActivePalette() )
-                {
-                SetupActivePaletteL();
-                }
-            else
-                {
-                appUi->APHandler()->UpdateActivePaletteL();
-                }
-            }
-        }
-    UpdateCbaL();
-    
-    // restart idle timer in any case
-     iController.StartIdleTimer();
-                                 
-    // If capture setup menu is active then ensure background is faded.
-    if ( iCaptureSetupMenuContainer )
-      {
-      iCaptureSetupMenuContainer->FadeBehind( ETrue );
-      }       
-
-    // coming to the foreground from an eikon server window
-    if ( iContinueInBackground )
-      {
-      iContinueInBackground = EFalse;
-
-      if ( !iController.IsViewFinding()  && !iSceneSettingModeActive )
-        {
-      	iController.StartViewFinder();
-        }
-      else if( iLocationTrailConnecting )
-          {
-          iLocationTrailConnecting = EFalse;
-          iController.StopViewFinder();
-          iController.StartViewFinder();
-          }
-      CCamCaptureSetupViewBase::HandleForegroundEventL( aForeground );
-
-      UpdateCbaL();
-      if ( iController.CameraSwitchQueued() )
-          {
-          appUi->HandleCommandL( ECamCmdSwitchCamera );
-          }
-      PRINT( _L( "Camera <= CCamPreCaptureViewBase::HandleForegroundEventL - continuing in background" ) );            
-      return;
-      }
-    
-    // This only happens when the app is first launched        
-    if ( !appUi->IsConstructionComplete() && 
-         !iController.UiConfigManagerPtr()->IsUIOrientationOverrideSupported())    
-      {
-      iActivateToStandby = ETrue;
-      if ( !iStandbyModeActive )
-        {
-        //iStandbyError = KErrNone;
-        appUi->SetStandbyStatus( KErrNone );        
-        PRINT( _L( "Camera <> CCamPreCaptureViewBase::HandleForegroundEventL: sending ECamCmdGoToStandby" ) );    
-        HandleCommandL( ECamCmdGoToStandby );
-        SetTitlePaneTextL();
-        }            
-      }
-
-    // Register that we want to use the engine
-    IncrementCameraUsers();
-    
-    if ( iController.UiConfigManagerPtr()->IsLensCoverSupported() )
-        {
-        if ( iController.CameraSwitchQueued() )
-            {
-            appUi->HandleCommandL( ECamCmdSwitchCamera );
-            }
-        else if ( appUi->TargetViewState() != ECamViewStatePostCapture )      
-            {   
-            TCamCameraMode mode = iController.CurrentMode(); 
-            if ( mode == ECamControllerVideo )
-                {
-                iController.EnterViewfinderMode( ECamControllerVideo );
-                }       
-            else if( mode == ECamControllerImage && !iSceneSettingModeActive )
-                {
-                iController.EnterViewfinderMode( ECamControllerImage );
-                }  
-            }
-        UpdateCbaL();
-        }
-      else
-        {
-        // Lens cover is not supported
-        if ( iController.CameraSwitchQueued() )   
-            {
-            appUi->HandleCommandL( ECamCmdSwitchCamera );
-            }
-        }
-
-
-      // Start the viewfinder unless the view is activating into standby mode
-      // in other modes than scene setting mode (there is no VF and this causes problems with DSA VF)
-      if ( ( !iStandbyModeActive || !iActivateToStandby )  && !iSceneSettingModeActive )
-        {
-        // If in embedded mode and image has been captured but view is not yet in
-        // postcapture view VF should not be started.
-        if( !iAssumePostCaptureView ) 
-            {
-            PRINT( _L("Camera <> CCamPreCaptureViewBase::HandleForegroundEventL start VF"))
-            StartViewFinder();
-            }
-        }
-                                    
-    
-    // <CAMERAAPP_CAPI_V2_MIGRATION/>
-    // if ( iController.EngineState() == ECamEngineStillCapturePrepared ||
-    //      iController.EngineState() == ECamEngineVideoCapturePrepared )
-    // if ( ( ECamImageOn|ECamVideoOn )& ( iController.CameraState() ) )
-    TCamCameraState state = iController.CameraState();
-    if( ECamCameraPreparedImage == state ||
-        ECamCameraPreparedVideo == state )     
-      {
-      // Now that the view is initialised, we may need to put up the
-      // mmc removal note. Perform this is required.
-      appUi->ShowMMCRemovalNoteIfRequiredL();                        
-      
-      if ( appUi && !iSceneSettingModeActive &&
-           !( iController.UiConfigManagerPtr() && 
-           iController.UiConfigManagerPtr()->IsUIOrientationOverrideSupported() ) )
-        {
-        appUi->RaisePreCaptureCourtesyUI(ETrue);
-        }
-      }
-    }
-  // -----------------------------------------------------
-  // Going to the background
-  else 
-      {
-      PRINT( _L( "Camera <> CCamPreCaptureViewBase::HandleForegroundEventL: to background" ) );    
-      // Not behind an eikon/avkon server window
-      TBool totalBackground = ETrue;
-      if ( iController.IsAppUiAvailable() )
-          {
-          totalBackground    = appUi->AppInBackground( EFalse );
-          }
-      // Either in foreground (moving to another view of our's)
-      // or if in background, then not just behind a notifier dialog.
-      if ( totalBackground )
-          {
-          ReleaseResources();
-          // hide the AP to avoid blinking when coming back from bg
-         if ( iController.UiConfigManagerPtr() && iController.UiConfigManagerPtr()->IsUIOrientationOverrideSupported() )
-            {
-            appUi->SetActivePaletteVisibility( EFalse );	
-            }      
-          }
-      // Behind a server window
-      else 
-          {
-          iContinueInBackground = ETrue;            
-          }
-
-      // reset post capture assumption flag since post capture is not
-      // used when video is stopped for usb 
-      if ( iController.IsCaptureStoppedForUsb() )
-          {
-          iAssumePostCaptureView = EFalse;
-          }
-      }
-  // -----------------------------------------------------
-
-  if ( !iStandbyModeActive )
-    {
-    // Inform the container of foreground state change
-    PRINT( _L( "Camera <> CCamPreCaptureViewBase::HandleForegroundEventL: inform container.." ) );        
-    iContainer->HandleForegroundEventL( aForeground );
-    }
-  else
-    {
-    // if in videocall, don't exit standby	
-    if ( iController.InVideocallOrRinging() )
-        {
-        iActivateToStandby = EFalse;
-        }
-    else    		
-        {   	
-        // If the view has been set to standby at activation then
-        // the first foreground event should not be used to exit standby
-        if ( !iActivateToStandby )
-           {
-           // inform standby container
-           PRINT( _L( "Camera <> CCamPreCaptureViewBase::HandleForegroundEventL: inform standby container.." ) );        
-           iStandbyContainer->HandleForegroundEventL( aForeground );
-           }  
-        else
-           {
-           iActivateToStandby = EFalse;
-           }
-        }
-    }
-         CCamCaptureSetupViewBase::HandleForegroundEventL( aForeground );
-  PRINT( _L( "Camera <= CCamPreCaptureViewBase::HandleForegroundEventL" ) );        
-  }
-
-// -----------------------------------------------------------------------------
-// CCamPreCaptureViewBase::SetLocationTrailConnecting
-// Set iLocationTrailConnecting flag.
-// -----------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::SetLocationTrailConnecting()
-    {
-    iLocationTrailConnecting = ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// CCamPreCaptureViewBase::SetPostCaptureViewAsumption
-// Set iAssumePostCaptureView flag.
-// -----------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::SetPostCaptureViewAsumption( TBool aAssumePostCaptureView )
-    {
-    iAssumePostCaptureView = aAssumePostCaptureView;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCamPreCaptureViewBase::HandleControllerEventL
-// Handle controller events
-// -----------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::HandleControllerEventL( TCamControllerEvent aEvent, 
-                                                     TInt /*aError*/ )
-  {
-  PRINT( _L( "Camera => CCamPreCaptureViewBase::HandleControllerEventL" ) );        
-  CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-
-  switch( aEvent )
-    { 
-    // ---------------------------------------------------
-    case ECamEventEngineStateChanged:
-      {
-      // Do not do softkey update if we are already exiting
-      // (AppUi is not available)
-      if( iController.IsAppUiAvailable() )
-      {          
-      PRINT( _L( "Camera <> case ECamEventEngineStateChanged" ) );        
-      // <CAMERAAPP_CAPI_V2_MIGRATION/>
-      // if ( iController.EngineState() == ECamEngineStillCapturePrepared ||
-      //      iController.EngineState() == ECamEngineVideoCapturePrepared )
-      if ( ECamCameraPreparedVideo == iController.CameraState() || 
-           ECamCameraPreparedImage == iController.CameraState() )
-        {
-        // Now that the view is initialised, we may need to put up the
-        // mmc removal note. Perform this is required.
-        PRINT( _L( "Camera <> show mmc note if needed" ) );        
-        appUi->ShowMMCRemovalNoteIfRequiredL();
-
-        // Do not update (show) precapture view toolbar if capturing is almost
-        // finished, otherwise there is flickering and finally inactive toolbar 
-        // when returning to prepactureview after image deletion. 
-        // This will happen only if camera is started directly to portrait 
-        // secondary camera i.e. Lens cover feature is supported
-        TBool noToolbar = (ECamCompleting == iController.CurrentOperation() ) && appUi->IsSecondCameraEnabled();
-
-        if ( ECamCameraPreparedImage == iController.CameraState() &&
-               !appUi->IsBurstEnabled() && !noToolbar )
-            {
-            // Also fixed toolbar might need to be enabled.
-            appUi->SetToolbarVisibility();
-            }
-        }
-      //Do not update CBA if we are capturing or paused to prevent blinking
-	  //during video capture saving and completing
-      if ( iController.CurrentVideoOperation() != ECamCapturing
-             && iController.CurrentVideoOperation() != ECamPaused )
-          {
-          PRINT( _L( "Camera <> Update CBA" ) );        
-          UpdateCbaL();
-          }
-      }
-      break;
-      }
-
-    case ECamEventSliderClosed:
-      {
-      // if embedded and the slider is closed, 
-      // the menu items may change, close the menu   
-      if( iEmbedded )
-        {
-        PRINT( _L("Camera <> CCamPreCaptureViewBase: calling StopDisplayingMenuBar") );
-        StopDisplayingMenuBar();
-        }
-      break;
-      }
-    default:
-      {
-      // Other events => no action.
-      break;
-      }
-    } // switch
-  PRINT( _L( "Camera <= CCamPreCaptureViewBase::HandleControllerEventL" ) );        
-  }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::DoActivateL
-// Activate this view
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::DoActivateL( const TVwsViewId& aPrevViewId, 
-                                          TUid aCustomMessageId,
-                                          const TDesC8& aCustomMessage )                                                                                    
-    {
-    OstTrace0( CAMERAAPP_PERFORMANCE_DETAIL, CCAMPRECAPTUREVIEWBASE_DOACTIVATEL, "e_CCamPreCaptureViewBase_DoActivateL 1" );
-    PRINT( _L( "Camera => CCamPreCaptureViewBase::DoActivateL" ) );
-    iAssumePostCaptureView = EFalse;
-
-    ShowToolbarOnViewActivation( EFalse );
-    /*if ( iController.UiConfigManagerPtr() && 
-         iController.UiConfigManagerPtr()->IsLocationSupported() )
-        {
-        if( ECamLocationOn == iController.IntegerSettingValue( ECamSettingItemRecLocation ) )
-            {
-            if( ECamActiveCameraPrimary == iController.ActiveCamera() && ECamStandby != iController.CurrentOperation() )
-                {
-                PRINT( _L("Camera: CCamPreCaptureViewBase::DoActivateL - primary camera, start location/gps") )
-                iController.StartLocationTrailL();
-                }
-            else // Secondary camera 
-                {
-                PRINT( _L("Camera: CCamPreCaptureViewBase::DoActivateL - secondary camera, stop location trail") )
-                iController.StopLocationTrail();
-                }
-            }
-        }*/
- 
-    CCamAppUi* appUi =  static_cast<CCamAppUi*>( AppUi() );
-	__ASSERT_DEBUG(appUi, CamPanic(ECamPanicNullPointer));
-    if(!appUi->DrawPreCaptureCourtesyUI() && !iController.IsTouchScreenSupported())
-        {
-        if ( !appUi->IsSecondCameraEnabled() )
-            {	
-            SetCourtesySoftKeysL();
-            }
-        appUi->SetActivePaletteVisibility( EFalse );
-        }
-    else if (appUi->DrawPreCaptureCourtesyUI())
-        {
-         Cba()->MakeVisible( ETrue );
-        }
-
-    if ( appUi->SettingsLaunchedFromCamera() )
-    	{
-    	if ( TUid::Uid( ECamCmdInternalExit ) == aCustomMessageId )
-    	    {
-            appUi->SettingsPluginExitedL( ECameraInternalExit );
-    	    }
-    	else if ( TUid::Uid ( EAknSoftkeyBack ) == aCustomMessageId )
-    	    {
-    	    appUi->SettingsPluginExitedL( ECameraPluginExit );
-    	    }
-    	else
-    	    {
-    	    // do nothing
-    	    }
-    	}
-
-    CCamCaptureSetupViewBase::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
-
-    if ( appUi->IsSecondCameraEnabled() && !appUi->IsQwerty2ndCamera() )  
-        {
-        StatusPane()->MakeVisible( ETrue );
-        }
-    else
-        {
-        StatusPane()->MakeVisible( EFalse );
-        }
-    if ( iController.IsTouchScreenSupported() )
-        {
-        CAknToolbar* fixedToolbar = Toolbar();
-        if ( fixedToolbar )
-            {
-            // If video call is active, toolbar is set to dimmed, that user cannot use it
-            TInt callType( EPSCTsyCallTypeUninitialized );
-            RProperty::Get( KPSUidCtsyCallInformation, KCTsyCallType, callType );
-            if ( callType == EPSCTsyCallTypeH324Multimedia)
-                {
-                fixedToolbar->SetDimmed( ETrue ); 
-                }
-            else
-                {
-                fixedToolbar->SetDimmed( EFalse ); 
-                }
-            fixedToolbar->SetToolbarObserver( this );
-            appUi->SetToolbarVisibility( );
-
-            // Make sure toolbar extension button has no background
-            CAknToolbarExtension* extension = fixedToolbar->ToolbarExtension();
-            if ( extension )
-                {
-                extension->SetButtonFlags(
-                    extension->ButtonFlags() | KAknButtonNoFrame );
-                extension->DrawDeferred();
-                }
-            }
-        }
-
-    appUi->PushNaviPaneCounterL();
-
-    // Pass on the ID of the previous view to the container    
-    TCamAppViewIds viewId = static_cast<TCamAppViewIds>( aPrevViewId.iViewUid.iUid );
-    iContainer->SetPreviousViewId( viewId );
-
-    iController.AddControllerObserverL( this );    
-
-    TBool transparentCba = EFalse;
-
-    UpdateCbaL();
-    
-    switch( aCustomMessageId.iUid )
-      {
-      // -------------------------------
-      // Standby with or without error
-      case ECamViewMessageStandby:
-        PRINT( _L( "Camera <> CCamPreCaptureViewBase::DoActivateL: custom message ECamViewMessageStandby" ) );
-        //iStandbyError = KErrNone;
-        //appUi->SetStandbyStatus( KErrNone );
-        SetSceneSettingMode( EFalse );
-        iActivateToStandby = ETrue;
-        HandleCommandL( ECamCmdGoToStandby );
-        return;
-//        break;
-      // -------------------------------
-      // Scene setting mode
-      case ECamViewMessageSceneSettingList:
-        PRINT( _L( "Camera <> CCamPreCaptureViewBase::DoActivateL: custom message ECamViewMessageSceneSettingList" ) );
-        SwitchToSceneSettingModeL();
-        break;
-      // -------------------------------
-      default:
-        // Other precapture modes have transparent CBA buttons
-        // except secondary camera
-        if ( !appUi->IsSecondCameraEnabled() || appUi->IsQwerty2ndCamera() )  
-            {
-            transparentCba = ETrue;
-            }
-        // don't start VF if faster startup is used when cameraswitch is queued,
-        // need to switch to maincamera first
-        if ( !( iController.UiConfigManagerPtr() && 
-                iController.UiConfigManagerPtr()->IsUIOrientationOverrideSupported() &&
-                iController.CameraSwitchQueued() ) )
-            {
-            StartViewFinder();
-            }
-        
-        break;
-      // -------------------------------
-      }
-    
-    // Here we check if the previous view is ViaPlayer play mode
-    if ( !iSceneSettingModeActive  && 
-         ( aPrevViewId.iViewUid.iUid != ECamViewIdViaPlayerPlayBack ) && 
-         !( iController.UiConfigManagerPtr() && 
-         iController.UiConfigManagerPtr()->IsUIOrientationOverrideSupported() ) )
-        {
-        appUi->RaisePreCaptureCourtesyUI(ETrue);
-        }
-    
-    // Reset iContinueInBackground flag, which is set when app temporarily
-    // goes behind a system window and there's no need to free resources.
-    // Resetting this flag only in ReleaseResources causes problems (at least)
-    // if power key is pressed during burst capture.
-    iContinueInBackground = EFalse;
-    
-    // Reset iDeactivateToStandby flag, which is used when the PreCapture view
-    // goes to the Standby mode, at which point the UI should not reactivate the
-    // viewfinder.
-    iDeactivateToStandby = EFalse;
-
-
-    EikSoftkeyPostingTransparency::MakeTransparent(
-        *Cba(), transparentCba );
-    // Make sure appuis CBA is not visible
-    CEikButtonGroupContainer* cba = AppUi()->Cba();
-    if( cba )
-        {
-        cba->MakeVisible( EFalse );
-        }
-
-    PRINT( _L( "Camera <= CCamPreCaptureViewBase::DoActivateL" ) );
-    OstTrace0( CAMERAAPP_PERFORMANCE_DETAIL, DUP1_CCAMPRECAPTUREVIEWBASE_DOACTIVATEL, "e_CCamPreCaptureViewBase_DoActivateL 0" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::DoDeactivate
-// Deactivate this view
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::DoDeactivate()
-    {                              
-    PRINT( _L( "Camera => CCamPreCaptureViewBase::DoDeactivate" ) );
-    CCamCaptureSetupViewBase::DoDeactivate();
-                               
-    iController.RemoveControllerObserver( this );
-    
-    if ( iController.IsTouchScreenSupported() )
-        {
-        CAknToolbar* fixedToolbar = Toolbar();
-        if ( fixedToolbar )
-            {
-            CAknToolbarExtension* extension = fixedToolbar->ToolbarExtension();
-            if ( extension )
-                {
-                // Reset toolbar extension button and view to closed state
-                extension->SetShown( EFalse );
-                extension->SetCurrentState( 0, EFalse );
-                }
-            }
-        }
-    ReleaseResources();
-
-    if ( iController.UiConfigManagerPtr()->IsLensCoverSupported() &&
-         iController.ActiveCamera() == ECamActiveCameraSecondary ) 
-        {
-        if ( iController.CameraSwitchQueued() )
-            {
-            CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-            // If camera switch fails, main camera is used instead
-            TRAP_IGNORE( appUi->HandleCommandL( ECamCmdSwitchCamera ) );
-            }
-        }
-
-    PRINT( _L( "Camera <= CCamPreCaptureViewBase::DoDeactivate" ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CCamPreCaptureViewBase::HandleFocusLossL
-// Handle change of focus
-// -----------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::HandleFocusLossL()
-    {
-    PRINT( _L( "Camera => CCamPreCaptureViewBase::HandleFocusLossL" ) );    
-    // if the application was already in the background, but behind an
-    // eikon server window, then handle backgrounding properly now.
-    // Otherwise the backgrounding will be handled in the normal
-    // HandleForeground() method.
-    if ( iContinueInBackground )
-        {
-        ReleaseResources();
-        // Inform the container of foreground state change
-        iContainer->HandleForegroundEventL( EFalse );
-        }
-    CCamCaptureSetupViewBase::HandleFocusLossL();
-
-    // dismiss menu bar if open
-    StopDisplayingMenuBar();
-    PRINT( _L( "Camera <= CCamPreCaptureViewBase::HandleFocusLossL" ) );
-    }
-                          
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::SwitchToCaptureSetupModeL
-// Switches the current mode to capture setup and activates a 
-// specific control..
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::SwitchToCaptureSetupModeL( TInt aSetupCommand )
-    {
-    
-    PRINT( _L("Camera => CCamPreCaptureViewBase::SwitchToCaptureSetupModeL") );
-    
-    // Remove the view's main container, and add the capture setup 
-    // control associated with the input command to the container stack.
-    CCamCaptureSetupViewBase::SwitchToCaptureSetupModeL( aSetupCommand );
-
-    // only remove the capture setup menu container after 
-    // the switch completes successfully
-    RemoveCaptureSetupMenuContainers();
-
-    SetCaptureSetupModeActive(ETrue);
-    
-    PRINT( _L("Camera <= CCamPreCaptureViewBase::SwitchToCaptureSetupModeL") );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::SwitchToSceneSettingModeL
-// Switches the current mode to scene setting and activates a 
-// specific control.
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::SwitchToSceneSettingModeL()
-    {
-    // Remove the view's main container, and add the capture setup 
-    // control associated with the input command to the container stack.
-    CCamCaptureSetupViewBase::SwitchToSceneSettingModeL();
- 
-    // only remove the capture setup menu container after 
-    // the switch completes successfully
-    RemoveCaptureSetupMenuContainers();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ExitCaptureSetupModeL
-// Exits capture setup mode and activates the capture setup menu control.
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::ExitCaptureSetupModeL()
-    {
-    PRINT( _L("Camera => CCamPreCaptureViewBase::ExitCaptureSetupModeL") )
-     
-    CCamCaptureSetupViewBase::ExitCaptureSetupModeL();
-    
-    iController.SetViewfinderWindowHandle( &iContainer->Window() );
-    
-    if( !iController.IsViewFinding() && !iController.InVideocallOrRinging() )
-      {
-      TCamCameraMode mode = iController.CurrentMode();    
-	  PRINT1( _L("Camera => CCamPreCaptureViewBase::ExitCaptureSetupModeL - CurrentMode %d"), mode );        
-      if (mode == ECamControllerVideo )
-    	{
-   	    PRINT( _L("Camera => CCamPreCaptureViewBase::ExitCaptureSetupModeL - ECamControllerVideo") );        
-    	iController.EnterViewfinderMode( ECamControllerVideo );
-    	}    	
-      else
-    	{
-   	    PRINT( _L("Camera => CCamPreCaptureViewBase::ExitCaptureSetupModeL - ECamControllerImage") );        
-      iController.EnterViewfinderMode( ECamControllerImage );
-    	}    	               
-      }
-    
-    // make sure app is not left in an invalid state if a leave
-    // occurs after exiting the capture setup
-    iCaptureSetupMenuModeActive = EFalse;
-    static_cast<CCamAppUiBase*>( AppUi() )->PushNaviPaneCounterL();
-	CCamAppUiBase* appUi =  static_cast<CCamAppUiBase*>( AppUi() );
-	if( appUi->ActiveCamera() == ECamActiveCameraSecondary )
-		{
-		PRINT( _L("Camera => CCamPreCaptureViewBase::ExitCaptureSetupModeL ###") )
-    	SwitchToCaptureSetupMenuModeL();
-		}
-	
-    PRINT( _L("Camera <= CCamPreCaptureViewBase::ExitCaptureSetupModeL") )
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ExitSceneSettingModeL
-// Exits scene setting mode and activates the capture setup menu control.
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::ExitSceneSettingModeL()
-    {
-    CCamCaptureSetupViewBase::ExitSceneSettingModeL();
-    // make sure app is not left in an invalid state if a leave
-    // occurs after exiting the scene setting mode
-    iCaptureSetupMenuModeActive = EFalse;
-    static_cast<CCamAppUiBase*>( AppUi() )->PushNaviPaneCounterL();
-
-	CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );
-    if ( appUi->ActiveCamera() == ECamActiveCameraPrimary )
-        {
-        if ( iDeactivateToStandby || iController.InVideocallOrRinging() )
-            {
-            // don't restart VF if we are going to standby mode
-            }
-        else
-            {
-            StartViewFinder();
-            }
-        }
-    else
-		{
-		SwitchToCaptureSetupMenuModeL();
-		}
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ExitInfoListBoxL
-// Exits InfoListBox
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::ExitInfoListBoxL()
-    {
-    CCamCaptureSetupViewBase::ExitInfoListBoxL();
-    // make sure app is not left in an invalid state if a leave
-    // occurs after exiting the scene setting mode
-    iCaptureSetupMenuModeActive = EFalse;
-    static_cast<CCamAppUiBase*>( AppUi() )->PushNaviPaneCounterL();
-
-	CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );
-    if ( appUi->ActiveCamera() == ECamActiveCameraPrimary )
-        {
-        StartViewFinder();
-        }
-    else
-		{
-		SwitchToCaptureSetupMenuModeL();
-		}
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ExitAllModesL
-// Revert to normal mode
-// -----------------------------------------------------------------------------
-//
-void 
-CCamPreCaptureViewBase::ExitAllModesL()
-  {
-  PRINT( _L("Camera => CCamPreCaptureViewBase::ExitAllModesL" ) );
-  iController.DeepSleepTimerCancel();
-  TCamSettingMode currentMode = ActiveSettingMode();
-  
-  CCamAppUi* appUi =  static_cast<CCamAppUi*>( AppUi() );
-  
-  switch ( currentMode )
-    {
-    case ECamSettingModeCaptureMenu:
-      {
-      PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitAllModesL cap setup menu" ))
-      ExitCaptureSetupMenuModeL();
-      break;
-      }
-    case ECamSettingModeCapture:
-      {
-      PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitAllModesL capture" ))
-      
-      ExitCaptureSetupModeL();
-      if( appUi->ActiveCamera() == ECamActiveCameraSecondary  )
-        {
-        PRINT( _L("Camera <> CamPreCaptureViewBase::ExitAllModesL ##" )) 
-        ExitCaptureSetupMenuModeL();
-        }
-      break;
-      }
-    case ECamSettingModeScene:
-      {
-      PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitAllModesL scene" ))
-	  ExitSceneSettingModeL();
-      if( appUi->ActiveCamera() == ECamActiveCameraSecondary  )
-        {
-        PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitAllModesL ##" )) 
-        ExitCaptureSetupMenuModeL();
-        }
-	  if(Id() == TUid::Uid(ECamViewIdVideoPreCapture))
-		{
-		iToolbarExtensionInvisible = ETrue;
-		}
-      break;
-      }
-    case ECamSettingModeInfoListBox:
-      {
-      PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitAllModesL generic" ))
-      ExitInfoListBoxL();
-      if( appUi->ActiveCamera() == ECamActiveCameraSecondary  )
-        {
-        PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitAllModesL ##" )) 
-        ExitCaptureSetupMenuModeL();
-        }            
-      break;
-      }            
-    default:
-      {
-      iToolbarExtensionInvisible = ETrue;    	
-      }
-      break;
-    }
-
-  if ( iController.InVideocallOrRinging() )
-      {
-      return;
-      }	
-      
-  appUi->HandleCommandL(ECamCmdSwitchToPrecapture);
-
-  if ( !( iController.UiConfigManagerPtr() && 
-            iController.UiConfigManagerPtr()->IsUIOrientationOverrideSupported() ) )
-    {
-    TCamOrientation orientation = appUi->CamOrientation();
-    if ( orientation == ECamOrientationCamcorder || orientation == ECamOrientationCamcorderLeft )
-      {
-      // force update of active palette
-      appUi->APHandler()->UpdateActivePaletteL();                    
-      }
-
-    if ( appUi && !iSceneSettingModeActive )
-      {
-      appUi->RaisePreCaptureCourtesyUI(ETrue);
-      }
-    }
-    
-  if ( iController.IsTouchScreenSupported() )
-      {
-      CAknToolbar* fixedToolbar = Toolbar();
-      CAknToolbarExtension* extension = fixedToolbar->ToolbarExtension();
-      
-      //Only active view will set toolbar extension visibility.
-
-      if(this->IsForeground())
-          {
-          if ( extension && iToolbarExtensionInvisible == EFalse )
-              {
-              extension->SetShown( ETrue );
-              } 
-          else if( extension )
-              {
-              extension->SetShown( EFalse );
-              }
-          }
-
-      iToolbarExtensionInvisible = EFalse;
-      }
-    
-  PRINT( _L("Camera <= CCamPreCaptureViewBase::ExitAllModesL" ) );
-  }
-
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ActiveSettingMode
-// Returns the active setting mode
-// ---------------------------------------------------------------------------
-//
-CCamPreCaptureViewBase::TCamSettingMode 
-CCamPreCaptureViewBase::ActiveSettingMode()
-    {
-    if ( iCaptureSetupModeActive )
-        {
-        return ECamSettingModeCapture;
-        }
-    else if ( iSceneSettingModeActive )
-        {
-        return ECamSettingModeScene;
-        }
-    else if ( iCaptureSetupMenuModeActive )
-        {
-        return ECamSettingModeCaptureMenu;
-        }
-    else if ( iInfoListBoxActive )
-      {
-      return ECamSettingModeInfoListBox;
-        }
-    else
-        {
-        return ECamSettingModeNone;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::CCamPreCaptureViewBase
-// C++ constructor
-// ---------------------------------------------------------------------------
-//
-CCamPreCaptureViewBase::CCamPreCaptureViewBase( CCamAppController& aController )
-    : CCamCaptureSetupViewBase( aController )   
-    {
-    iCaptureSetupMenuModeActive = EFalse;
-    iAssumePostCaptureView = EFalse;
-    }                          
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ConstructL
-// Symbian OS 2nd phase constructor
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::ConstructL()
-    {
-    PRINT( _L("Camera => CCamPreCaptureViewBase::ConstructL") )    
-    /* Use AppUi to get this info.
-    // Get the id of Eikon Server window group
-    iEikonServerWindowGroupId =
-        iCoeEnv->WsSession().FindWindowGroupIdentifier( 0, KEikonServer );
-
-    iBTServerWindowGroupId =  
-    		static_cast<CCamAppUi*>( iEikonEnv->AppUi() )->BTServerId();
-    */
-    UpdateToolbarIconsL();
-    PRINT( _L("Camera <= CCamPreCaptureViewBase::ConstructL") )    
-    }
-                          
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::CleanupCaptureSetupMenu
-// Cleanup the capture menu control if a leave occurs
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::CleanupCaptureSetupMenu( TAny* aAny )
-    {
-    CCamPreCaptureViewBase* view = static_cast<CCamPreCaptureViewBase*>( aAny );
-    if ( view->iCaptureSetupMenuContainer )
-        {
-        view->AppUi()->RemoveFromStack( view->iCaptureSetupMenuContainer );
-        delete view->iCaptureSetupMenuContainer;
-        view->iCaptureSetupMenuContainer = NULL;
-        }
-    // reset the active mode
-    view->iCaptureSetupMenuModeActive = EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::SwitchToCaptureSetupMenuModeL
-// Switches the current mode to capture setup menu and activates 
-// the capture setup menu control
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::SwitchToCaptureSetupMenuModeL()
-    {
-    PRINT( _L("Camera => CCamPreCaptureViewBase::SwitchToCaptureSetupMenuModeL"))
-    __ASSERT_DEBUG( !iCaptureSetupMenuContainer, CamPanic( ECamPanicResourceLeak ) );
-
-    // Create the relevant capture setup menu, e.g. video or photo...
-    CreateCaptureSetupMenuL();
-
-    // Cleanup the view correctly if a leave occurs
-    CleanupStack::PushL( TCleanupItem( CleanupCaptureSetupMenu, this ) );
-    
-    PRINT( _L("Camera => CCamPreCaptureViewBase::SwitchToCaptureSetupMenuModeL start vf"))
-    StartViewFinder();
-    iCaptureSetupMenuContainer->SetMopParent( this );   
-    // Activate the menu control and mode.
-    AppUi()->AddToStackL( *this, iCaptureSetupMenuContainer );
-    iCaptureSetupMenuContainer->ActivateL();
-    // UpdateCbaL need this boolean to be set in
-    // order for the correct CBA to be returned
-    iCaptureSetupMenuModeActive = ETrue;
-    UpdateCbaL();
-    CleanupStack::Pop(); // CleanupCaptureSetupMenu
-
-    // Fade the container that is behind.
-    iCaptureSetupMenuContainer->FadeBehind( ETrue );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ExitCaptureSetupMenuModeL
-// Exits capture setup menu mode and activates the original precapture
-// view container that was active before entering this mode.
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::ExitCaptureSetupMenuModeL()
-    {
-    PRINT( _L("Camera => CCamPreCaptureViewBase::ExitCaptureSetupMenuModeL() ") );
-    
-    if ( !iCaptureSetupMenuModeActive )
-        {
-        return;
-        }
-    iCaptureSetupMenuModeActive = EFalse;
-    iContainer->MakeVisible( ETrue );  
-
-    iCaptureSetupMenuContainer->FadeBehind( EFalse );
-    AppUi()->RemoveFromStack( iCaptureSetupMenuContainer );
-    delete iCaptureSetupMenuContainer;
-    iCaptureSetupMenuContainer = NULL;
-    UpdateCbaL();
-    SetTitlePaneTextL();
-    
-    PRINT( _L("Camera <= CCamPreCaptureViewBase::ExitCaptureSetupMenuModeL() ") );
-    }                         
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::SwitchToStandbyModeL
-// Exits pre capture mode and activates the standby container
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::SwitchToStandbyModeL( TCamAppViewIds aViewId, TInt aError )
-    {
-    iAssumePostCaptureView = EFalse;
-    iDeactivateToStandby = ETrue; // avoid viewfinder startup
-    iContinueInBackground = EFalse; 
-    
-    switch ( ActiveSettingMode() )
-        {
-        case ECamSettingModeCaptureMenu:   
-            {
-            ExitCaptureSetupMenuModeL();            
-            }
-            break;
-        case ECamSettingModeScene:
-            {
-            ExitSceneSettingModeL();
-            ExitCaptureSetupMenuModeL();
-            }
-            break;
-        case ECamSettingModeCapture:
-            {
-            ExitCaptureSetupModeL();
-            ExitCaptureSetupMenuModeL();
-            }
-            break;
-			case ECamSettingModeInfoListBox:
-            {
-            ExitInfoListBoxL();
-            ExitCaptureSetupMenuModeL();
-            }				            
-            break;
-        default:  
-            break;
-        }    
-
-
-    // Hide the active palette
-    static_cast<CCamAppUi*>( iEikonEnv->AppUi() )
-        ->SetActivePaletteVisibility( EFalse );
-
-    // stop viewfinding
-    StopViewFinder();
-
-    CCamViewBase::SwitchToStandbyModeL( aViewId, aError );
-    
-    iDeactivateToStandby = EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ExitStandbyModeL
-// Exits standby mode and activates the previous pre-capture container
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::ExitStandbyModeL()
-    {
-    PRINT( _L("Camera => CCamPreCaptureViewBase::ExitStandbyModeL" ) )
-    // start view finding
-    iAssumePostCaptureView = EFalse;
-    CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-    if( appUi->AppInBackground(ETrue ))
-        {
-        PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitStandbyModeL: global note in foreground." ) )
-        return;
-        }
-    if( iController.UiConfigManagerPtr() && 
-        iController.UiConfigManagerPtr()->IsUIOrientationOverrideSupported() &&
-        iController.CurrentMode() != ECamControllerIdle )
-        {
-        PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitStandbyModeL: not in standby, returning without exit" ) )    
-        return;    
-        } 
-    
-    if( !appUi->DrawPreCaptureCourtesyUI() && 
-        !iController.IsTouchScreenSupported() &&
-        !appUi->IsSecondCameraEnabled() )
-        {
-        SetCourtesySoftKeysL();
-        }
-    
-    // In case coming back after dismissing videocall, need
-    // to register as using engine    
-    if( !appUi->IsInPretendExit() )
-        {
-        IncrementCameraUsers();
-        }
-        
-    PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitStandbyModeL: start vf" ) )
-    StartViewFinder();
-
-    //static_cast<CCamAppUi*>( iEikonEnv->AppUi() )
-    //    ->APHandler()->UpdateActivePaletteL();
-    TBool uiOverride = iController.UiConfigManagerPtr() && iController.UiConfigManagerPtr()->IsUIOrientationOverrideSupported();
-    if ( !uiOverride )
-        {
-        SetupActivePaletteL();
-        }
-
-    // Dimming is set if video call is active, remove dimming if video call is not active any more
-    TInt callType( EPSCTsyCallTypeUninitialized );
-    RProperty::Get( KPSUidCtsyCallInformation, KCTsyCallType, callType );
-    if ( callType != EPSCTsyCallTypeH324Multimedia
-         && iController.IsTouchScreenSupported() )
-        {
-        CAknToolbar* toolbar = Toolbar();
-        if (toolbar)
-            {
-            toolbar->SetDimmed( EFalse );
-            }
-        }    
-    CCamViewBase::ExitStandbyModeL();
-    
-    // Need to update appui viewstate
-    PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitStandbyModeL: emit ECamCmdSwitchToPrecapture" ) )
-    appUi->HandleCommandL( ECamCmdSwitchToPrecapture );
-    
-    if ( uiOverride )
-        {
-        appUi->SetActivePaletteVisibility( EFalse );    
-        }
-    else
-        {    
-        appUi->RaisePreCaptureCourtesyUI(ETrue);
-        }
-    
-    if ( iController.UiConfigManagerPtr() && 
-                iController.UiConfigManagerPtr()->IsLocationSupported() )
-	   {
-	   if( ECamLocationOn == iController.IntegerSettingValue( ECamSettingItemRecLocation ) )
-		   {
-		   if( ECamActiveCameraPrimary == iController.ActiveCamera() )
-			   {
-			   PRINT( _L("Camera: CCamPreCaptureViewBase::ExitStandbyModeL - primary camera, start location/gps") )
-			   iController.StartLocationTrailL();
-			   }
-		   }
-	   }
-    PRINT( _L("Camera <= CCamPreCaptureViewBase::ExitStandbyModeL" ) )
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::IsOkOptionsMenuAllowed
-// Checks whether or not the ok aoptions menu should be displayed
-// ---------------------------------------------------------------------------
-//
-#if 0
-TBool CCamPreCaptureViewBase::IsOkOptionsMenuAllowed()
-    {
-    CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );
-    // Check if we are in selftimer mode, scene setting mode,
-    // capture setup menu mode or if a capture mode preparation is
-    // taking place.  If so, do NOT show the menu
-    if ( ( appUi && !appUi->SelfTimerEnabled() ) &&
-        !iController.CaptureModeTransitionInProgress() &&
-            ActiveSettingMode() == ECamSettingModeNone && !appUi->IsEmbedded() )
-        {
-        return ETrue;
-        }
-    else
-        {
-        return EFalse;
-        }
-    }
-#endif // 0
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::RemoveCaptureSetupMenuContainers
-// Removes the capture setup menu and original container from
-// the container stack
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::RemoveCaptureSetupMenuContainers()
-    {
-    // Store the current item index value for the menu, so that it can
-    // be reused when the CSM container is reactivated from leaving
-    // a capture setup control.
-    if ( iCaptureSetupMenuContainer )
-        {
-        iCaptureSetupMenuLastItemIndex = 
-            iCaptureSetupMenuContainer->CurrentItemIndex();
-        iCaptureSetupMenuContainer->FadeBehind( EFalse );
-        
-        // Remove the Capture Setup Menu from the container stack.
-        AppUi()->RemoveFromStack( iCaptureSetupMenuContainer );
-        }
-    delete iCaptureSetupMenuContainer;
-    iCaptureSetupMenuContainer = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::DynInitSwitchCameraMenuItemL
-// Set up the text for switch camera in the options menu
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::DynInitSwitchCameraMenuItemL( CEikMenuPane* aMenuPane )
-    {
-    CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-    // Check if only 1 camera available
-    if ( !iController.UiConfigManagerPtr()->IsSecondaryCameraSupported() )
-        {
-        aMenuPane->SetItemDimmed( ECamCmdSwitchCamera, ETrue );
-        }
-    else 
-        {
-        // if secondary camera is enabled
-        if ( appUi->IsSecondCameraEnabled() )
-            {
-            if( iController.UiConfigManagerPtr()->IsLensCoverSupported() )
-                {
-                TInt slideState = iController.CameraSlideState();
-                if ( slideState == CameraPlatPSKeys::EClosed )
-                    {
-                    aMenuPane->SetItemDimmed( ECamCmdSwitchCamera, ETrue );
-                    }
-                else
-                    {                               
-                    aMenuPane->SetItemTextL( ECamCmdSwitchCamera, 
-                            R_CAM_PRE_CAPTURE_MENU_PRIMARY_CAMERA );
-                    }   
-                }
-            else
-                {
-                aMenuPane->SetItemTextL( ECamCmdSwitchCamera, 
-                        R_CAM_PRE_CAPTURE_MENU_PRIMARY_CAMERA );
-                }
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ReleaseResources
-// Stop the viewfinder and inform the controller that this view has finished
-// with the engine
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::ReleaseResources()
-    {
-    PRINT( _L("Camera => CCamPreCaptureViewBase::ReleaseResources") );
-    iContinueInBackground = EFalse;
-    StopViewFinder();
-  
-    // Make sure that video recording is stopped (if ongoing).
-    iController.StopVideoRecording();
-    
-    // if the application is not closing then self-timer mode must be disabled.
-    // otherwise it will be deleted as part of the application shut down process
-    if ( !iController.IsInShutdownMode() )
-        {
-        // Do not do softkey update if we are already exiting
-        // (AppUi is not available)
-        if( iController.IsAppUiAvailable() )
-            {
-            // Ensure AppUi has had self-timer mode disabled
-            CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );
-            if ( appUi )
-                {
-                TRAP_IGNORE( appUi->SelfTimerEnableL( ECamSelfTimerDisabled ) );
-                }
-            }
-        }
-    // Register that we no longer need the engine
-    // Checks if we incremented the count.
-    DecrementCameraUsers();
-    PRINT( _L("Camera <= CCamPreCaptureViewBase::ReleaseResources") );
-    }
-  
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::IsPreCapture
-// Returns whether the view is a precapture view
-// ---------------------------------------------------------------------------
-//
-TBool CCamPreCaptureViewBase::IsPreCapture()
-    {
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::OfferToolbarEventL
-// Handle fixed toolbar and toolbar extension events
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::OfferToolbarEventL( TInt aCommand )
-    {
-    iController.StartIdleTimer();
-    HandleCommandAoL( aCommand );
-    
-    if ( aCommand == ECamCmdSceneSettingList ||
-         aCommand == ECamCmdCaptureSetupFlashStill ||
-         aCommand == ECamCmdCaptureSetupSelfTimer ||
-         aCommand == ECamCmdCaptureSetupSceneStill ||
-         aCommand == ECamCmdCaptureSetupSceneVideo ||
-         aCommand == ECamCmdCaptureSetupColourFilterStill ||
-         aCommand == ECamCmdCaptureSetupColourFilterVideo ||
-         aCommand == ECamCmdCaptureSetupWhiteBalanceStill ||
-         aCommand == ECamCmdCaptureSetupWhiteBalanceVideo ||
-         aCommand == ECamCmdCaptureSetupExposureStill ||
-         aCommand == ECamCmdCaptureSetupLightSensitivityStill ||
-         aCommand == ECamCmdCaptureSetupContrastStill ||
-         aCommand == ECamCmdCaptureSetupImageSharpnessStill )
-        {
-        // These commands imply a container switch.
-        // iItemAccessedViaAP must be set so that softkeys work correctly.
-        CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );
-        appUi->APHandler()->iItemAccessedViaAP = ETrue;
-        iController.DeepSleepTimerStart();
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::SetIconL
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::SetIconL(
-        CAknButton* aButton,
-        const TDesC& aIconFilename,
-        TInt aIconId,
-        TInt aMaskId,
-        MAknsSkinInstance* aSkinInstance, 
-        const TAknsItemID& aSkinItemId )
-    {
-    CGulIcon* icon = AknsUtils::CreateGulIconL(
-        aSkinInstance,
-        aSkinItemId,
-        aIconFilename,
-        aIconId,
-        aMaskId );
-    icon->SetBitmapsOwnedExternally( EFalse ); // CGulIcon owns bitmaps
-    CAknButtonState* state = aButton->State( 0 );
-    if ( state )
-        {
-        state->SetIcon( icon );
-        icon = NULL;
-        }
-    else
-        {
-        delete icon;
-        icon = NULL;
-        }
-	
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::HandleAppEvent <<virtual>>
-//
-// ---------------------------------------------------------------------------
-//
-void 
-CCamPreCaptureViewBase::HandleAppEvent( const TCamAppEvent& aEvent )
-    {
-    PRINT1( _L("Camera => CCamPreCaptureViewBase::HandleAppEvent, event:%d"), aEvent );
-    CCamViewBase::HandleAppEvent( aEvent );
-
-    if ( aEvent == ECamAppEventFocusGained && iController.InVideocallOrRinging() )
-        {
-        TRAP_IGNORE( BlankSoftkeysL() );
-        if ( iController.IsTouchScreenSupported() )
-            {
-            CAknToolbar* toolbar = Toolbar();
-            if ( toolbar )
-                {
-                toolbar->SetToolbarVisibility( EFalse );
-                }
-            }
-        }
-    
-    if ( aEvent == ECamAppEventFocusGained )
-        {
-        if ( iController.UiConfigManagerPtr()->IsLensCoverSupported() && 
-             iController.CameraSwitchQueued() ) // fake exit done
-            {
-            iController.CheckSlideStatus(); // Do we still need to change cam?
-            CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-            // How about portrait/landscape 2nd camera? 
-            if ( !iController.CameraSwitchQueued() && 
-                 appUi->IsSecondCameraEnabled() ) 
-                {
-                TBool landscape2ndCam = appUi->IsQwerty2ndCamera( ETrue );
-                if( appUi->CamOrientation() != ECamOrientationPortrait )
-                    {
-                    if ( !landscape2ndCam )
-                        {
-                        PRINT( _L("Camera => CCamPreCaptureViewBase::HandleAppEvent, change to portrait 2nd cam."));
-                        iController.SetCameraSwitchRequired( 
-                                                 ESwitchSecondaryOrientation );  
-                        }
-                    }
-                else
-                    {
-                    if ( landscape2ndCam )
-                        {
-                        PRINT( _L("Camera => CCamPreCaptureViewBase::HandleAppEvent, change to landscape 2nd cam."));
-                        iController.SetCameraSwitchRequired( 
-                                                 ESwitchSecondaryOrientation );
-                        }
-                    }
-                }
-            }
-        if ( iController.UiConfigManagerPtr()->IsLensCoverSupported() && 
-             iController.ActiveCamera() == ECamActiveCameraPrimary )
-            {
-            if ( iController.CameraSwitchQueued() )
-                {
-                CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-                // If camera switch fails, main camera is used instead
-                TRAP_IGNORE( appUi->HandleCommandL( ECamCmdSwitchCamera ) );
-                }
-            }
-        }
-     
-    PRINT( _L("Camera <= CCamPreCaptureViewBase::HandleAppEvent") );
-    }
-
-// ---------------------------------------------------------------------------
-// SetupActivePaletteL
-// 
-// Helper method to set up the Active Palette.
-// If needed, a new instance of AP is created.
-// Otherwise the existing AP items are cleared.
-// New AP items are setup with resource from GetAPResourceId.
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::SetupActivePaletteL()
-    {
-    if( iContainer && !iController.IsTouchScreenSupported() )
-        {
-        CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-        TCamOrientation orientation = appUi->CamOrientation();
-
-        if( ECamOrientationCamcorder == orientation
-                || ECamOrientationCamcorderLeft == orientation 
-                || ECamOrientationPortrait == orientation )
-            {
-            // Creates Active Palette, sets items and sets view.
-            // Only AP2 supported.
-            static_cast<CCamPreCaptureContainerBase*>( iContainer )
-            ->SetupActivePaletteL( this );
-            }
-        else
-            {
-            // No AP  
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::ToolbarButtonById
-//
-// ---------------------------------------------------------------------------
-//
- CAknButton* CCamPreCaptureViewBase::ToolbarButtonById(const TCamCmd aCommandId) const
-     {
-     CAknButton* button = NULL;
-     if(iController.IsTouchScreenSupported())
-         {
-         CAknToolbar* toolbar = Toolbar();
-         if(toolbar)
-             {
-             button = static_cast<CAknButton*>
-                         (toolbar->ControlOrNull(aCommandId));
-			 if(NULL == button)
-                 {
-                 CAknToolbarExtension* extension = toolbar->ToolbarExtension();
-                 if(extension)
-                     {
-                     button = static_cast<CAknButton*>
-                                 (extension->ControlOrNull(aCommandId));
-					 }
-                 }
-             }
-         }
-     return button;
-     }
-     
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::HideButton
-//
-// ---------------------------------------------------------------------------
-//
- void CCamPreCaptureViewBase::HideButton(const TCamCmd aCommandId)
-     {
-     if(iController.IsTouchScreenSupported())
-          {
-          CAknToolbar* toolbar = Toolbar();
-          if(toolbar)
-              {
-              if(toolbar->ControlOrNull(aCommandId))            
-                  {
-                  toolbar->HideItem(aCommandId,ETrue,ETrue);
-                  }
-              else if( toolbar->ToolbarExtension() && 
-				toolbar->ToolbarExtension()->ControlOrNull(aCommandId))
-                  {
-                  TRAP_IGNORE(toolbar->ToolbarExtension()->HideItemL(aCommandId,ETrue));
-                  }
-			  else
-				 {
-				 //Do Nothing
-				 }
-              }
-          }
-     }
-	 
-// ---------------------------------------------------------------------------
-// CCamPreCaptureViewBase::RedrawToolBar
-//
-// ---------------------------------------------------------------------------
-//
-void CCamPreCaptureViewBase::RedrawToolBar()
-	{
-	CEikonEnv::Static()->WsSession().ClearAllRedrawStores();
-	}
-//  End of File