camerauis/cameraapp/generic/src/CamSceneSettingContainer.cpp
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/src/CamSceneSettingContainer.cpp	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1636 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Container class for scene settings view*
-*/
-
-// INCLUDE FILES
-#include "CamSceneSettingContainer.h"
-#include "CamUtility.h"
-#include "CamPanic.h"
-
-#include <eikenv.h>
-#include <eikappui.h> // For CCoeAppUiBase
-#include <eikapp.h>   // For CEikApplication
-#include <stringloader.h>
-#include <AknBidiTextUtils.h>
-#include <AknsUtils.h>
-#include <AknsDrawUtils.h>
-#include <cameraapp.mbg>
-#include <BitmapTransforms.h>
-#include <AknUtils.h>
-#include <AknLayoutFont.h>
-#include <barsRead.h>    // resource reader
-
-#include <cameraapp.rsg>
-#include <vgacamsettings.rsg>
-
-
-// CONSTANTS
-
-const TInt KStepSize = 4;  // Pixels the animation moves each timer event 
-
-const TInt KCornerSize = 3;
-const TInt KBorderSize = 1;
-
-const TReal KNumIconStages = 7;
-
-#define KRgbGray4 TRgb(0xEEEEEE)
-#define KRgbGray3 TRgb(0xDDDDDD)
-#define KRgbGray2 TRgb(0xCCCCCC)
-#define KRgbGray1 TRgb(0xBBBBBB)
-
-
-#ifdef __WINS__
-static const TInt KTimerPeriod = 10000;
-#else
-static const TInt KTimerPeriod = 150000;
-#endif
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// TCamAnimationData::Initialise
-// Sets up the animation data
-// -----------------------------------------------------------------------------
-//
-void TCamAnimationData::Initialise( const TRect& aRect )
-    {
-    iDeltaY = KStepSize;
-    // scrolling needs to be faster (2 times?) than the fade in/out
-    iScrollingY = iDeltaY * 2;
-
-    iCurrentRect = aRect;
-    iPreviousRect = iCurrentRect;
-    iCurrentRectOld = iCurrentRect;
-    iPreviousRectOld = iCurrentRect;
-
-    iStep = 0;
-    iPenFadeOut = KRgbBlack;
-    iPenFadeIn = KRgbWhite;
-    iScrolling = EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingItem::NewL
-// Symbian OS two-phased constructor
-// ---------------------------------------------------------------------------
-//
-CCamSceneSettingItem* CCamSceneSettingItem::NewL( TCamSceneId aSceneId,
-                                                  const TSize& aLargeBmpSize,
-                                                  const TSize& aSmallBmpSize )
-    {
-    CCamSceneSettingItem* self =  new( ELeave ) CCamSceneSettingItem( aSceneId );
-    CleanupStack::PushL( self );
-    self->ConstructL( aLargeBmpSize, aSmallBmpSize );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingItem::~CCamSceneSettingItem
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CCamSceneSettingItem::~CCamSceneSettingItem()
-  {
-  PRINT( _L("Camera => ~CCamSceneSettingItem") );
-  delete iBitmapSmall;
-  delete iBitmap1;
-  delete iBitmap2;
-  delete iBitmap3;
-  delete iBitmap4;
-  delete iBitmap5;
-  delete iBitmap6;
-  delete iBitmapLarge;
-  delete iTitle;
-  delete iDescription;
-  PRINT( _L("Camera <= ~CCamSceneSettingItem") );
-  }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingItem::SceneId
-// Returns the sceneId
-// ---------------------------------------------------------------------------
-//
-TCamSceneId CCamSceneSettingItem::SceneId() const
-    {
-    return iSceneId;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingItem::Icon
-// Returns the bitmap specified by aSize
-// ---------------------------------------------------------------------------
-//
-const CFbsBitmap* CCamSceneSettingItem::Icon( TCamIconSize aSize ) const
-    {
-    if ( aSize == ECamIconSizeLarge )
-        {
-        return iBitmapLarge;
-        }
-    else if ( aSize == ECamIconSizeSmall )
-        {
-        return iBitmapSmall;
-        }
-    else if ( aSize == ECamIconSizeOne )
-        {
-        return iBitmap1;
-        }
-    else if ( aSize == ECamIconSizeTwo )
-        {
-        return iBitmap2;
-        }
-    else if ( aSize == ECamIconSizeThree )
-        {
-        return iBitmap3;
-        }
-    else if ( aSize == ECamIconSizeFour )
-        {
-        return iBitmap4;
-        }
-    else if ( aSize == ECamIconSizeFive )
-        {
-        return iBitmap5;
-        }
-    else if ( aSize == ECamIconSizeSix )
-        {
-        return iBitmap6;
-        }
-    else
-        {
-        return iBitmapLarge;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingItem::Title
-// returns the title text
-// ---------------------------------------------------------------------------
-//
-const HBufC* CCamSceneSettingItem::Title() const
-    {
-    return iTitle;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingItem::Description
-// returns the title text
-// ---------------------------------------------------------------------------
-//
-const HBufC* CCamSceneSettingItem::Description() const
-    {
-    return iDescription;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingItem::ConstructL
-// Symbian OS second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingItem::ConstructL( const TSize& aLargeBmpSize, 
-                                       const TSize& aSmallBmpSize )
-    {
-    TInt bmpLarge = 0;
-    TInt bmpSmall = 0;
-    TInt title = 0;
-    TInt description = 0;
-    switch ( iSceneId )
-        {
-        case ECamSceneNight:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_night_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_night_l;
-            title = R_CAM_SCENE_TITLE_NIGHT;
-            description = R_CAM_SCENE_DESCRIPTION_NIGHT;
-            }
-            break;
-        case ECamSceneMacro:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_macro_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_macro_l;    
-            title = R_CAM_SCENE_TITLE_MACRO;
-            description = R_CAM_SCENE_DESCRIPTION_MACRO;
-            }
-            break;
-        case ECamScenePortrait:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_port_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_port_l;          
-            title = R_CAM_SCENE_TITLE_PORTRAIT;
-            description = R_CAM_SCENE_DESCRIPTION_PORTRAIT;
-            }
-            break;
-        case ECamSceneAuto:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_auto_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_auto_l;
-            title = R_CAM_SCENE_TITLE_AUTO;
-            description = R_CAM_SCENE_DESCRIPTION_AUTO;
-            }
-            break;
-        case ECamSceneScenery:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_land_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_land_l;           
-            title = R_CAM_SCENE_TITLE_LANDSCAPE;
-            description = R_CAM_SCENE_DESCRIPTION_LANDSCAPE;
-            }
-            break;
-        case ECamSceneSports:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_sport_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_sport_l;           
-            title = R_CAM_SCENE_TITLE_SPORTS;
-            description = R_CAM_SCENE_DESCRIPTION_SPORTS;
-            }
-            break;
-        case ECamSceneUser:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_user_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_user_l;           
-            title = R_CAM_SCENE_TITLE_USER;
-            description = R_CAM_SCENE_DESCRIPTION_USER;
-            }
-            break;
-        case ECamSceneNormal:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_auto_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_auto_l;           
-            title = R_CAM_SCENE_TITLE_NORMAL;
-            description = R_CAM_SCENE_DESCRIPTION_NORMAL;
-            }
-            break;
-        case ECamSceneNightScenery:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_nightland_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_nightland_l;
-            title = R_CAM_SCENE_TITLE_NIGHT_LANDSCAPE;
-            description = R_CAM_SCENE_DESCRIPTION_NIGHT_LANDSCAPE;
-            }
-            break;
-        case ECamSceneNightPortrait:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_nightport_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_nightport_l;
-            title = R_CAM_SCENE_TITLE_NIGHT_PORTRAIT;
-            description = R_CAM_SCENE_DESCRIPTION_NIGHT_PORTRAIT;
-            }
-            break;
-        case ECamSceneCandlelight:
-            {
-            bmpSmall = EMbmCameraappQgn_ico_lcam_sce_candle_s;
-            bmpLarge = EMbmCameraappQgn_ico_lcam_sce_candle_l;           
-            title = R_CAM_SCENE_TITLE_CANDLELIGHT;
-            description = R_CAM_SCENE_DESCRIPTION_CANDLELIGHT;
-            }
-            break;
-        default:
-            User::Leave( KErrGeneral );
-            break;
-        }
-
-    // Find the name and path of the MBM file for bitmaps
-    TFileName mbmFileName;
-    CamUtility::ResourceFileName( mbmFileName );
-
-    iBitmapSmall = AknIconUtils::CreateIconL( mbmFileName, bmpSmall );
-    AknIconUtils::SetSize( iBitmapSmall, aSmallBmpSize, EAspectRatioNotPreserved );
-
-    TReal xInc = TReal( aLargeBmpSize.iWidth - aSmallBmpSize.iWidth ) / KNumIconStages;
-    TReal yInc = TReal( aLargeBmpSize.iHeight - aSmallBmpSize.iHeight ) / KNumIconStages;
-
-    TSize size;
-    TReal width = aSmallBmpSize.iWidth;
-    TReal height = aSmallBmpSize.iHeight;
-    
-    width += xInc;
-    height += yInc;
-    size.SetSize( ( TInt ) width, ( TInt ) height );
-
-    iBitmap1 = AknIconUtils::CreateIconL( mbmFileName, bmpLarge );
-    AknIconUtils::SetSize( iBitmap1, size, EAspectRatioNotPreserved);
-
-    width += xInc;
-    height += yInc;
-    size.SetSize( ( TInt ) width, ( TInt ) height );
-
-    iBitmap2 = AknIconUtils::CreateIconL( mbmFileName, bmpLarge );
-    AknIconUtils::SetSize( iBitmap2, size, EAspectRatioNotPreserved );
-
-    width += xInc;
-    height += yInc;
-    size.SetSize( ( TInt ) width, ( TInt ) height );
-
-    iBitmap3 = AknIconUtils::CreateIconL( mbmFileName, bmpLarge );
-    AknIconUtils::SetSize( iBitmap3, size, EAspectRatioNotPreserved );
-
-    width += xInc;
-    height += yInc;
-    size.SetSize( ( TInt ) width, ( TInt ) height );
-
-    iBitmap4 = AknIconUtils::CreateIconL( mbmFileName, bmpLarge );
-    AknIconUtils::SetSize( iBitmap4, size, EAspectRatioNotPreserved );
-
-    width += xInc;
-    height += yInc;
-    size.SetSize( ( TInt ) width, ( TInt ) height );
-
-    iBitmap5 = AknIconUtils::CreateIconL( mbmFileName, bmpLarge );
-    AknIconUtils::SetSize( iBitmap5, size, EAspectRatioNotPreserved );
-
-    width += xInc;
-    height += yInc;
-    size.SetSize( ( TInt ) width, ( TInt ) height );
-
-    iBitmap6 = AknIconUtils::CreateIconL( mbmFileName, bmpLarge );
-    AknIconUtils::SetSize( iBitmap6, size, EAspectRatioNotPreserved );
-
-    iBitmapLarge = AknIconUtils::CreateIconL( mbmFileName, bmpLarge );
-    AknIconUtils::SetSize( iBitmapLarge, aLargeBmpSize, EAspectRatioNotPreserved );
-    
-    iTitle = StringLoader::LoadL( title );
-    iDescription = StringLoader::LoadL( description );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingItem::CCamSceneSettingContainer
-// C++ constructor
-// ---------------------------------------------------------------------------
-//
-CCamSceneSettingItem::CCamSceneSettingItem( TCamSceneId aSceneId ) :
-    iSceneId( aSceneId )
-    {
-    }  
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::NewL
-// Symbian OS two-phased constructor
-// ---------------------------------------------------------------------------
-//
-CCamSceneSettingContainer* 
-CCamSceneSettingContainer::NewL( const TRect& aRect, 
-                                 CAknView& aView,
-                                 TCamCameraMode aMode,
-                                 CCamAppController& aController,
-                                 TBool aUserBaseScenes )
-  {
-  CCamSceneSettingContainer* self = 
-      new( ELeave ) CCamSceneSettingContainer( aMode,
-                                               aController,
-                                               aView, 
-                                               aUserBaseScenes );
-  CleanupStack::PushL( self );
-  self->ConstructL( aRect );
-  CleanupStack::Pop( self );
-  return self;
-  }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::~CCamSceneSettingContainer
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CCamSceneSettingContainer::~CCamSceneSettingContainer()
-  {
-  PRINT( _L( "Camera => ~CCamSceneSettingContainer" ) );
-  
-  iSettingItemArray.ResetAndDestroy();
-  iSettingItemArray.Close();
-  
-  iHighlightIcons.Close();
-  iNormalIcons.Close();
-  iDisplacedIcons.Close();
-  
-  iHighlightArray.Close();
-  iHighlightTitles.Close();
-  iHighlightDescriptions.Close();
-  
-  iNormalTitles.Close();
-  iDisplacedTitles.Close();
-  
-  if (iAnimTimer)
-    {
-    iAnimTimer->Cancel();
-    }
-  delete iAnimTimer;
-  delete iScrollFrame;
-  delete iAnimData.iOffScreenBitmap;
-  
-  PRINT( _L( "Camera <= ~CCamSceneSettingContainer" ) );    
-  }
-  
-// ---------------------------------------------------------
-// CCamSceneSettingContainer::ConstructL
-// Symbian OS 2nd phase constructor
-// ---------------------------------------------------------
-//
-void CCamSceneSettingContainer::ConstructL( const TRect& aRect )
-  {
-  PRINT(_L("Camera => CCamSceneSettingContainer::ConstructL") )
-  
-  CCamContainerBase::BaseConstructL( aRect );
-
-  TBool secondCameraOn = 
-      static_cast<CCamAppUiBase*>( iEikonEnv->AppUi() )->IsSecondCameraEnabled();
-
-  if( !AknLayoutUtils::LayoutMirrored() )
-    {
-    // get the icon positions from the resource
-    ReadLayoutL( ROID(R_CAM_SCENE_ICON_HIGHLIGHT_ARRAY_ID), iHighlightIcons );
-    ReadLayoutL( ROID(R_CAM_SCENE_ICON_DISPLACED_ARRAY_ID), iDisplacedIcons );
-    ReadLayoutL( ROID(R_CAM_SCENE_ICON_NORMAL_ARRAY_ID), iNormalIcons );
-
-    // get the highlight rects
-    ReadLayoutL( ROID(R_CAM_SCENE_HIGHLIGHT_LAYOUT_ARRAY_ID), iHighlightArray );
-
-    // Check if we require APAC layouts
-    if( AknLayoutUtils::Variant() == EApacVariant )
-      {
-      // get the layout texts
-      ReadLayoutL( ROID(R_CAM_SCENE_HIGHLIGHT_TITLE_ARRAY_APAC_ID), iHighlightTitles );
-      ReadLayoutL( ROID(R_CAM_SCENE_HIGHLIGHT_DESCRIPTION_ARRAY_APAC_ID), iHighlightDescriptions );
-
-      ReadLayoutL( ROID(R_CAM_SCENE_TITLE_NORMAL_ARRAY_APAC_ID), iNormalTitles );
-      ReadLayoutL( ROID(R_CAM_SCENE_TITLE_DISPLACED_ARRAY_APAC_ID), iDisplacedTitles );
-      }
-    else
-      {
-      // get the layout texts
-      ReadLayoutL( ROID(R_CAM_SCENE_HIGHLIGHT_TITLE_ARRAY_ID), iHighlightTitles );
-      ReadLayoutL( ROID(R_CAM_SCENE_HIGHLIGHT_DESCRIPTION_ARRAY_ID), iHighlightDescriptions );
-      
-      ReadLayoutL( ROID(R_CAM_SCENE_TITLE_NORMAL_ARRAY_ID), iNormalTitles );
-      ReadLayoutL( ROID(R_CAM_SCENE_TITLE_DISPLACED_ARRAY_ID), iDisplacedTitles );
-      }
-    }
-  else
-    {
-    // get the icon positions from the resource
-    ReadLayoutL( ROID(R_CAM_SCENE_ICON_HIGHLIGHT_ARRAY_AH_ID), iHighlightIcons );
-    ReadLayoutL( ROID(R_CAM_SCENE_ICON_DISPLACED_ARRAY_AH_ID), iDisplacedIcons );
-    ReadLayoutL( ROID(R_CAM_SCENE_ICON_NORMAL_ARRAY_AH_ID), iNormalIcons );
-
-    // get the highlight rects
-    ReadLayoutL( ROID(R_CAM_SCENE_HIGHLIGHT_LAYOUT_ARRAY_AH_ID), iHighlightArray );
-
-    // get the layout texts
-    ReadLayoutL( ROID(R_CAM_SCENE_HIGHLIGHT_TITLE_ARRAY_AH_ID), iHighlightTitles );
-    ReadLayoutL( ROID(R_CAM_SCENE_HIGHLIGHT_DESCRIPTION_ARRAY_AH_ID), iHighlightDescriptions );
-
-    ReadLayoutL( ROID(R_CAM_SCENE_TITLE_NORMAL_ARRAY_AH_ID), iNormalTitles );
-    ReadLayoutL( ROID(R_CAM_SCENE_TITLE_DISPLACED_ARRAY_AH_ID), iDisplacedTitles );
-    }
-
-  TResourceReader reader;                                                                                     
-  iEikonEnv->CreateResourceReaderLC( reader, ROID(R_CAM_SCENE_MAX_ITEMS_TO_DISPLAY_ID));    
-  iNumberOfIconsToDisplay = reader.ReadInt16();
-  CleanupStack::PopAndDestroy(); // reader
-
-  if ( iUserBaseScenes )
-    {
-    CreateSceneArrayL( R_CAM_SCENE_LIST_USER );
-    TCamSceneId currentScene = static_cast<TCamSceneId>( 
-        iController.IntegerSettingValue( 
-            ECamSettingItemUserSceneBasedOnScene ) );
-    SetCurrentPositionToScene( currentScene );      
-    SetupScrollbarL();
-    }
-  else if ( ECamControllerImage == iMode )
-    {
-    if ( secondCameraOn )
-      {
-      CreateSceneArrayL( R_CAM_SCENE_LIST_PHOTO_CAM2 );
-      }
-    else
-      {
-      CreateSceneArrayL( R_CAM_SCENE_LIST_PHOTO);         
-      SetupScrollbarL();
-      }
-
-    TCamSceneId currentScene = static_cast<TCamSceneId>( 
-            iController.IntegerSettingValue( 
-                ECamSettingItemDynamicPhotoScene ) );
-    SetCurrentPositionToScene( currentScene );      
-    }
-  else
-    {
-    if ( secondCameraOn )
-      {
-      CreateSceneArrayL( R_CAM_SCENE_LIST_VIDEO_CAM2);
-      }
-    else
-      {
-      CreateSceneArrayL( R_CAM_SCENE_LIST_VIDEO );
-      }
-    
-    TCamSceneId currentScene = static_cast<TCamSceneId>( 
-            iController.IntegerSettingValue( 
-                ECamSettingItemDynamicVideoScene ) );
-    SetCurrentPositionToScene( currentScene );      
-    }
-
-  TInt index = iCurrentArrayPosition - iTopDisplayPosition;
-  iAnimData.Initialise( iHighlightArray[index].Rect() );
-
-  // create a bitmap to be used off-screen
-  iAnimData.iOffScreenBitmap = new ( ELeave ) CFbsBitmap();
-  User::LeaveIfError( iAnimData.iOffScreenBitmap->Create( aRect.Size(), EColor256 ) );
-
-  TInt leftMarginDiff = iNormalIcons[0].Rect().iTl.iX - 
-                        iHighlightIcons[0].Rect().iTl.iX;
-  iAnimData.iIconLeftInc = TReal( leftMarginDiff / KNumIconStages );
-
-
-  // Create the timeout timer
-  iAnimTimer = CPeriodic::NewL( EPriorityHigh );
-  
-  PRINT(_L("Camera <= CCamSceneSettingContainer::ConstructL") )    
-  }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::ReadLayoutL
-// Read the TAknLayoutRect info from the resource file
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::ReadLayoutL( TInt aResourceId, 
-                                             RArray<TAknLayoutRect>& aArray) const
-  {
-  TResourceReader reader;                                                                                     
-  iEikonEnv->CreateResourceReaderLC( reader, aResourceId );    
-  const TInt count = reader.ReadInt16();
-  
-  TInt i;
-  // Read all of the layout entries from the resource file
-  for ( i = 0; i < count; i++ )
-    {
-    TAknLayoutRect layoutRect;
-    layoutRect.LayoutRect( Rect(), reader );
-    User::LeaveIfError( aArray.Append( layoutRect ) );
-    }
-  CleanupStack::PopAndDestroy(); // reader
-  }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::ReadLayoutL
-// Read the TAknLayoutText info from the resource file
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::ReadLayoutL( TInt aResourceId, 
-                                             RArray<TAknLayoutText>& aArray) const
-  {
-  TResourceReader reader;                                                                                     
-  iEikonEnv->CreateResourceReaderLC( reader, aResourceId );    
-  const TInt count = reader.ReadInt16();
-  
-  TInt i;
-  // Read all of the layout entries from the resource file
-  for ( i = 0; i < count; i++ )
-    {
-    TAknLayoutText layoutText;
-    layoutText.LayoutText( Rect(), reader );
-    User::LeaveIfError( aArray.Append( layoutText ) );
-    }
-  CleanupStack::PopAndDestroy(); // reader
-  }
-    
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::CCamSceneSettingContainer
-// C++ constructor
-// ---------------------------------------------------------------------------
-//
-CCamSceneSettingContainer::CCamSceneSettingContainer( 
-    TCamCameraMode aMode,
-    CCamAppController& aController,
-    CAknView& aView,
-    TBool aUserBaseScenes )
-  : CCamContainerBase( aController, aView ), 
-    iMode( aMode ), 
-    iUserBaseScenes( aUserBaseScenes )
-  {
-  }
-
-// ----------------------------------------------------------------
-// CCamSceneSettingContainer::UserSceneHighlighted
-// Returns ETrue if the current selected scene is User
-// ----------------------------------------------------------------
-//
-TBool CCamSceneSettingContainer::UserSceneHighlighted()
-  {
-  return ( iSettingItemArray[iCurrentArrayPosition]->SceneId() == 
-           ECamSceneUser );
-  }
-
-// ----------------------------------------------------------------
-// CCamSceneSettingContainer::SaveSceneSetting
-// Stores the currently selected scene in the dynamic settings model
-// ----------------------------------------------------------------
-//
-TBool CCamSceneSettingContainer::SaveSceneSettingL()
-  {
-  TInt scene = 0;
-  if ( iUserBaseScenes )
-    {
-    scene = ECamSettingItemUserSceneBasedOnScene;
-    }
-  else if ( ECamControllerImage == iMode )
-    {
-    scene = ECamSettingItemDynamicPhotoScene;
-    }
-  else
-    {
-    scene = ECamSettingItemDynamicVideoScene;
-    }
-
-  iController.SetIntegerSettingValueL( scene,
-              iSettingItemArray[iCurrentArrayPosition]->SceneId() );
-
-  // If user selected sports scene from list.
-  if ( iSettingItemArray[iCurrentArrayPosition]->SceneId() == ECamSceneSports )
-    {
-    // if the selection was for user scene base scene, and user 
-    // scene is active, but request was cancelled, return false.
-    if ( ( iController.IntegerSettingValue( ECamSettingItemDynamicPhotoScene )
-             == ECamSceneUser ) &&
-         ( iController.IntegerSettingValue( ECamSettingItemUserSceneBasedOnScene )
-             != ECamSceneSports ) )
-      {
-      return EFalse;
-      }
-    // if the selection was for the photo/video scene, but request was 
-    // cancelled, return false.
-    if ( ( iController.IntegerSettingValue( ECamSettingItemDynamicPhotoScene )
-         != ECamSceneUser )  && 
-         ( iController.IntegerSettingValue( scene ) != ECamSceneSports ) )
-      {
-      return EFalse;
-      }
-    }
-  // Otherwise, if the user selected user scene from the list, but request
-  // was cancelled, return false.
-  else if ( ( iSettingItemArray[iCurrentArrayPosition]->SceneId() 
-            == ECamSceneUser ) &&
-            ( iController.IntegerSettingValue( ECamSettingItemDynamicPhotoScene )
-           != ECamSceneUser ) )
-    {
-    return EFalse;
-    }
-
-  // Remove lint warning.
-  else
-    {
-    }
-
-  // In all other cases, return true.
-  return ETrue;
-  }
-
-
-// ---------------------------------------------------------
-// CCamSceneSettingContainer::CountComponentControls 
-// Returns the number of controls owned
-// ---------------------------------------------------------
-//
-TInt CCamSceneSettingContainer::CountComponentControls() const
-  {
-  TInt count = 0; // Return the number of controls inside this container    
-  if ( iScrollFrame )
-    {
-    count = iScrollFrame->CountComponentControls();
-    }
-  return count;
-  }
-
-// ---------------------------------------------------------
-// CCamSceneSettingContainer::ComponentControl
-// Returns the requested component control
-// ---------------------------------------------------------
-//
-CCoeControl* CCamSceneSettingContainer::ComponentControl( TInt aIndex ) const
-  {
-  if ( iScrollFrame )
-    {
-    return iScrollFrame->ComponentControl( aIndex );
-    }
-  else
-    {
-    return NULL;
-    }    
-  }
-
-// ---------------------------------------------------------
-// CCamSceneSettingContainer::Draw
-// Draw control
-// ---------------------------------------------------------
-//
-void CCamSceneSettingContainer::Draw( const TRect& /*aRect*/ ) const
-  {
-  PRINT(_L("Camera => CCamSceneSettingContainer::Draw") )
-  
-  CWindowGc& gc = SystemGc();
-  // Draw the background
-  gc.SetBrushColor( KRgbWhite );
-  gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-  gc.SetPenStyle( CGraphicsContext::ENullPen );
-  gc.DrawRect( Rect() );
-  gc.SetPenStyle( CGraphicsContext::ESolidPen );
-  
-  TBool drawnHighlight = EFalse;
-  TInt index = 0;
-  
-  TInt i;
-  for ( i = 0; i < iNumberOfIconsToDisplay; i++ )
-    {
-    TInt position = iTopDisplayPosition + i;
-    CCamSceneSettingItem* item = iSettingItemArray[position];
-    const HBufC* title = item->Title();
-    const HBufC* description = item->Description();
-
-    // Drawing currently selected icon and text
-    if ( position == iCurrentArrayPosition )
-      {
-      // Draw the highlight
-      gc.DrawRoundRect( iHighlightArray[i].Rect(), 
-                        TSize( KCornerSize, KCornerSize ) );
-      
-      // Draw the enlarged icon
-      iHighlightIcons[i].DrawImage( gc, 
-          const_cast<CFbsBitmap*>( item->Icon( ECamIconSizeLarge ) ), NULL );
-      
-      // Draw the enlarged header text
-      iHighlightTitles[i].DrawText( gc, *title );
-      
-      // Draw the description text
-      iHighlightDescriptions[i].DrawText( gc, *description );
-      
-#if 0       // debug drawing code
-      gc.SetPenColor(KRgbRed);
-      gc.DrawRect( iHighlightTitles[i].TextRect() );
-      gc.DrawRect( iHighlightDescriptions[i].TextRect() );
-#endif
-      drawnHighlight = ETrue;
-      }
-    else    // Drawing normal items
-      {
-      // Draw the highlight box
-      TAknLayoutRect layoutRect;
-      TAknLayoutText layoutText;
-      if ( drawnHighlight )
-        {
-        layoutRect = iNormalIcons[index];
-        layoutText = iNormalTitles[index];
-        }
-      else
-        {
-        layoutRect = iDisplacedIcons[index];
-        layoutText = iDisplacedTitles[index];
-        }
-
-      // Draw the standard icon
-      layoutRect.DrawImage( gc, 
-          const_cast<CFbsBitmap*>( item->Icon( ECamIconSizeSmall ) ), NULL );
-      // Draw the header text
-      layoutText.DrawText( gc, *title );
-            
-#if 0       // debug drawing code
-      gc.SetPenColor(KRgbRed);
-      gc.DrawRect( layoutText.TextRect() );
-#endif
-      index++;
-      }
-    }
-  PRINT(_L("Camera <= CCamSceneSettingContainer::Draw") )
-  }
-
-// ----------------------------------------------------------------
-// CCamSceneSettingContainer::OfferKeyEventL
-// Handles this application view's command keys. Forwards other
-// keys to child control(s).
-// ----------------------------------------------------------------
-//
-TKeyResponse CCamSceneSettingContainer::OfferKeyEventL( 
-    const TKeyEvent& aKeyEvent,
-    TEventCode aType )
-    {
-    PRINT( _L( "Camera => CCamSceneSettingContainer::OfferKeyEventL" ) );
-
-    if ( iAnimTimer->IsActive() )
-        {
-        return EKeyWasNotConsumed;
-        }
-
-    // Moving down the list
-    if ( aKeyEvent.iScanCode == EStdKeyDownArrow && aType == EEventKey )
-        {
-        // at the bottom of the list and pressing down key
-        if ( iCurrentArrayPosition == iSettingItemArray.Count() - 1 )
-            {
-            // wrap to the top of the list and redraw
-            iCurrentArrayPosition = 0;
-            iPreviousArrayPosition = 0;
-            iTopDisplayPosition = 0;
-
-            iAnimData.iCurrentRect = iHighlightArray[0].Rect();
-            iAnimData.iPreviousRect = iAnimData.iCurrentRect;
-
-            if ( iScrollFrame )
-                {
-                iScrollFrame->MoveVertThumbTo( 0 );
-                }
-
-            DrawDeferred();
-            return EKeyWasConsumed;
-            }
-
-        iAnimData.iMovingDown = ETrue;
-        iPreviousArrayPosition = iCurrentArrayPosition;
-        iCurrentArrayPosition++;
-
-        // need to scroll the list
-        if( iCurrentArrayPosition > iNumberOfIconsToDisplay - 1 )
-            {
-            iAnimData.iScrolling = ETrue;
-            iScrollFrame->MoveThumbsBy( 0, 1 );
-            iTopDisplayPosition++;
-            DrawListL();
-
-            // blit the bitmap at above the 2nd displaced icon
-            TInt yPos = iDisplacedIcons[1].Rect().iTl.iY;
-            // less the difference between the top of the first icon on 
-            // the off-screen bitmap and the top of the off-screen bitmap
-            yPos -= iDisplacedIcons[0].Rect().iTl.iY;
-            // less the scrolling value
-            yPos -= iAnimData.iScrollingY;
-            iAnimData.iOffScreenPos.SetXY( 0, yPos );
-
-            TInt curIndex = iCurrentArrayPosition - iTopDisplayPosition;
-            TInt defaultIndex = curIndex - 1;
-            iAnimData.iTitleFadeIn = iNormalTitles[defaultIndex].TextRect();
-
-            iAnimData.iCurrentRect = iHighlightArray[curIndex].Rect();
-            TRect rect = iNormalIcons[defaultIndex].Rect();
-            iAnimData.iCurrentRect.iTl.iY = rect.iTl.iY;
-            iAnimData.iCurrentRect.iBr.iY = iAnimData.iCurrentRect.iTl.iY + rect.Height();
-
-            // clear the top item from the list
-            ActivateGc();
-            SystemGc().Clear( iHighlightArray[0].Rect() );
-            DeactivateGc();
-            }
-        else // just move to the next position
-            {
-            MoveHighlight();
-            }
-
-        StartAnimation();
-        return EKeyWasConsumed;
-        }
-    else if ( aKeyEvent.iScanCode == EStdKeyUpArrow && aType == EEventKey )
-        {
-        // At the top of list and pressing the up key
-        if ( iCurrentArrayPosition == 0 )
-            {
-            // wrap to the bottom of the list and redraw
-            TInt lastItem = iSettingItemArray.Count() - 1;
-            iCurrentArrayPosition = lastItem;
-            iPreviousArrayPosition = lastItem;
-            iTopDisplayPosition = iSettingItemArray.Count() - iNumberOfIconsToDisplay;
-            
-            TInt pos = iCurrentArrayPosition - iTopDisplayPosition;
-            iAnimData.iCurrentRect = iHighlightArray[pos].Rect();
-            iAnimData.iPreviousRect = iAnimData.iCurrentRect;
-
-            if ( iScrollFrame )
-                {
-                iScrollFrame->MoveThumbsBy( 0, iTopDisplayPosition );
-                }
-
-            DrawDeferred();
-            iController.StartIdleTimer();
-            return EKeyWasConsumed;
-            }
-
-        iAnimData.iMovingDown = EFalse;
-        iPreviousArrayPosition = iCurrentArrayPosition;
-        iCurrentArrayPosition--;
-
-        // need to scroll the list
-        if ( iPreviousArrayPosition > iNumberOfIconsToDisplay - 1 )
-            {
-            iAnimData.iScrolling = ETrue;
-            iScrollFrame->MoveThumbsBy( 0, -1 );
-            // draw the list before decrementing top display pos
-            DrawListL();
-            iTopDisplayPosition--;
-
-            iAnimData.iOffScreenPos.SetXY( 0, iAnimData.iScrollingY );
-
-            TInt curIndex = iCurrentArrayPosition - iTopDisplayPosition;
-            TInt defaultIndex = curIndex - 1;
-            iAnimData.iTitleFadeIn = iNormalTitles[defaultIndex].TextRect();
-
-            iAnimData.iCurrentRect = iHighlightArray[curIndex].Rect();
-            TRect rect = iNormalIcons[defaultIndex].Rect();
-            iAnimData.iCurrentRect.iTl.iY = rect.iTl.iY;
-            iAnimData.iCurrentRect.iBr.iY = iAnimData.iCurrentRect.iTl.iY + rect.Height();
-            }
-        else // just move to the next position
-            {
-            MoveHighlight();
-            }
-
-        StartAnimation();
-        iController.StartIdleTimer();
-        return EKeyWasConsumed;
-        }
-    else
-        {
-        return CCamContainerBase::OfferKeyEventL( aKeyEvent, aType );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::HandleScrollEventL
-// Called when a scroll event is detected
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::HandleScrollEventL( CEikScrollBar* /*aScrollBar*/, 
-                                                    TEikScrollEvent /*aEventType*/ )
-    {
-    }
-
-// ----------------------------------------------------------------
-// CCamBurstThumbnailGrid::SetupScrollbarL
-// Sets up the scrollbar for the list
-// ----------------------------------------------------------------
-//
-void CCamSceneSettingContainer::SetupScrollbarL()
-    {
-    if ( !AknLayoutUtils::LayoutMirrored() )
-        {
-        iScrollLayout.LayoutRect( Rect(), ROID(R_CAM_SCENE_SCROLLBAR_POSITION_ID));
-        }
-    else
-        {
-        iScrollLayout.LayoutRect( Rect(), ROID(R_CAM_SCENE_SCROLLBAR_POSITION_AH_ID));
-        }
-
-    // Create scrollbar frame
-    iScrollFrame = new (ELeave) CEikScrollBarFrame( this, this, ETrue );
-
-    // Set up the model accordingly
-    ivModel.SetScrollSpan( iSettingItemArray.Count() );
-    ivModel.SetFocusPosition( 0 );
-    ivModel.SetWindowSize( iNumberOfIconsToDisplay );
-            
-    iScrollFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, 
-                                           CEikScrollBarFrame::EOn );
-    iScrollFrame->CreateDoubleSpanScrollBarsL( ETrue, EFalse );
-    
-    TRect rect = iScrollLayout.Rect();
-    iScrollFrame->Tile( &ivModel, rect );
-    iScrollFrame->MoveVertThumbTo( iTopDisplayPosition );
-    }
-
-// ----------------------------------------------------------------
-// CCamSceneSettingContainer::CreateSceneArrayL
-// Populates the scene array with scenes using a resource
-// ----------------------------------------------------------------
-//
-void CCamSceneSettingContainer::CreateSceneArrayL( TInt aResourceId )
-    {
-    // Create a resource reader for the scene array resource id.
-    TResourceReader reader;                                                                                     
-    iEikonEnv->CreateResourceReaderLC( reader, aResourceId );    
-
-    // Create all scene list items from the resource reader.
-    TInt sceneCount = reader.ReadInt16();
-
-    TInt i;
-    for ( i = 0; i < sceneCount; ++i )
-        {
-        TCamSceneId sceneId = static_cast<TCamSceneId> ( reader.ReadInt16() );
-        if ( iController.IsSceneSupported( sceneId ) )
-            {
-            TSize large = iHighlightIcons[0].Rect().Size();
-            TSize small = iNormalIcons[0].Rect().Size();
-            CCamSceneSettingItem* settingItem = CCamSceneSettingItem::NewL( 
-                                                sceneId, large, small );
-            CleanupStack::PushL( settingItem );
-            iSettingItemArray.AppendL( settingItem );
-            CleanupStack::Pop( settingItem );            
-            }
-
-        }
-
-    CleanupStack::PopAndDestroy(); // reader
-
-    // If total number of scenes is less than the current number 
-    // of icons to display on screen then reset the current number of
-    // icons to display on screen.
-    if ( sceneCount < iNumberOfIconsToDisplay )
-        {
-        iNumberOfIconsToDisplay = sceneCount;
-        }    
-    }
-
-// ----------------------------------------------------------------
-// CCamSceneSettingContainer::SetCurrentPositionToScene
-// Sets the current position of the scene array to the element
-// associated with a particular scene id.
-// ----------------------------------------------------------------
-//
-void CCamSceneSettingContainer::SetCurrentPositionToScene
-( TCamSceneId aSceneId )
-    {
-    // Find scene in scene array.
-    TInt count = iSettingItemArray.Count();
-    TInt j;
-    for ( j = 0; j < count; j++ )
-        {
-        if ( aSceneId == iSettingItemArray[j]->SceneId() )
-            {  
-            iCurrentArrayPosition = j;
-            j = count; // stop loop
-            }
-        }
-
-    // If scene array position is offscreen, move top display position.
-    if ( iCurrentArrayPosition >= iNumberOfIconsToDisplay )
-        {
-        iTopDisplayPosition = ( iCurrentArrayPosition - 
-                                iNumberOfIconsToDisplay ) + 1;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::StartAnimation
-// Called to start the animation
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::StartAnimation()
-    {
-#ifndef _ANIMATION_OFF
-    iAnimTimer->Start( KTimerPeriod, KTimerPeriod, TCallBack( TimerExpired, this ) );
-#else
-    DrawDeferred();
-#endif
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::TimerExpired
-// Called when the timer expires
-// ---------------------------------------------------------------------------
-//
-TInt CCamSceneSettingContainer::TimerExpired( TAny* aAny )
-    {
-    CCamSceneSettingContainer* container = 
-                    static_cast<CCamSceneSettingContainer*>( aAny );
-    __ASSERT_DEBUG( container != NULL, CamPanic( ECamPanicNullPointer ) );
-    container->Animate();
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::Animate
-// Called every time the timer expires to update the animation
-// The animation works by changing a single line non-highlighted item
-// into a double line highlighted item.
-// When a highlighted item comes into focus, the title text remains the same
-// size, but its position is moved up to indicate moving from a single to
-// double line.
-// The description text fades in underneath the title text - the title text
-// moves up to make way for the description text.
-// When a highlighted item looses the focus, the title text remains the same
-// size, but its position moves down to indicate moving from a double line
-// to a single line.
-// The description text fades out and the title text moves down into the 
-// position occupied by the description text.
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::Animate()
-    {
-    iAnimData.iStep++;
-
-    // update the pen/bitmaps
-    UpdateAnimationData();
-
-    // font is the same for all titles
-    const CAknLayoutFont* layoutFont = CAknLayoutFont::AsCAknLayoutFontOrNull( 
-                                       iHighlightTitles[0].Font() );
-    __ASSERT_DEBUG( layoutFont != NULL, CamPanic( ECamPanicNullPointer ) );
-    TInt baseline = layoutFont->TextPaneTopToBaseline();
-
-    const CCamSceneSettingItem* previousItem = iSettingItemArray[iPreviousArrayPosition];
-    const CCamSceneSettingItem* currentItem = iSettingItemArray[iCurrentArrayPosition];
-
-    TInt currentPosition = iCurrentArrayPosition - iTopDisplayPosition;
-    TInt previousPosition = iPreviousArrayPosition - iTopDisplayPosition;
-
-    CWindowGc& gc = SystemGc();
-    ActivateGc();
-
-    TBool animScrolled = ETrue;
-    TBool animCompleted = ETrue;
-    if ( iAnimData.iScrolling )
-        {
-        animScrolled = ScrollList();
-
-        // update the highlight rects
-        animCompleted = UpdateHighlight();
-
-        DrawIcon( EFalse );
-
-        if ( iAnimData.iMovingDown )
-            {
-            // Save the current position, so we can rub it out later
-            iAnimData.iTitleFadeInOld = iAnimData.iTitleFadeIn;
-
-            TRect rectLimit = iHighlightTitles[currentPosition].TextRect();
-            iAnimData.iTitleFadeIn.Move( 0, -iAnimData.iDeltaY );
-            if ( iAnimData.iTitleFadeIn.iTl.iY <= rectLimit.iTl.iY )
-                {
-                // finish
-                iAnimData.iTitleFadeIn.iTl.iY = rectLimit.iTl.iY;
-                iAnimData.iTitleFadeIn.iBr.iY = rectLimit.iBr.iY;
-                }
-            DrawText( *currentItem->Title(), layoutFont, baseline, EFalse );
-            }
-
-        // draw the description text
-        iHighlightDescriptions[currentPosition].DrawText( gc, 
-                *currentItem->Description(), ETrue, iAnimData.iPenFadeIn );
-
-        // draw the highlighted border
-        DrawHighlight();
-        }
-    else
-        {
-        // update the highlight rects
-        animCompleted = UpdateHighlight();
-
-        // draw the highlighted border
-        DrawHighlight();
-
-/**** PREVIOUS ITEM - FADE OUT ****/
-        DrawIcon( ETrue );
-
-        // fade description text out
-        iHighlightDescriptions[previousPosition].DrawText( gc, 
-               *previousItem->Description(), ETrue, iAnimData.iPenFadeOut );
-
-        // Save the current position, so we can rub it out later
-        iAnimData.iTitleFadeOutOld = iAnimData.iTitleFadeOut;
-
-        // Draw the title text if moving down the list
-        TRect rectLimit;
-        if ( iAnimData.iMovingDown )
-            {
-            rectLimit = iDisplacedTitles[previousPosition].TextRect();
-            }
-        else // Draw the title text if moving up the list
-            {
-            rectLimit = iNormalTitles[previousPosition-1].TextRect();
-            } 
-
-        iAnimData.iTitleFadeOut.Move( 0, iAnimData.iDeltaY );
-        if ( iAnimData.iTitleFadeOut.iTl.iY >= rectLimit.iTl.iY )
-            {
-            // finish
-            iAnimData.iTitleFadeOut.iTl.iY = rectLimit.iTl.iY;
-            iAnimData.iTitleFadeOut.iBr.iY = rectLimit.iBr.iY;
-            }
-
-        DrawText( *previousItem->Title(), layoutFont, baseline, ETrue );
-
-/**** NEXT ITEM - FADE IN ****/
-        DrawIcon( EFalse );
-
-        if ( iAnimData.iMovingDown )
-            {
-            iHighlightDescriptions[currentPosition].DrawText( gc, 
-                *currentItem->Description(), ETrue, iAnimData.iPenFadeIn );
-            }
-        else
-            {
-            // don't fade in straight away otherwise looks messy
-            if ( iAnimData.iStep > 3 )
-                {
-                iHighlightDescriptions[currentPosition].DrawText( gc, 
-                    *currentItem->Description(), ETrue, iAnimData.iPenFadeIn );
-                }
-            }
-
-        // Save the current position, so we can rub it out later
-        iAnimData.iTitleFadeInOld = iAnimData.iTitleFadeIn;
-
-        rectLimit = iHighlightTitles[currentPosition].TextRect();
-        iAnimData.iTitleFadeIn.Move( 0, -iAnimData.iDeltaY );
-        if ( iAnimData.iTitleFadeIn.iTl.iY <= rectLimit.iTl.iY )
-            {
-            // finish
-            iAnimData.iTitleFadeIn.iTl.iY = rectLimit.iTl.iY;
-            iAnimData.iTitleFadeIn.iBr.iY = rectLimit.iBr.iY;
-            }
-        DrawText( *currentItem->Title(), layoutFont, baseline, EFalse );
-        }
-
-    DeactivateGc();
-
-    if ( animScrolled && animCompleted )
-        {
-        iAnimTimer->Cancel();
-        iAnimData.iScrolling = EFalse;
-        iAnimData.iPenFadeOut = KRgbBlack;
-        iAnimData.iPenFadeIn = KRgbWhite;
-        iAnimData.iStep = 0;
-        iAnimData.iIconLeftOffset = 0;
-        DrawNow();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::UpdateHighlight
-// Updates the highlight rect each time Animate() is called
-// ---------------------------------------------------------------------------
-//
-TBool CCamSceneSettingContainer::UpdateHighlight()
-    {
-    TInt currentPosition = iCurrentArrayPosition - iTopDisplayPosition;
-    TInt previousPosition = iPreviousArrayPosition - iTopDisplayPosition;
-
-    // Save the current position, so we can rub it out later
-    iAnimData.iCurrentRectOld = iAnimData.iCurrentRect;
-    iAnimData.iPreviousRectOld = iAnimData.iPreviousRect;
-    
-    TBool completedCurrentTop = EFalse;
-    TBool completedCurrentBottom = EFalse;
-    TBool completedPreviousTop = EFalse;
-    TBool completedPreviousBottom = EFalse;
-
-    TInt currentRectTopLimit = iHighlightArray[currentPosition].Rect().iTl.iY;
-    TInt currentRectBottomLimit = iHighlightArray[currentPosition].Rect().iBr.iY;
-        
-    iAnimData.iCurrentRect.iTl.iY -= iAnimData.iDeltaY;
-    if ( iAnimData.iCurrentRect.iTl.iY <= currentRectTopLimit )
-        {
-        iAnimData.iCurrentRect.iTl.iY = currentRectTopLimit;
-        completedCurrentTop = ETrue;
-        }
-    iAnimData.iCurrentRect.iBr.iY += iAnimData.iDeltaY;
-    if ( iAnimData.iCurrentRect.iBr.iY >= currentRectBottomLimit )
-        {
-        iAnimData.iCurrentRect.iBr.iY = currentRectBottomLimit;
-        completedCurrentBottom = ETrue;
-        }
-
-    // not scrolling so fade the previous highlight
-    if ( !iAnimData.iScrolling )
-        {
-        TInt previousRectTopLimit;
-        TInt previousRectBottomLimit;
-        if ( iAnimData.iMovingDown )
-            {    
-            previousRectTopLimit = iDisplacedIcons[previousPosition].Rect().iTl.iY;
-            previousRectBottomLimit = iDisplacedIcons[previousPosition].Rect().iBr.iY;
-            }
-        else // moving up
-            {
-            previousRectTopLimit = iNormalIcons[previousPosition-1].Rect().iTl.iY;
-            previousRectBottomLimit = iNormalIcons[previousPosition-1].Rect().iBr.iY;
-            }
-
-        iAnimData.iPreviousRect.iTl.iY += iAnimData.iDeltaY;
-        if ( iAnimData.iPreviousRect.iTl.iY >= previousRectTopLimit )
-            {
-            iAnimData.iPreviousRect.iTl.iY = previousRectTopLimit;
-            completedPreviousTop = ETrue;
-            }
-
-        iAnimData.iPreviousRect.iBr.iY -= iAnimData.iDeltaY;
-        if ( iAnimData.iPreviousRect.iBr.iY <= previousRectBottomLimit )
-            {
-            iAnimData.iPreviousRect.iBr.iY = previousRectBottomLimit;
-            completedPreviousBottom = ETrue;
-            }
-        }
-    else // scrolling - don't draw the previous rect
-        {
-        completedPreviousTop = ETrue;
-        completedPreviousBottom = ETrue;
-        }
-
-    return ( completedCurrentTop && completedCurrentBottom && 
-             completedPreviousTop && completedPreviousBottom );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::UpdateAnimationData
-// Updates the pen/icons each time Animate() is called
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::UpdateAnimationData()
-    {
-    const CCamSceneSettingItem* previousItem = iSettingItemArray[iPreviousArrayPosition];
-    const CCamSceneSettingItem* currentItem = iSettingItemArray[iCurrentArrayPosition];
-
-    if ( iAnimData.iStep == 1 )
-        {
-        iAnimData.iPenFadeOut = KRgbDarkGray;
-        iAnimData.iPenFadeIn = KRgbGray4;
-        iAnimData.iIconFadeOut = previousItem->Icon( ECamIconSizeSix );
-        iAnimData.iIconFadeIn = currentItem->Icon( ECamIconSizeOne );
-        } 
-    else if ( iAnimData.iStep == 2 )
-        {
-        iAnimData.iPenFadeOut = KRgbGray;
-        iAnimData.iPenFadeIn = KRgbGray3;
-        iAnimData.iIconFadeOut = previousItem->Icon( ECamIconSizeFive );
-        iAnimData.iIconFadeIn = currentItem->Icon( ECamIconSizeTwo );
-        }
-    else if ( iAnimData.iStep == 3 )
-        {
-        iAnimData.iPenFadeOut = KRgbGray1;
-        iAnimData.iPenFadeIn = KRgbGray2;
-        iAnimData.iIconFadeOut = previousItem->Icon( ECamIconSizeFour );
-        iAnimData.iIconFadeIn = currentItem->Icon( ECamIconSizeThree );
-        }
-    else if ( iAnimData.iStep == 4 )
-        {
-        iAnimData.iPenFadeOut = KRgbGray2;
-        iAnimData.iPenFadeIn = KRgbGray1;
-        iAnimData.iIconFadeOut = previousItem->Icon( ECamIconSizeThree );
-        iAnimData.iIconFadeIn = currentItem->Icon( ECamIconSizeFour );
-        }
-    else if ( iAnimData.iStep == 5 )
-        {
-        iAnimData.iPenFadeOut = KRgbGray3;
-        iAnimData.iPenFadeIn = KRgbGray;
-        iAnimData.iIconFadeOut = previousItem->Icon( ECamIconSizeTwo );
-        iAnimData.iIconFadeIn = currentItem->Icon( ECamIconSizeFive );
-        }
-    else if ( iAnimData.iStep == 6 )
-        {
-        iAnimData.iPenFadeOut = KRgbGray4;
-        iAnimData.iPenFadeIn = KRgbDarkGray;
-
-        iAnimData.iIconFadeOut = previousItem->Icon( ECamIconSizeOne );
-        iAnimData.iIconFadeIn = currentItem->Icon( ECamIconSizeSix );
-        }
-    else if ( iAnimData.iStep == 7 )
-        {
-        iAnimData.iPenFadeOut = KRgbWhite;
-        iAnimData.iPenFadeIn = KRgbBlack;
-        iAnimData.iIconFadeOut = previousItem->Icon( ECamIconSizeSmall );
-        iAnimData.iIconFadeIn = currentItem->Icon( ECamIconSizeLarge );
-        }
-    else
-        {
-        
-        }
-    iAnimData.iIconLeftOffset += iAnimData.iIconLeftInc;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::DrawText
-// Draws the title text each time Animate() is called
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::DrawText( const TDesC& aText, 
-                                          const CAknLayoutFont* aFont, 
-                                          TInt aBaseline,
-                                          TBool aFadeOut ) const
-    {
-    CWindowGc& gc = SystemGc();
-
-    TRect oldRect;
-    TRect rect;
-    if ( aFadeOut )
-        {
-        rect = iAnimData.iTitleFadeOut;
-        oldRect = iAnimData.iTitleFadeOutOld;
-        }
-    else
-        {
-        rect = iAnimData.iTitleFadeIn;
-        oldRect = iAnimData.iTitleFadeInOld;
-        }
-    gc.UseFont( aFont );
-    TLogicalRgb backgroundColour( TLogicalRgb::ESystemBackgroundColor );
-    gc.SetPenColor( backgroundColour );
-    // draw test aligned left or right depending on layout
-    if( !AknLayoutUtils::LayoutMirrored() )
-        {
-        gc.DrawText( aText, oldRect, aBaseline, CGraphicsContext::ELeft );
-        gc.SetPenColor( KRgbBlack );
-        gc.DrawText( aText, rect, aBaseline, CGraphicsContext::ELeft );
-        }
-    else
-        {
-        gc.DrawText( aText, oldRect, aBaseline, CGraphicsContext::ERight );
-        gc.SetPenColor( KRgbBlack );
-        gc.DrawText( aText, rect, aBaseline, CGraphicsContext::ERight );
-        }
-
-    gc.DiscardFont();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::DrawIcon
-// Draws the icon each time Animate() is called
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::DrawIcon( TBool aFadeOut )
-    {
-    TRect oldRect;
-    TRect bmpRect;
-    const CFbsBitmap* bitmap = NULL;
-
-    TRect largeIcon = iHighlightIcons[0].Rect();
-    TRect smallIcon = iNormalIcons[0].Rect();
-
-    if ( aFadeOut )
-        {
-        bitmap = iAnimData.iIconFadeOut;
-        TSize bmpSize = bitmap->SizeInPixels();
-
-        TInt iconYPos = ( iAnimData.iPreviousRect.Height() - bmpSize.iHeight ) / 2;
-
-        TPoint iconPos( ( largeIcon.iTl.iX + (TInt)iAnimData.iIconLeftOffset ), 
-                      ( iAnimData.iPreviousRect.iTl.iY + iconYPos ) );
-
-        iAnimData.iIconRectFadeOutOld = iAnimData.iIconRectFadeOut;
-        iAnimData.iIconRectFadeOut.SetRect( iconPos, bmpSize );
-
-        oldRect = iAnimData.iIconRectFadeOutOld;
-        bmpRect = iAnimData.iIconRectFadeOut;
-        }
-    else
-        {
-        bitmap = iAnimData.iIconFadeIn;
-        TSize bmpSize = bitmap->SizeInPixels();
- 
-        TInt iconYPos = ( iAnimData.iCurrentRect.Height() - bmpSize.iHeight ) / 2;
-        
-        TPoint iconPos( ( smallIcon.iTl.iX - (TInt)iAnimData.iIconLeftOffset ), 
-                        ( iAnimData.iCurrentRect.iTl.iY + iconYPos ) );
-
-        iAnimData.iIconRectFadeInOld = iAnimData.iIconRectFadeIn;
-        iAnimData.iIconRectFadeIn.SetRect( iconPos, bmpSize );
-
-        oldRect = iAnimData.iIconRectFadeInOld;
-        bmpRect = iAnimData.iIconRectFadeIn;
-        }
-
-    CWindowGc& gc = SystemGc();
-    gc.Clear( oldRect );
-    gc.BitBlt( bmpRect.iTl, bitmap );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::DrawHighlight
-// Draws the highlight rect each time Animate() is called
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::DrawHighlight() const
-    {
-    if( Flags() & CListItemDrawer::ESingleClickDisabledHighlight ) 
-        {
-        return;
-        }
-
-    CWindowGc& gc = SystemGc();
-
-    TSize corner( KCornerSize,KCornerSize );
-    // Clear the old highlight
-    gc.SetPenSize( TSize( KBorderSize, KBorderSize ) );
-    TLogicalRgb backgroundColour( TLogicalRgb::ESystemBackgroundColor );
-    gc.SetPenColor( backgroundColour );
-    gc.DrawRoundRect( iAnimData.iCurrentRectOld, corner );
-    if ( !iAnimData.iScrolling )
-        {
-        gc.DrawRoundRect( iAnimData.iPreviousRectOld, corner );
-        }
-    // Draw the new highlight
-    gc.SetPenSize( TSize( KBorderSize, KBorderSize ) );
-    gc.SetPenColor( iAnimData.iPenFadeIn );
-    gc.DrawRoundRect( iAnimData.iCurrentRect, corner );
-    if ( !iAnimData.iScrolling )
-        {
-        gc.SetPenColor( iAnimData.iPenFadeOut );
-        gc.DrawRoundRect( iAnimData.iPreviousRect, corner );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::DrawListL
-// Draws the list to an off-screen bitmap
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::DrawListL()
-    {
-    // create an off-screen device and context
-    CFbsBitGc* bitmapGc = NULL;
-    CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL( iAnimData.iOffScreenBitmap );
-    CleanupStack::PushL( bitmapDevice );
-    User::LeaveIfError( bitmapDevice->CreateContext( bitmapGc ) );
-    CleanupStack::PushL( bitmapGc );
-
-    bitmapGc->SetPenStyle( CGraphicsContext::ENullPen );
-    bitmapGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
-    bitmapGc->DrawRect( TRect( iAnimData.iOffScreenBitmap->SizeInPixels() ) );
-
-    TInt i;
-    // only draw top 4 items in the list
-    for ( i = 0; i < iNumberOfIconsToDisplay-1; i++ )
-        {
-        TInt position = iTopDisplayPosition + i;
-        CCamSceneSettingItem* item = iSettingItemArray[position];
-
-        // Draw the standard icon
-        iDisplacedIcons[i].DrawImage( *bitmapGc, 
-                const_cast<CFbsBitmap*>( item->Icon( ECamIconSizeSmall ) ), NULL );
-        // Draw the header text
-        iDisplacedTitles[i].DrawText( *bitmapGc, *item->Title() );
-        }
-
-    CleanupStack::PopAndDestroy( bitmapGc );
-    CleanupStack::PopAndDestroy( bitmapDevice );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::ScrollList
-// Scrolls the list
-// ---------------------------------------------------------------------------
-//
-TBool CCamSceneSettingContainer::ScrollList()
-    {
-    SystemGc().BitBlt( iAnimData.iOffScreenPos, iAnimData.iOffScreenBitmap );
-    if ( iAnimData.iMovingDown )
-        {
-        iAnimData.iOffScreenPos.iY -= iAnimData.iScrollingY;
-        if ( iAnimData.iOffScreenPos.iY <= 0 )
-            {
-            return ETrue;
-            }
-        }
-    else
-        {
-        iAnimData.iOffScreenPos.iY += iAnimData.iScrollingY;
-        if ( iAnimData.iOffScreenPos.iY >= iDisplacedIcons[1].Rect().iTl.iY )
-            {
-            return ETrue;
-            }
-        }
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamSceneSettingContainer::MoveHighlight
-// Moves the highlight to its new position, ready to be animated
-// ---------------------------------------------------------------------------
-//
-void CCamSceneSettingContainer::MoveHighlight()
-    {
-    iAnimData.iPreviousRect = iAnimData.iCurrentRect;
-
-    TInt curIndex = iCurrentArrayPosition - iTopDisplayPosition;
-    TInt prevIndex = iPreviousArrayPosition - iTopDisplayPosition;
-
-    TRect iconRect;
-    TRect titleRect;
-
-    if ( iAnimData.iMovingDown )
-        {
-        TInt defaultIndex = curIndex - 1;
-        iconRect = iNormalIcons[defaultIndex].Rect();
-        titleRect = iNormalTitles[defaultIndex].TextRect();
-        }
-    else
-        {        
-        iconRect = iDisplacedIcons[curIndex].Rect();
-        titleRect = iDisplacedTitles[curIndex].TextRect();
-        }
-
-    iAnimData.iCurrentRect = iHighlightArray[curIndex].Rect();
-    iAnimData.iCurrentRect.iTl.iY = iconRect.iTl.iY;
-    iAnimData.iCurrentRect.iBr.iY = iAnimData.iCurrentRect.iTl.iY + iconRect.Height();
-
-    iAnimData.iTitleFadeOut = iHighlightTitles[prevIndex].TextRect();
-    iAnimData.iTitleFadeIn = titleRect;
-
-    iAnimData.iIconRectFadeOut = iHighlightIcons[prevIndex].Rect();
-    iAnimData.iIconRectFadeIn = iconRect;
-    }
-
-// End of File