camerauis/cameraapp/generic/src/CamPostCaptureViewBase.cpp
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/src/CamPostCaptureViewBase.cpp	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1039 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  Post-capture view class for Camera application*
-*/
-
-
-// INCLUDE FILES
-#include <sendnorm.rsg>
-#include <sendui.h>
-#include <SenduiMtmUids.h>
-#ifndef __WINS__
-//  #include <SFIUtilsAppInterface.h>
-#endif
-#include <eikbtgpc.h>
-#include <avkon.rsg>
-#include <cameraapp.rsg>
-#include <vgacamsettings.rsg>
-#include <aknradiobuttonsettingpage.h>
-#include <akntextsettingpage.h>
-#include <akntitle.h>  // CAknTitlePane
-#include <CMessageData.h>
-#include "MCamAddToAlbumObserver.h"
-#include "CamCollectionManagerAo.h"
-#include <glxmetadataviewutility.h>
-#include <glxcollectionselectionpopup.h>
-#include <akntoolbar.h>
-#include <aknbutton.h>
-#include <StringLoader.h>
-
-
-#include "Cam.hrh"
-#include "CamUtility.h"
-#include "CamPostCaptureViewBase.h"
-#include "CamAppController.h"
-#include "CamAppUi.h"
-#include "CamLogger.h"
-#include "camactivepalettehandler.h"
-#include "CamPostCaptureContainer.h"
-#include "camoneclickuploadutility.h"
-#include "CameraUiConfigManager.h"
-
-
-
-//CONSTANTS
-
-
-const TInt KCamSendUiBodySize = 0;
-const TInt KCamSendUiMessageSize = 0;
-
-
-const TUint KCamSendAsArrayGranularity = 1;
-
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::~CCamPostCaptureViewBase
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CCamPostCaptureViewBase::~CCamPostCaptureViewBase()
-  {
-  PRINT( _L("Camera => ~CCamPostCaptureViewBase") );
-  delete iSendAppUi;    
-  delete iSendMtmsToDim;
-  
-  if ( iAiwServiceHandler )
-    {
-    // unload service provider if any
-    iAiwServiceHandler->Reset();
-    delete iAiwServiceHandler;
-    }
-
-#ifndef __WINS__    
-  iSFIUtils = NULL;       // Not owned
-#endif // __WINS__
-
-
-  if ( iCollectionManagerCallBack )
-      {
-      delete iCollectionManagerCallBack;
-      iCollectionManagerCallBack = NULL;
-      }
-  delete iOneClickUploadUtility;
-
-  PRINT( _L("Camera <= ~CCamPostCaptureViewBase") );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamPostCaptureViewBase::HandleCommandL
-// Handle commands
-// -----------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::HandleCommandL( TInt aCommand )
-    {
-    PRINT1( _L("Camera => CCamPostCaptureViewBase::HandleCommandL (%d)"), aCommand )
-    CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-    switch ( aCommand )
-        {
-        case ECamCmdOneClickUpload:
-            {
-            iOneClickUploadUtility->UploadL(
-                    iController.CurrentFullFileName() );
-            break;
-            }
-        case ECamCmdToggleActiveToolbar:
-            {
-       		// If in the Landscape mode, MSK event is mapped 
-      	  	// like a normal selection key so that AP items
-       	  	// are selected and respective setting pages are launched´
-       	  	// refer to @ProcessCommandL, since we get here only from there
-       	    TKeyEvent aKeyEvent;
-    		aKeyEvent.iCode =  aKeyEvent.iRepeats = aKeyEvent.iModifiers = 0;
-   			aKeyEvent.iScanCode = EStdKeyDevice3;
-   			static_cast<CCamContainerBase*>
-       				( Container() )->OfferKeyEventL( aKeyEvent, EEventKey );	
-            break;
-            }
-        case EAknSoftkeyBack:
-            {
-            iController.DeepSleepTimerCancel();
-            appUi->HandleCommandL( aCommand );
-            }
-            break;
-
-        case ECamCmdSend:
-        case ECamCmdSendToCallerMultimedia:    
-        case ECamCmdQuickSend:
-            {
-/*            TBool inCall = EFalse;
-#if !defined(__WINS__) && !defined(__WINSCW__)
-            inCall = iSFIUtils->IsCLIValidL();
-#endif	            */
-            //use both inCall and InCallOrRinging() conditions to make sure if it is in call state
-            if ( /*inCall &&*/ iController.InCallOrRinging() )
-                {
-#ifndef __WINS__
-                DoInCallSendL();
-#endif
-                }
-            else
-                {
-                DoSendAsL();                    	
-                }    
-            }
-            break;
-
-        case ECamCmdExitStandby:
-        	{
-        	// leave standby mode
-        	ExitStandbyModeL();
-        	}
-        	break;
-        case ECamCmdToggleCourtesyUI:
-            {
-            /*
-            * EFalse --> We just hide the AP tool bar
-            * ETrue  --> We show the AP tool bar
-            * In this case, we dont toggle the UI between Show/Hide icons so
-            * we send EFalse as a parameter to SetAlwaysDrawPostCaptureCourtesyUI method
-            */
-            if ( appUi )
-                {
-                appUi->SetAlwaysDrawPostCaptureCourtesyUI( EFalse );
-                }
-            break;
-            }
-		case ECamCmdProperties:
-            {
-            // Passing the name of the current file
-            // Asking the MetadataViewUtility to lauch an view for us
-            CEikStatusPane* sp = StatusPane();
-            CAknTitlePane* title = 
-                static_cast<CAknTitlePane*>( sp->ControlL( 
-                        TUid::Uid( EEikStatusPaneUidTitle ) ) );
-            title->SetTextL( KNullDesC );
-            sp->MakeVisible( ETrue );
-            title->MakeVisible( ETrue );
-            iContainer->SetRect( AppUi()->ClientRect() );
-            GlxMetadataViewUtility::ActivateViewL( iController.CurrentFullFileName() );
-            static_cast<CCamContainerBase*>(iContainer)->CheckForFileName( ETrue );
-            title->MakeVisible( EFalse );
-            sp->MakeVisible( EFalse );
-            iContainer->SetRect( AppUi()->ApplicationRect() );                
-			break;
-            }
-        // Add Photo/Video to the album
-        case ECamCmdAddToAlbum:
-            {
-
-                /*
-                * Status = 0 ( User confirms add to album operation )
-                * Status = 1 ( User cancels add to album operation )
-                */
-                /*TInt status = ShowAddToAlbumConfirmationQueryL();
-                if ( status == 0 )
-                    {
-                    StartAddToAlbumOperationL();
-                    }
-                else
-                    { // Lint warnings
-                    }*/
-            StartAddToAlbumOperationL();
-            }
-            break;
-        default:
-            {
-            CCamViewBase::HandleCommandL( aCommand );
-            }
-        }
-
-    PRINT1( _L("Camera <= CCamPostCaptureViewBase::HandleCommandL (%d)"), aCommand )
-    }
-
-// -----------------------------------------------------------------------------
-// CCamPostCaptureViewBase::HandleControllerEventL
-// Handle user menu selections
-// -----------------------------------------------------------------------------
-//
-void 
-CCamPostCaptureViewBase::HandleControllerEventL( TCamControllerEvent aEvent, 
-                                                 TInt               /*aError*/ )
-  {
-  PRINT( _L("Camera => CCamPostCaptureViewBase::HandleControllerEventL") );
-    
-  switch( aEvent )
-    {
-    // -----------------------------------------------------
-    case ECamEventCallStateChanged:
-      {
-      PRINT( _L("Camera <> case ECamEventCallStateChanged") );
-      
-      CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );      
-      
-      // Reset the Send and Send to caller items in the active toolbar  
-      if ( !iEmbedded )
-        {
-		CCamActivePaletteHandler* apHandler = appUi->APHandler();    
-		// Hide Send or Send to caller
-        ResetSendAvailabilityL( apHandler );
-		if ( iController.IsTouchScreenSupported() )
-			{
-			UpdateToolbarIconsL();
-			}
-		else
-			{
-			UpdateActivePaletteItemsL();
-			}
-        }
-      break;
-      }
-    // -----------------------------------------------------
-    case ECamEventSaveComplete:
-    case ECamEventSnapshotReady:
-      {
-      if ( ECamEventSaveComplete == aEvent &&
-           iWaitForImageSave &&
-           !iController.IsTouchScreenSupported() )
-        {
-        UpdateActivePaletteItemsL();
-        }
-      static_cast<CCamContainerBase*>(iContainer)->CheckForFileName( EFalse );
-      // Check that the file that has just completed is the one just taken
-      if ( iController.SavedCurrentImage()
-        && iController.IsAppUiAvailable()            
-         )//&& iWaitForImageSave )
-        {
-        CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-        // check whether embedded or not
-        if ( iEmbedded )
-          {
-          //Do not show postcapture softkeys if we are still capturing or
-          //saving image
-          if ( iController.CurrentOperation() != ECamCapturing && 
-                  iController.CurrentOperation() != ECamCompleting )
-              {
-              if ( !appUi->IsSecondCameraEnabled() || appUi->IsQwerty2ndCamera() )  
-                  {
-                  SetSoftKeysL( R_CAM_SOFTKEYS_SELECT_DELETE__SELECT );
-                  }
-              else
-                  {
-                  SetSoftKeysL( R_CAM_SOFTKEYS_SELECT_DELETE__SELECT_SECONDARY );
-                  }
-              }
-          else
-              {
-              SetSoftKeysL( R_CAM_SOFTKEYS_BLANK );
-              }
-          }
-        else
-          {
-          appUi->RaisePostCaptureCourtesyUI();
-          if ( appUi->IsSecondCameraEnabled() && !appUi->IsQwerty2ndCamera() )
-              {
-              SetSoftKeysL( R_CAM_SOFTKEYS_OPTIONS_BACK_TOGGLETOOLBAR_PORTRAIT );
-              }
-          else if ( ECamViewStateBurstThumbnail == appUi ->CurrentViewState() )
-              {
-              SetSoftKeysL( R_CAM_SOFTKEYS_OPTIONS_BACK_TOGGLETOOLBAR_BURST );
-              }
-          else
-              {
-              SetSoftKeysL( R_CAM_SOFTKEYS_OPTIONS_BACK_TOGGLETOOLBAR );
-              }
-          
-          // image processing complete, enable gallery button
-          if( !iEmbedded )        
-              {
-              // fixed toolbar is used only with touch devices
-              if ( iController.IsTouchScreenSupported() )
-                  {
-                  CAknToolbar* fixedToolbar = Toolbar();
-                  if ( fixedToolbar )
-                      {
-                      fixedToolbar->SetItemDimmed( ECamCmdPhotos, EFalse, ETrue );
-                      fixedToolbar->SetItemDimmed( ECamCmdDelete, EFalse, ETrue );
-                      fixedToolbar->SetItemDimmed( ECamCmdOneClickUpload, EFalse, ETrue );
-                      fixedToolbar->SetItemDimmed( ECamCmdSend, EFalse, ETrue );
-                      }
-                  }
-              }
-          }
-        iWaitForImageSave = EFalse;
-        }
-      break;
-      }
-      
-    case ECamEventSliderClosed:
-      {
-      // if embedded and the slider is closed, close the menu
-      if( iEmbedded )
-        {
-        PRINT( _L("Camera => CCamPostCaptureViewBase -> ECamEventSliderClosed") );
-        StopDisplayingMenuBar();
-        }
-      }
-       
-    // -----------------------------------------------------
-    default:
-      break;
-    // -----------------------------------------------------
-    } // switch
-  PRINT( _L("Camera <= CCamPostCaptureViewBase::HandleControllerEventL") );        
-  }
-
-// -----------------------------------------------------------------------------
-// CCamPostCaptureViewBase::HandleForegroundEventL
-// Handle foreground event
-// -----------------------------------------------------------------------------
-//
-void 
-CCamPostCaptureViewBase::HandleForegroundEventL( TBool aForeground )
-  {    
-  PRINT( _L("Camera => CCamPostCaptureViewBase::HandleForegroundEventL") )
-  CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-  // -------------------------------------------------------
-  // Coming to foreground
-  if ( aForeground)
-    {
-    PRINT( _L("Camera <> CCamPostCaptureViewBase::HandleForegroundEventL: to foreground") )
-    if ( static_cast<CCamAppUiBase*>( AppUi() )->IsInPretendExit() )
-      {
-      PRINT( _L("Camera <> CCamPostCaptureViewBase::HandleForegroundEventL: app in pretend exit so not grabbing the engine") )
-      // The view can get a foreground event while the application is
-      // actually in a pretend exit situation. This occurs when the view switch
-      // was called before the exit event, but didn't complete until after the
-      // exit event. In this case the view should not register an interest in
-      // the engine as the application is really in the background and the resources
-      // need to be released
-      return;
-      }
-
-    // set embedded flag here
-    iEmbedded = appUi->IsEmbedded();
-    // need to update cba according to whether we are embedded or not
-    if ( iEmbedded )
-      {
-      PRINT( _L("Camera <> CCamPostCaptureViewBase::HandleForegroundEventL: embedded mode") );
-      //Do not show postcapture softkeys if we are still capturing or
-      //saving image
-      if ( iController.CurrentOperation() != ECamCapturing && 
-              iController.CurrentOperation() != ECamCompleting )
-          {
-          if ( !appUi->IsSecondCameraEnabled() || appUi->IsQwerty2ndCamera() )  
-              {
-              SetSoftKeysL( R_CAM_SOFTKEYS_SELECT_DELETE__SELECT );
-              }
-          else
-              {
-              SetSoftKeysL( R_CAM_SOFTKEYS_SELECT_DELETE__SELECT_SECONDARY );
-              }
-          }
-      else
-          {
-          SetSoftKeysL( R_CAM_SOFTKEYS_BLANK );
-          }
-      }
-    else
-      {
-      // ensure cba is reset if we're not embedded
-      if ( !iWaitForImageSave )
-        {
-        if ( static_cast<CCamAppUiBase*>( AppUi() )->IsSecondCameraEnabled() && 
-            !static_cast<CCamAppUiBase*>( AppUi() )->IsQwerty2ndCamera() )
-            {
-            SetSoftKeysL( R_CAM_SOFTKEYS_OPTIONS_BACK_TOGGLETOOLBAR_PORTRAIT );
-            }
-        else if ( ECamViewStateBurstThumbnail == appUi ->CurrentViewState() )
-            {
-            SetSoftKeysL( R_CAM_SOFTKEYS_OPTIONS_BACK_TOGGLETOOLBAR_BURST );
-            }
-        else
-            {
-            SetSoftKeysL( R_CAM_SOFTKEYS_OPTIONS_BACK_TOGGLETOOLBAR );
-            }
-        }
-      else
-        {
-        // still image not yet saved
-        // disable Options softkey and cancel post capture timer
-        // softkey will be re-enabled when image has been saved
-        if(appUi->IsSecondCameraEnabled() && !appUi->IsQwerty2ndCamera())
-            {
-            SetSoftKeysL( R_CAM_SOFTKEYS_BACK_SECONDARY );
-            }
-        else
-            {
-            SetSoftKeysL( R_CAM_SOFTKEYS_BACK );
-            }
-        
-        
-        // disable gallery button until image is processed
-        if( !iEmbedded )        
-            {
-            // fixed toolbar is used only with touch devices
-            if ( iController.IsTouchScreenSupported() )
-                {
-                CAknToolbar* fixedToolbar = Toolbar();
-                if ( fixedToolbar )
-                    {
-                    fixedToolbar->SetItemDimmed( ECamCmdPhotos, ETrue, ETrue );
-                    fixedToolbar->SetItemDimmed( ECamCmdDelete, ETrue, ETrue );
-                    fixedToolbar->SetItemDimmed( ECamCmdOneClickUpload, ETrue, ETrue );
-                    fixedToolbar->SetItemDimmed( ECamCmdSend, ETrue, ETrue );
-                    }
-                }
-            }
-        }
-      }
-    // Register that we still want to use the engine (to receive final snap image)
-    IncrementCameraUsers();
-    
-    iController.DeepSleepTimerStart();
-    CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-
-    if ( appUi && !iSuppressAPUntilCameraReady )
-      {
-      if(!iPartialBackground)
-          {
-          appUi->RaisePostCaptureCourtesyUI();
-          }
-      }
-    else if ( iSuppressAPUntilCameraReady ) 
-      {
-      iSuppressAPUntilCameraReady = EFalse;
-      }
-    iPartialBackground = EFalse;
-    
-    if ( appUi && iController.CameraSwitchQueued() )   
-        {
-        appUi->HandleCommandL( ECamCmdSwitchCamera );
-        }
-    }
-  // -------------------------------------------------------
-  // Going to background
-  else
-    {
-    if( iController.IsAppUiAvailable() ) 
-        {
-        iPartialBackground = ( (appUi->AppInBackground(ETrue) ) && (!appUi->AppInBackground(EFalse) ) );
-        }
-    else
-        {
-        iPartialBackground = EFalse;
-        }
-    PRINT( _L("Camera <> CCamPostCaptureViewBase::HandleForegroundEventL: to background") )
-    iController.DeepSleepTimerCancel();
-    // Register that we nolonger need the engine.
-    // Checks if we incremented the count.
-    DecrementCameraUsers();
-    }
-  // -------------------------------------------------------
-  PRINT( _L("Camera <= CCamPostCaptureViewBase::HandleForegroundEventL") )
-  }
-
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::DoActivateL
-// Activate this view
-// ---------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::DoActivateL( const TVwsViewId& aPrevViewId, TUid aCustomMessageId,
-                                                    const TDesC8& aCustomMessage )
-    {    
-    PRINT( _L( "Camera => CCamPostCaptureViewBase::DoActivateL" ) );    
-
-    CCamAppUi* appui = static_cast<CCamAppUi*>( AppUi() );
-
-    CCamViewBase::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
-
-    // fixed toolbar is used only with touch devices
-    if ( iController.IsTouchScreenSupported() )
-        {
-        CAknToolbar* fixedToolbar = Toolbar();
-
-        if ( fixedToolbar )
-            {
-            if( iEmbedded )        
-                {
-                fixedToolbar->SetToolbarVisibility( EFalse );
-                }
-            else
-                {
-                fixedToolbar->SetToolbarObserver( this );
-                fixedToolbar->SetToolbarVisibility( ETrue );   
-                UpdateToolbarIconsL();
-                }
-            }
-        }
-    
-
-    // show an empty pane
-    appui->PushDefaultNaviPaneL();
-
-    iController.AddControllerObserverL( this );
-
-    // if we're embedded use ROID(R_CAM_SOFTKEYS_SELECT_DELETE_ID)softkey labels
-    if ( iEmbedded )
-        {
-        //Do not show postcapture softkeys if we are still capturing or
-        //saving image
-        if ( iController.CurrentOperation() != ECamCapturing && 
-                iController.CurrentOperation() != ECamCompleting )
-            {
-            if ( !appui->IsSecondCameraEnabled() || appui->IsQwerty2ndCamera() )  
-                {
-                SetSoftKeysL( R_CAM_SOFTKEYS_SELECT_DELETE__SELECT );
-                }
-            else
-                {
-                SetSoftKeysL( R_CAM_SOFTKEYS_SELECT_DELETE__SELECT_SECONDARY );
-                }
-            }
-        else
-            {
-            SetSoftKeysL( R_CAM_SOFTKEYS_BLANK );
-            }
-        }
-    
-    iPreviousViewStillPreCapture = ( aPrevViewId.iViewUid.iUid == ECamViewIdStillPreCapture );
-    
-    // set flag for still and timelapse post capture only
-    // also check if the file has already been saved (possible if, for 
-    // example, MMC removal note is displayed
-    if ( iPreviousViewStillPreCapture && appui->CurrentBurstMode() != ECamImageCaptureBurst && 
-         !iController.SavedCurrentImage() )
-        {
-        PRINT( _L( "Camera <> CCamPostCaptureViewBase::DoActivateL .. set iWaitForImageSave true" ) );    
-        iWaitForImageSave = ETrue;
-        }
-    else
-        {
-        PRINT( _L( "Camera <> CCamPostCaptureViewBase::DoActivateL .. set iWaitForImageSave false" ) );    
-        iWaitForImageSave = EFalse;
-        if ( !iController.IsTouchScreenSupported() )
-            {
-            UpdateActivePaletteItemsL();
-            }
-        }
-    
-    // Make sure appuis CBA is not visible
-    CEikButtonGroupContainer* cba = AppUi()->Cba();
-    if( cba )
-        {
-        cba->MakeVisible( EFalse );
-        }
-
-    PRINT( _L( "Camera <= CCamPostCaptureViewBase::DoActivateL" ) );    
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::DoDeactivate
-// Deactivate this view
-// ---------------------------------------------------------------------------
-//
-void 
-CCamPostCaptureViewBase::DoDeactivate()
-    {
-    PRINT( _L( "Camera => CCamPostCaptureViewBase::DoDeactivate" ) );    
-
-    CCamViewBase::DoDeactivate();
-
-    iController.RemoveControllerObserver( this );
-    PRINT( _L( "Camera <= CCamPostCaptureViewBase::DoDeactivate" ) );    
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::DynInitMenuPaneL
-// Called when the menu pane is displayed
-// ---------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::DynInitMenuPaneL( TInt /*aResourceId*/,
-                                                CEikMenuPane* aMenuPane )
-    {
-    TInt itemPos = 0;
-        
-    if( !iController.IsTouchScreenSupported() )
-        {
-        if( aMenuPane->MenuItemExists(ECamCmdProperties, itemPos) )
-            {
-            aMenuPane->SetItemDimmed( ECamCmdProperties, ETrue );
-            }
-        if( aMenuPane->MenuItemExists(ECamCmdAddToAlbum, itemPos) )
-            {
-            aMenuPane->SetItemDimmed( ECamCmdAddToAlbum, ETrue );
-            }
-        } 
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::CCamPostCaptureViewBase
-// C++ constructor
-// ---------------------------------------------------------------------------
-//
-CCamPostCaptureViewBase::CCamPostCaptureViewBase( CCamAppController& aController )
-    : CCamViewBase( aController ),
-      iSendingCapabilities( KCamSendUiBodySize, 
-                            KCamSendUiMessageSize,
-                            TSendingCapabilities::ESupportsAttachments )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::ConstructL
-// Symbian OS 2nd phase constructor
-// ---------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::ConstructL()
-    {
-  
-    // create SendAs
-    iSendAppUi = CSendUi::NewL();
-
-    iSendMtmsToDim = new (ELeave) CArrayFixFlat<TUid>( KCamSendAsArrayGranularity );
-    iSendMtmsToDim->AppendL( KSenduiMtmIrUid );
-
-    iCollectionManagerCallBack = new (ELeave) 
-                                     CCamCollectionManagerAO( *this );
-    iAddToAlbumRequestOngoing = EFalse;
-
-
-/*#ifndef __WINS__
-    // Initialize SFIutils
-    CCamAppUi* appUi = static_cast<CCamAppUi*>( AppUi() );
-    iSFIUtils = appUi->SFIUtility();    
-#endif*/
-
-    iAiwServiceHandler = CAiwServiceHandler::NewL();
-    
-    // In touch screen devices, hide toolbar initially to prevent it from 
-    // being briefly visible in embedded mode
-    if ( iController.IsTouchScreenSupported() )
-        {
-        CAknToolbar* fixedToolbar = Toolbar();
-        if ( fixedToolbar )
-            {
-            fixedToolbar->SetToolbarVisibility( EFalse );
-            }
-        }
-
-    iOneClickUploadUtility = CCamOneClickUploadUtility::NewL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::CreateContainerL
-// Create container control
-// ---------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::CreateContainerL()
-    {
-    TRect rect;
-    
-    CCamAppUiBase* appUi =  static_cast<CCamAppUiBase*>( AppUi() );
-	TCamOrientation orientation = appUi->CamOrientation();
-
-    TRect screen;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen );
-
-    iContainer = CCamPostCaptureContainer::NewL( iController,
-                                                 *this,
-                                                 screen );
-
-    iContainer->SetMopParent( this );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::DoSendAsL
-// Use SendUI to create a message containing current image\video clip
-// ---------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::DoSendAsL() const
-    {
-    PRINT( _L("Camera => CCamPostCaptureViewBase::DoSendAsL") ) 
-    CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );
-    
-    if( !appUi->SendAsInProgress() )
-        {
-        appUi->SetSendAsInProgressL( ETrue );
-        CMessageData* messageData = CMessageData::NewLC();
-        TRAP_IGNORE( 
-            messageData->AppendAttachmentL( iController.CurrentFullFileName() );
-            iSendAppUi->ShowQueryAndSendL( messageData,iSendingCapabilities ) 
-            )
-        PRINT( _L("Camera <> CCamPostCaptureViewBase::DoSendAsL - finished sending") )
-        appUi->SetSendAsInProgressL( EFalse );        
-        CleanupStack::PopAndDestroy( messageData );
-        }
-    
-    PRINT( _L("Camera <= CCamPostCaptureViewBase::DoSendAsL") )
-    }
-    
-#ifndef __WINS__
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::DoInCallSendL
-// Handle send to caller functionality
-// ---------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::DoInCallSendL() const
-    {
-    PRINT( _L("Camera => CCamPostCaptureViewBase::DoInCallSendL()") ) 	
-    CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );
-    
-    if( !appUi->SendAsInProgress() )
-        {
-        appUi->SetSendAsInProgressL( ETrue );
-        CMessageData* messageData = CMessageData::NewLC();
-        TRAP_IGNORE( 
-            messageData->AppendAttachmentL( iController.CurrentFullFileName() );
-            iSendAppUi->CreateAndSendMessageL( KSenduiMtmMmsUid, messageData, KNullUid, ETrue )
-            )
-        PRINT( _L("Camera <> CCamPostCaptureViewBase::DoInCallSendL() - finished sending") )
-        appUi->SetSendAsInProgressL( EFalse );        
-        CleanupStack::PopAndDestroy( messageData );
-        }
-            
-    // SFIUtils replaced by using SendUI interface because 
-    // it cannot handle > 600 kB images properly
-    /*if ( iSFIUtils && iSFIUtils->IsCLIValidL() )
-        {
-        iSFIUtils->SendMediaFileL( iController.CurrentFullFileName() );
-        }*/
-    PRINT( _L("Camera <= CCamPostCaptureViewBase::DoInCallSendL()") ) 	    
-    }
-#endif
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::IsPostCapture
-// Returns whether the view is a postcapture view
-// ---------------------------------------------------------------------------
-//
-TBool CCamPostCaptureViewBase::IsPostCapture()
-    {
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::ResetSendAvailabilityL
-// Hides or shows the 'Send' and 'SendAs' items in the active toolbar
- // ---------------------------------------------------------------------------
-//   
-void CCamPostCaptureViewBase::ResetSendAvailabilityL( CCamActivePaletteHandler* aApHandler )
-    {
-    PRINT( _L("Camera => CCamPostCaptureViewBase::ResetSendAvailabilityL") );
-    // Hide Send or Send to caller
-//    TBool inCall = EFalse;
-/*#if !defined(__WINS__) && !defined(__WINSCW__)
-    inCall = iSFIUtils->IsCLIValidL();
-#endif	*/
-    if ( aApHandler )
-        {
-        //use both inCall and InCallOrRinging() conditions to make sure if it is in call state
-        aApHandler->SetItemVisible( ECamCmdSend, !( /*inCall &&*/ iController.InCallOrRinging() ) );
-        aApHandler->SetItemVisible( ECamCmdSendToCallerMultimedia, ( /*inCall &&*/ iController.InCallOrRinging() ) );
-
-        TBool uploadSupported = EFalse;
-        if ( iOneClickUploadUtility &&
-             iOneClickUploadUtility->OneClickUploadSupported() )
-            {
-            uploadSupported = ETrue;
-            }
-
-        aApHandler->SetItemVisible( ECamCmdOneClickUpload, uploadSupported );
-        }
-    PRINT( _L("Camera <= CCamPostCaptureViewBase::ResetSendAvailabilityL ") );	
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::StartAddToAlbumOperationL
-//
-// Starts calls to PostCapIdleCallBack during processor idle time. The calls
-// are continued until PostCapIdleCallBack is done.
-//    
-// ---------------------------------------------------------------------------
-void CCamPostCaptureViewBase::StartAddToAlbumOperationL()
-    {
-
-    //Currently we set multiple selection of albums
-    TBool   allowMultipleSelection = ETrue;
-    RArray<TUint32> selectedAlbumIds;
-    CleanupClosePushL( selectedAlbumIds );
-    // Launching the Pop-up menu with the list of albums
-    TRAPD( err, TGlxCollectionSelectionPopup::ShowPopupL(
-            selectedAlbumIds,
-            KGlxCollectionTypeIdAlbum,
-            allowMultipleSelection,
-            ETrue ) );
-        /*
-        * Use Collection Manager to add the albums and 
-        * before that check for the completion of the harvesting
-        */
-        if ( err == KErrNone && selectedAlbumIds.Count() > 0)
-            {
-            PRINT( _L("Camera => StartAddToAlbumOperationL: Before CCamCollectionManagerAO( *this ); ") );
-            PRINT( _L("Camera => StartAddToAlbumOperationL: After CCamCollectionManagerAO( *this ); and before calling StartCallBackAddToAlbumL()") );
-            if ( iCollectionManagerCallBack )
-                {
-                if ( !iAddToAlbumRequestOngoing )
-                    {
-                    // Checking if only one request is being processed
-                    iAddToAlbumRequestOngoing = ETrue;
-                    iCollectionManagerCallBack->StartCallBackAddToAlbumL(
-                                                selectedAlbumIds,
-                                                iController.CurrentFullFileName() );
-                    }
-                }
-            PRINT( _L("Camera => StartAddToAlbumOperationL: After StartCallBackAddToAlbumL() ") );
-            }
-        CleanupStack::PopAndDestroy( &selectedAlbumIds );
-        }
-
-    
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::ShowAddToAlbumConfirmationQueryL
-//
-// Opens a radiobutton setting page with "Yes" or "No" options
-// to actually confirm if we want to add the photo/video
-// to the albums
-//    
-// --------------------------------------------------------------------------- 
-TInt CCamPostCaptureViewBase::ShowAddToAlbumConfirmationQueryL()
-    {
-    TInt selectedIndex = 1; // default selection is "No"
-        // Add to Album setting page "Items"
-        CDesCArrayFlat* items = 
-                   iCoeEnv->ReadDesC16ArrayResourceL( 
-                                    R_CAM_ADDTOALBUM_SETTING_PAGE_LBX );
-        CleanupStack::PushL( items );  
-                
-        CAknRadioButtonSettingPage* dlg = new (ELeave) 
-                                    CAknRadioButtonSettingPage
-                                          (
-                                          R_CAM_ADDTOALBUM_SETTING_PAGE,
-                                          selectedIndex,
-                                          items 
-                                          );
-                
-        dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
-        CleanupStack::PopAndDestroy( items );
-    return selectedIndex;
-    }
-
-/*
-* CCamPostCaptureViewBase::AddToAlbumIdOperationComplete()
-*/
-void CCamPostCaptureViewBase::AddToAlbumIdOperationComplete()
-    { 
-    PRINT( _L("Camera => CCamPostCaptureViewBase::AddToAlbumIdOperationComplete() ... SUCCESS ") );
-    iAddToAlbumRequestOngoing = EFalse;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::UpdateToolbarIconsL
-// Update fixed toolbar icons according to current call state
-// ---------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::UpdateToolbarIconsL()
-    {
-    PRINT( _L("Camera => CCamPostCaptureViewBase::UpdateToolbarIconsL") );
-    // fixed toolbar is used only with touch devices
-    if ( iController.IsTouchScreenSupported() )
-        {
-        CAknToolbar* toolbar = Toolbar();
-        if ( toolbar )
-            {
-            CAknButton* button = dynamic_cast<CAknButton*>(
-                    toolbar->ControlOrNull( ECamCmdSend ) );
-            if ( button )
-                {
-                CAknButtonState* state = button->State();
-                if ( state )
-                    {
-                    HBufC* tooltipText = 
-							StringLoader::LoadLC( R_QTN_LCAM_TT_SEND );
-                    state->SetHelpTextL( *tooltipText );
-                    CleanupStack::PopAndDestroy( tooltipText );    
-                    }    
-                } 
-            button = dynamic_cast<CAknButton*>(
-                    toolbar->ControlOrNull( ECamCmdOneClickUpload ) );
-            if ( button )
-                {
-               CAknButtonState* state = button->State();
-               if ( state )
-                   {
-                   state->SetHelpTextL(
-                           iOneClickUploadUtility->ButtonTooltipL() );
-                   }
-               }
-           }
-        }
-    PRINT( _L("Camera <= CCamPostCaptureViewBase::UpdateToolbarIconsL") );    
-    }
-    
-// --------------------------------------------------------------------------- 
-// CCamPostCaptureViewBase::OfferToolbarEventL
-// Handle fixed toolbar events
-// ---------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::OfferToolbarEventL( TInt aCommand )
-    {
-    User::ResetInactivityTime();
-    HandleCommandL( aCommand );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamPostCaptureViewBase::UpdateActivePaletteItemsL
-// ---------------------------------------------------------------------------
-//
-void CCamPostCaptureViewBase::UpdateActivePaletteItemsL()
-    {
-    PRINT( _L("Camera => CCamPostCaptureViewBase::UpdateActivePaletteItemsL ") );
-    CCamAppUi* appUi =  static_cast<CCamAppUi*>( AppUi() );
-    TInt resId = 0;
-    if ( appUi )
-        {
-        TCamOrientation orientation = appUi->CamOrientation();
-        CCamActivePaletteHandler* apHandler = appUi->APHandler();
-        if( apHandler && !iEmbedded && ( orientation == ECamOrientationCamcorder ||
-                            orientation == ECamOrientationCamcorderLeft ||
-                            orientation == ECamOrientationDefault ||
-                            orientation == ECamOrientationPortrait ) )
-            {
-            iContainer->CreateActivePaletteL();
-            MActivePalette2UI* activePalette =
-                appUi->APHandler()->ActivePalette();
-
-            if( activePalette )
-                {
-                activePalette->SetGc();
-                }
-            // Install PostCapture AP items
-            if ( ECamControllerImage == iController.CurrentMode() ||
-                    iPreviousViewStillPreCapture )
-                {
-                PRINT( _L("Camera => ECamControllerImage == iController.CurrentMode() ") );
-                if ( appUi->IsSecondCameraEnabled() )
-                    {
-                    resId = R_CAM_STILL_POST_CAPTURE_AP_ITEMS_SECONDARY;
-                    }
-                else
-                    {     
-                    resId = R_CAM_STILL_POST_CAPTURE_AP_ITEMS;
-                    }
-                }
-            else
-                {
-                PRINT( _L("Camera => resId = R_CAM_VIDEO_POST_CAPTURE_AP_ITEMS; ") );
-                if ( appUi->IsSecondCameraEnabled() )
-                    {
-                    resId = R_CAM_VIDEO_POST_CAPTURE_AP_ITEMS_SECONDARY;
-					}
-                else
-				    {
-                    resId = R_CAM_VIDEO_POST_CAPTURE_AP_ITEMS;
-					}
-                }
-
-            if ( iOneClickUploadUtility &&
-                 iOneClickUploadUtility->OneClickUploadSupported() )
-                {
-                apHandler->SetOneClickUploadTooltipL(
-                        iOneClickUploadUtility->ButtonTooltipL() );
-                }
-
-            apHandler->InstallAPItemsL( resId );
-            // Hide Send or Send to caller
-            ResetSendAvailabilityL( apHandler );
-            apHandler->SetView( this );
-
-            // Make AP visible.
-            appUi->SetAlwaysDrawPostCaptureCourtesyUI( ETrue );
-
-            // if coming from background, in video as target mode
-            if ( iController.CurrentMode() != iController.TargetMode() &&
-                    ( ECamControllerVideo == iController.TargetMode() ) )
-                {
-                apHandler->SetVisibility( EFalse );
-                iSuppressAPUntilCameraReady = ETrue;
-                }
-            }
-        }
-    PRINT( _L("Camera <= CCamPostCaptureViewBase::UpdateActivePaletteItemsL ") );
-    }
-
-//  End of File