camerauis/cameraapp/generic/GsCamcorderPlugin/src/CamLocationSettingContainer.cpp
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/GsCamcorderPlugin/src/CamLocationSettingContainer.cpp	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,775 +0,0 @@
-/*
-* Copyright (c) 2007-2010 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:  Implements the location settings for image settings*
-*/
-
-
-
-// INCLUDE FILES
-
-#include <gscamerapluginrsc.rsg>
-#include <barsread.h>
-#include <AknQueryValue.h>
-#include <AknIconUtils.h>
-#include <akntitle.h>  // CAknTitlePane
-#include <aknappui.h>
-#include <AknsUtils.h>
-#include <AknsDrawUtils.h>
-#include <StringLoader.h>
-#include <cameraapp.mbg>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <touchfeedback.h> 
-
-#include "CamLocationSettingContainer.h"
-#include "CamUtility.h"
-#include "CamCaptureSetupListBox.h"
-#include "CamCaptureSetupListBoxModel.h"
-#include "CamPanic.h"
-#include "camuiconstants.h"
-#include "camuidconstants.h"
-#include "CamAppUiBase.h"
-#include "CamStaticSettingsModel.h"
-#include "GSCamcorderPlugin.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::CCamLocationSettingContainer
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CCamLocationSettingContainer::CCamLocationSettingContainer( MCamAppController& aController,
-                                                            TCamCameraMode aMode,
-                                                            CCoeControl* aParent )
-:   iParent( aParent ),
-    iController( aController ), 
-    iMode( aMode ),
-    iActivateOnTouchRelease( EFalse )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CCamLocationSettingContainer::ConstructL()
-    {
-    PRINT(_L("Camera => CCamLocationSettingContainer::ConstructL") )
-	PRINT(_L("Camera <= CCamLocationSettingContainer::ConstructL") )
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CCamLocationSettingContainer* 
-CCamLocationSettingContainer::NewL( MCamAppController& aController,
-                                    TCamCameraMode     aMode,
-                                    CCoeControl*       aParent )
-    {
-    CCamLocationSettingContainer* self = 
-        new( ELeave ) CCamLocationSettingContainer( aController, aMode, aParent );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-
-    
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::~CCamLocationSettingContainer
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CCamLocationSettingContainer::~CCamLocationSettingContainer()
-  {
-  PRINT( _L("Camera => ~CCamLocationSettingContainer") );
-  CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( iEikonEnv->AppUi() );
-  if ( appUi )
-    {
-    TInt resId = ( ECamControllerVideo == iMode )
-               ? R_CAM_VIDEO_SETTINGS_TITLE_NAME
-               : R_CAM_PHOTO_SETTINGS_TITLE_NAME;
-    
-    TRAP_IGNORE( appUi->SetTitleL( resId ) );
-    }
-    iDescArray.ResetAndDestroy();
-    iDescLayoutArray.Close();
-    if ( iCurrentDescLineArray )
-        {
-        iCurrentDescLineArray->Reset();
-        delete iCurrentDescLineArray;
-        } 
-    delete iListBox;
-    
-    if ( iTextTitle )
-        {
-        delete iTextTitle;
-        iTextTitle = NULL;
-        }
-    
-  PRINT( _L("Camera <= ~CCamLocationSettingContainer") );
-  }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::SelectedQuality
-// Returns the value selected by the listbox
-// -----------------------------------------------------------------------------
-//
-TInt CCamLocationSettingContainer::SelectedValue() const
-    {
-    CCamCaptureSetupListBoxModel *model = static_cast<CCamCaptureSetupListBoxModel *>( iListBox->Model() );
-    return model->ItemValue( iListBox->CurrentItemIndex() ); 
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::ConstructFromResourceL
-// Constructs the container from the resource
-// -----------------------------------------------------------------------------
-//
-void CCamLocationSettingContainer::ConstructFromResourceL( TResourceReader& /*aReader*/ )
-    {
-    CAknViewAppUi* viewAppUi = static_cast<CAknViewAppUi*>( CCoeEnv::Static()->AppUi() );
-    CGSCamcorderPlugin* parent = static_cast<CGSCamcorderPlugin*> 
-                               ( viewAppUi->View( KGSCamcorderGSPluginUid ) );
-
-   // set up the container windows here as setting page window
-    // isn't created until CAknSettingPage::ConstructFromResourceL is called
-    SetContainerWindowL( *iParent );
-    
-    TRect mainPaneRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
-            mainPaneRect );
-    TRect statusPaneRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane,
-            statusPaneRect );
-    
-    // layout area rectangle contains the area, where components need to be 
-    // drawn to. the container size is the whole screen, but the layouts are 
-    // for the client area. aRect is the container size that might include or
-    // might not include statuspane area. calculating area self will
-    // go around the problem
-    TRect layoutAreaRect;
-    layoutAreaRect = mainPaneRect;
-    layoutAreaRect.BoundingRect( statusPaneRect );
-    
-    // set the layouts for the rect containing the description
-    if ( CamUtility::IsNhdDevice() ) 
-        {
-        if ( Layout_Meta_Data::IsLandscapeOrientation() )
-            {
-            iSummaryRect.LayoutRect( layoutAreaRect, AknLayoutScalable_Apps::main_cset_text2_pane( 0 ) );
-            }
-        else
-            {
-            iSummaryRect.LayoutRect( layoutAreaRect, AknLayoutScalable_Apps::main_cset_text2_pane( 1 ) );
-            }
-        }
-    else
-        {
-        iSummaryRect.LayoutRect( layoutAreaRect, AknLayoutScalable_Apps::main_cset6_text2_pane( 0 ) );
-        }
-    
-	TRAPD( ignore, 
-	       ConstructSummaryDetailsFromResourceL( R_CAM_OFF_ON_LOC_TEXT_LIST_SUMMARY ); 
-	     )
-    if ( ignore )
-        { 
-        // Do nothing ( removes build warning )
-        }
- 
-	iCurrentDescLineArray  = new( ELeave ) CArrayFixFlat<TPtrC>( 5 );
-	
-    // set layout for 5 lines of descriptive text
-    iDescLayoutArray.Reset();
-    TAknLayoutText layout;
-    TAknLayoutScalableParameterLimits listLimits = 
-        AknLayoutScalable_Apps::main_cset_text2_pane_t1_copy1_ParamLimits( 0 );
-    TInt lineCount = listLimits.LastRow() + 1;
-    for ( TInt i = 0; i < lineCount; i++ )
-        {
-        if ( CamUtility::IsNhdDevice() ) 
-            {
-            layout.LayoutText( iSummaryRect.Rect(), 
-                AknLayoutScalable_Apps::main_cset_text2_pane_t1( i ) );
-            }
-        else
-            {
-            layout.LayoutText( iSummaryRect.Rect(), 
-                AknLayoutScalable_Apps::main_cset_text2_pane_t1_copy1(0,0,i) );
-            }
-        User::LeaveIfError( iDescLayoutArray.Append( layout ) );
-        }
-    
-	TInt listInt = ECamSettingItemRecLocation;
-	iListBox =	new( ELeave ) CCamCaptureSetupListBox( this, iController );
-	iListBox->ConstructL( this, 
-	                      R_CAM_OFF_ON_LOC_TEXT_LIST, 
-	                      TInt( ECamSettingItemRecLocation ), 
-	                      0, 
-	                      EFalse, 
-	                      ETrue );
-	if ( parent )
-	    {
-	    iListBox->InitializeL
-		    ( parent->IntegerSettingValue( listInt ) );
-		}
-	iListBox->SetContainerWindowL( *iParent );
-	
-	TRect listboxRect;
-	ReadListboxLayoutL(listboxRect);
-    
-    // Determine the height of the listbox; Either the height based on the number of items,
-    // or the maximum allowed listbox height.
-    CEikScrollBarFrame::TScrollBarVisibility visibility = CEikScrollBarFrame::EOff;
-    TInt maxListBoxHeight = listboxRect.Height();
-    TInt listBoxHeight = iListBox->CalcHeightBasedOnNumOfItems( 
-                                        iListBox->Model()->NumberOfItems() );
-    if ( maxListBoxHeight < listBoxHeight )
-        {
-        // there are more items than would fit to the listbox rectangle
-        
-        // the maximum height is the total height of items 
-        // that can fit to the maxlistboxheight
-        TInt itemHeight = iListBox->ItemHeight();
-        TInt itemsVisible = maxListBoxHeight / itemHeight;
-        listBoxHeight = itemsVisible * itemHeight;
-        
-        // the scrollbar needs to be turned on
-        visibility = CEikScrollBarFrame::EOn;
-        }
-
-    // get layout for the listbox rect
-    TAknLayoutRect listboxLayoutRect;
-    if ( visibility == CEikScrollBarFrame::EOn )
-        {
-        // if scrollbars are used, use scrollbar layout
-        if ( CamUtility::IsNhdDevice() ) 
-            {
-            listboxLayoutRect.LayoutRect( listboxRect, 
-                AknLayoutScalable_Apps::main_cset_list_pane( 0 ) );
-            }
-        else
-            {
-            listboxLayoutRect.LayoutRect( listboxRect, 
-                AknLayoutScalable_Apps::main_cset_list_pane_copy1( 0 ) );
-            }
-        }
-    else
-        {
-        if ( CamUtility::IsNhdDevice() ) 
-            {
-            listboxLayoutRect.LayoutRect( listboxRect, 
-                AknLayoutScalable_Apps::main_cset_list_pane( 1 ) );
-            }
-        else
-            {
-            listboxLayoutRect.LayoutRect( listboxRect, 
-                AknLayoutScalable_Apps::main_cset_list_pane_copy1( 1 ) );
-            }
-        }
-    
-    // layout scrollbarpane (will not be visible if not needed)
-    TAknLayoutRect scrollbarLayoutRect;
-    if ( CamUtility::IsNhdDevice() ) 
-        {
-        scrollbarLayoutRect.LayoutRect( listboxRect, 
-            AknLayoutScalable_Apps::scroll_pane_cp028( 0 ) );
-        }
-    else
-        {
-        scrollbarLayoutRect.LayoutRect( listboxRect, 
-            AknLayoutScalable_Apps::scroll_pane_cp028_copy1( 0 ) );
-        }
-    
-    // calculate the layout for the listbox with changed height
-    const AknLayoutUtils::SAknLayoutControl listboxLayout =
-    {   ELayoutEmpty, listboxRect.iTl.iX, listboxRect.iTl.iY, 
-        ELayoutEmpty, ELayoutEmpty, 
-        listboxLayoutRect.Rect().Width(), listBoxHeight };
-    
-    AknLayoutUtils::LayoutControl( iListBox, 
-            layoutAreaRect, listboxLayout);
-    
-    iListBox->CreateScrollBarFrameL( ETrue );
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( 
-                                            CEikScrollBarFrame::EOff, 
-                                            visibility );
-    iListBox->MakeVisible( ETrue );
-    iListBox->SetFocus( EFalse, ENoDrawNow );
-    iListBox->UpdateScrollBarsL();
-    iListBox->ScrollBarFrame()->DrawScrollBarsNow();
-    iListBox->SetListBoxObserver(this);
-    SplitCurrentTextL();
-    
-    // Prevents the system filling invalidated areas with the background colour - 
-    // helps reduce flicker.
-    Window().SetBackgroundColor();
-
-    ConstructContainerTitleFromResourceL( R_CAM_PHOTO_LOCATION_SETTINGS_TITLE_NAME ); 
-    CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( iEikonEnv->AppUi() );
-    appUi->SetTitleL( iTextTitle->Des() );
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::CountComponentControls
-// return the number of component controls
-// -----------------------------------------------------------------------------
-//
-TInt CCamLocationSettingContainer::CountComponentControls() const
-    {
-    return 1; // the listbox
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::ComponentControl
-// return the control at a given index
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CCamLocationSettingContainer::ComponentControl( TInt /*aIndex*/ ) const
-    {
-    return iListBox;
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::Draw
-// Draws the container
-// -----------------------------------------------------------------------------
-//
-void CCamLocationSettingContainer::Draw( const TRect& /*aRect*/ ) const
-    {
-    CWindowGc& gc = SystemGc();
-
-    // Draw skin background
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-    AknsDrawUtils::Background( skin, cc, gc, Rect() );
- 
-     // Draw summary text                              
-    DrawSummaryText( gc );
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::SizeChanged
-// Handles a change in the size of the control
-// -----------------------------------------------------------------------------
-//
-void CCamLocationSettingContainer::SizeChanged()
-    {
-    // Do this only if the listbox has been created, ie. ConstructFromResourceL() has been called
-    if (iListBox)
-        {
-        TRect listboxRect;
-        TRAPD( ignore, ReadListboxLayoutL(listboxRect) );
-        if ( ignore )
-            { 
-            // Just return if the resource reader fails
-            return;
-            }   
-    
-        TRect mainPaneRect;
-        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
-                mainPaneRect );
-        TRect statusPaneRect;
-        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane,
-                statusPaneRect );
-        
-        // layout area rectangle contains the area, where components need to be 
-        // drawn to. the container size is the whole screen, but the layouts are 
-        // for the client area. aRect is the container size that might include or
-        // might not include statuspane area. calculating area self will
-        // go around the problem
-        TRect layoutAreaRect;
-        layoutAreaRect = mainPaneRect;
-        layoutAreaRect.BoundingRect( statusPaneRect );
-    
-        // Determine the height of the listbox; Either the height based on the number of items,
-        // or the maximum allowed listbox height.
-        CEikScrollBarFrame::TScrollBarVisibility visibility = CEikScrollBarFrame::EOff;
-        TInt maxListBoxHeight = listboxRect.Height();
-        TInt listBoxHeight = iListBox->CalcHeightBasedOnNumOfItems( 
-                                            iListBox->Model()->NumberOfItems() );
-        if ( maxListBoxHeight < listBoxHeight )
-            {
-            // there are more items than would fit to the listbox rectangle
-            
-            // the maximum height is the total height of items 
-            // that can fit to the maxlistboxheight
-            TInt itemHeight = iListBox->ItemHeight();
-            TInt itemsVisible = maxListBoxHeight / itemHeight;
-            listBoxHeight = itemsVisible * itemHeight;
-            
-            // the scrollbar needs to be turned on
-            visibility = CEikScrollBarFrame::EOn;
-            }
-    
-        // get layout for the listbox rect
-        TAknLayoutRect listboxLayoutRect;
-        if ( visibility == CEikScrollBarFrame::EOn )
-            {
-            // if scrollbars are used, use scrollbar layout
-            if ( CamUtility::IsNhdDevice() ) 
-                {
-                listboxLayoutRect.LayoutRect( listboxRect, 
-                    AknLayoutScalable_Apps::main_cset_list_pane( 0 ) );
-                }
-            else
-                {
-                listboxLayoutRect.LayoutRect( listboxRect, 
-                    AknLayoutScalable_Apps::main_cset_list_pane_copy1( 0 ) );
-                }
-            }
-        else
-            {
-            if ( CamUtility::IsNhdDevice() ) 
-                {
-                listboxLayoutRect.LayoutRect( listboxRect, 
-                    AknLayoutScalable_Apps::main_cset_list_pane( 1 ) );
-                }
-            else
-                {
-                listboxLayoutRect.LayoutRect( listboxRect, 
-                    AknLayoutScalable_Apps::main_cset_list_pane_copy1( 1 ) );
-                }
-            }
-        
-        // layout scrollbarpane (will not be visible if not needed)
-        TAknLayoutRect scrollbarLayoutRect;
-        if ( CamUtility::IsNhdDevice() ) 
-            {
-            scrollbarLayoutRect.LayoutRect( listboxRect, 
-                AknLayoutScalable_Apps::scroll_pane_cp028( 0 ) );
-            }
-        else
-            {
-            scrollbarLayoutRect.LayoutRect( listboxRect, 
-                AknLayoutScalable_Apps::scroll_pane_cp028_copy1( 0 ) );
-            }
-        
-        // calculate the layout for the listbox with changed height
-        const AknLayoutUtils::SAknLayoutControl listboxLayout =
-        {   ELayoutEmpty, listboxRect.iTl.iX, listboxRect.iTl.iY, 
-            ELayoutEmpty, ELayoutEmpty, 
-            listboxLayoutRect.Rect().Width(), listBoxHeight };
-        
-        AknLayoutUtils::LayoutControl( iListBox, 
-                layoutAreaRect, listboxLayout);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::OfferKeyEventL
-// Handles key events
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CCamLocationSettingContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                                          TEventCode aType ) 
-    {
-    TKeyResponse keyResponse = iListBox->OfferKeyEventL( aKeyEvent, aType );
-    if ( keyResponse == EKeyWasConsumed )
-        {
-        ReportEventL( MCoeControlObserver::EEventStateChanged );
-        }
-    return keyResponse;
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::HandleSettingValueUpdateL
-// Handles a change to the setting value
-// -----------------------------------------------------------------------------
-//
-void CCamLocationSettingContainer::HandleSettingValueUpdateL( TInt /*aNewValue*/ )
-    {
-    SplitCurrentTextL();
-    ActivateGc();
-    Window().Invalidate( iSummaryRect.Rect() );
-    DeactivateGc();
-    }
-
-// -----------------------------------------------------------------------------
-// CCamLocationSettingContainer::ReadListboxLayoutL
-// Reads the listbox layout
-// -----------------------------------------------------------------------------
-//
-void CCamLocationSettingContainer::ReadListboxLayoutL( TRect& aRect )
-    {
-    TRect mainPaneRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
-            mainPaneRect );
-    TRect statusPaneRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane,
-            statusPaneRect );
-        
-    // layout area rectangle contains the area, where components need to be 
-    // drawn to. the container size is the whole screen, but the layouts are 
-    // for the client area. aRect is the container size that might include or
-    // might not include statuspane area. calculating area self will
-    // go around the problem
-    TRect layoutAreaRect;
-    layoutAreaRect = mainPaneRect;
-    layoutAreaRect.BoundingRect( statusPaneRect );
-    
-    // get the rect size for listbox in the layout
-    TAknLayoutRect listboxLayoutRect;
-    if ( CamUtility::IsNhdDevice() ) 
-        {
-        if ( Layout_Meta_Data::IsLandscapeOrientation() )
-            {
-            listboxLayoutRect.LayoutRect( layoutAreaRect, 
-                AknLayoutScalable_Apps::main_cset_listscroll_pane( 4 ) );
-            }
-        else
-            {
-            listboxLayoutRect.LayoutRect( layoutAreaRect, 
-                AknLayoutScalable_Apps::main_cset_listscroll_pane( 5 ) );
-            }
-        }
-    else
-        {
-        listboxLayoutRect.LayoutRect( layoutAreaRect, 
-            AknLayoutScalable_Apps::main_cset6_listscroll_pane( 4 ) );
-        }
-    aRect.SetRect(listboxLayoutRect.Rect().iTl, listboxLayoutRect.Rect().Size() );
-    }
-
-// -----------------------------------------------------------------
-// CCamLocationSettingContainer::ConstructSummaryDetailsFromResourceL
-// Sets up the layouts of the summary items
-// -----------------------------------------------------------------
-void CCamLocationSettingContainer::ConstructSummaryDetailsFromResourceL(TInt aResourceId)
-    {
-    TResourceReader reader;                                                                                     
-    iEikonEnv->CreateResourceReaderLC( reader, aResourceId ); 
-    const TInt count = reader.ReadInt16();
-
-    TInt i              = -1;
-    // bitmapID and SummarySceneId are needed since we are using
-    // a resource that requires fetching those values also.
-    // The reason why the resource itself is not changed is
-    // that we are using a CamCaptureSetupListBox that needs those.
-    // This requires much less work if not creating own listbox type that
-    // would otherwise have to be created. CamCaptureSetupListBox is now
-    // used here in such a way that the listbox icon are is set to zero width
-    // and no bitmap icon is showed.
-    TInt bitmapId = -1;
-    // To remove warning about setting variable but never using it
-    TInt summarySceneId = bitmapId;
-    // made to remove warning. (explained above comments)
-    bitmapId = summarySceneId;
-     
-    HBufC16* descr = NULL;
-    
-    // Read all of the summary entries from the resource file
-    for ( i = 0; i < count; i++ )
-        {
-        summarySceneId = reader.ReadInt16();
-        bitmapId       = reader.ReadInt32();
-        descr          = reader.ReadHBufC16L();
-
-	    // This hack because an empty resource string which comes as NULL from the resource reader.
-	    // This would create crash later on.
-	    if ( NULL == descr )
-	        {
-	        _LIT(KText,"");
-	        HBufC* buf;
-	        buf = HBufC::NewL(0);
-	        *buf = KText;
-	        User::LeaveIfError( iDescArray.Append( buf ) );
-	        }
-	    else 
-	        {
-	        User::LeaveIfError( iDescArray.Append( descr ) );
-	        }
-        }    
-    CleanupStack::PopAndDestroy(); // reader       
-    }
-
-
-// -----------------------------------------------------------------
-// CCamLocationModeContainer::DrawSummaryText
-// Draws summary title and description text
-// -----------------------------------------------------------------
-void CCamLocationSettingContainer::DrawSummaryText( CWindowGc& aGc ) const
-    {
-//    aGc.SetBrushColor( KRgbShadedWhite );
-//    aGc.Clear( iSummaryRect.Rect() );
-
-    TInt count = iCurrentDescLineArray->Count();
-    TInt layoutCount = iDescLayoutArray.Count();
-    TRgb color; 
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 );    
-
-    if ( layoutCount < count )
-        {
-        count = layoutCount;
-        }
-    TInt i;        
-    for ( i = 0; i < count; i++ )
-        {
-        iDescLayoutArray[i].DrawText( aGc, ( *iCurrentDescLineArray )[i], ETrue, color );
-        }
-    }
-    
-// -----------------------------------------------------------------
-// CCamLocationModeContainer::SplitCurrentTextL
-// Splits the summary title and description text into multiple lines that fit the status layouts
-// -----------------------------------------------------------------
-void CCamLocationSettingContainer::SplitCurrentTextL()
-    {
-    // Use the layout info from the first line for width and font
-    TAknLayoutText layout = iDescLayoutArray[0];
-   	AknTextUtils::WrapToArrayL( *iDescArray[iListBox->CurrentItemIndex()],
-                                layout.TextRect().Width(),
-                                *( layout.Font() ),
-                                *iCurrentDescLineArray );
-    }
-
-
-// --------------------------------------------------------------------------
-// CCamLocationSettingContainer::ConstructContainerTitleFromResourceL
-// --------------------------------------------------------------------------
-//
-void CCamLocationSettingContainer::ConstructContainerTitleFromResourceL( TInt aResourceId )
-    {
-    TResourceReader reader;
-    iEikonEnv->CreateResourceReaderLC( reader, aResourceId ); // cleanupstack
-    
-    iTextTitle = reader.ReadHBufC16L();    
-    
-    CleanupStack::PopAndDestroy(); // reader
-    }
-
-// --------------------------------------------------------------------------
-// CCamLocationSettingContainer::HandlePointerEventL
-// --------------------------------------------------------------------------
-//    
-void CCamLocationSettingContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent ) 
-    {
-    RDebug::Print(_L("CCamLocationSettingContainer::HandlePointerEventL iType=%d iPosition=(%d, %d)"),
-            aPointerEvent.iType,
-            aPointerEvent.iPosition.iX,
-            aPointerEvent.iPosition.iY );
-    iListBox->HandlePointerEventL( aPointerEvent );
-    /*TInt oldListItemIndex = -1;
-    TInt newListItemIndex = -1;
-    TBool handleItemActivation = EFalse;
-   
-    if ( iListBox )
-        {
-        oldListItemIndex = iListBox->CurrentItemIndex();
-        }
-  
-    CCoeControl::HandlePointerEventL( aPointerEvent );       
-       
-    if ( iListBox )
-        {
-        newListItemIndex = iListBox->CurrentItemIndex();
-        }
-       
-    if ( oldListItemIndex != -1 && newListItemIndex != -1 )
-        {
-        
-        // figure out if item was activated by touch down + release combination on same item
-        if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
-            {
-            if ( newListItemIndex != oldListItemIndex )
-                {
-                iActivateOnTouchRelease = EFalse;
-                }
-            else 
-                {
-                // set the current item to be activated on touch release
-                iActivateOnTouchRelease = ETrue;
-                }
-            }
-        else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
-            {
-            if ( iActivateOnTouchRelease && ( newListItemIndex == oldListItemIndex ) )
-                {
-                TInt pointedItemIndex;
-                TBool focusableItemPointed = iListBox->View()->XYPosToItemIndex(aPointerEvent.iPosition, pointedItemIndex );
-                // check that pointer is in focusable area
-                if ( focusableItemPointed )
-                    {
-                    // only if list item index has not changed during event and iActivateOnTouchRelease is true
-                    handleItemActivation = ETrue;
-                    iActivateOnTouchRelease = EFalse;                       
-                    }
-                else
-                    {
-                    iActivateOnTouchRelease = EFalse;                       
-                    }
-                }
-            }
-        else 
-            {
-            // aPointerEvent.iType == TPointerEvent::EDrag
-            
-            if ( newListItemIndex != oldListItemIndex )
-                {
-                // change only when drag event changes the listitem index
-                iActivateOnTouchRelease = EFalse;
-                }
-            }
-    
-        } // end if ( oldListItemIndex != -1 && newListItemIndex != -1 )
-    
-    if ( handleItemActivation )
-        {
-        TKeyEvent key;
-        key.iRepeats = 0;
-        key.iCode = EKeyOK;
-        key.iModifiers = 0;
-        iEikonEnv->SimulateKeyEventL( key, EEventKey );
-        }*/
-        
-    } // end of HandlePointerEventL
-// ---------------------------------------------------------------------------
-// CCamLocationSettingContainer::HandleListBoxEventL
-// Handles Listbox events
-// ---------------------------------------------------------------------------
-//
-void CCamLocationSettingContainer::HandleListBoxEventL( CEikListBox* aListBox, 
-                                                    TListBoxEvent aEventType )
-    {
-    
-    switch( aEventType )
-        {
-        
-        case EEventEnterKeyPressed:
-        case EEventItemDoubleClicked:
-        case EEventItemSingleClicked:
-              {
-               TKeyEvent key;
-               key.iRepeats = 0;
-               key.iCode = EKeyOK;
-               key.iModifiers = 0;
-               iEikonEnv->SimulateKeyEventL( key, EEventKey );
-              }
-              break;  
-        case EEventItemClicked:
-            {
-            HandleSettingValueUpdateL( iListBox->CurrentItemIndex() );          
-            }
-            break;
-        default:
-            break;
-        }
-    }
-//  End of File