gssettingsuis/Gs/GSFramework/src/GSParentContainer.cpp
branchRCL_3
changeset 53 8ee96d21d9bf
parent 51 8bda91a87a00
child 54 7e0eff37aedb
--- a/gssettingsuis/Gs/GSFramework/src/GSParentContainer.cpp	Thu Aug 19 10:12:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,891 +0,0 @@
-/*
-* Copyright (c) 2005-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:  Container for GSParentPlugin.
-*
-*/
-
-// INCLUDE FILES
-#include    <gsparentcontainer.h>
-#include    <gsparentplugin.h>
-#include    <gsplugininterface.h>
-#include    "GsLogger.h"
-#include    <gsparentpluginrsc.rsg>
-#include    <gsfwviewuids.h>
-#include    "GSBaseDocument.h"
-#include    <mgswatchdog.h>
-
-#include    <AknIconArray.h>  //for loading icons
-#include    <aknlists.h>
-#include    <AknsUtils.h>     //for loading icons
-#include    <akntitle.h>
-#include    <akntitle.h>
-#include    <aknViewAppUi.h>
-#include    <barsread.h> // For TResourceReader
-#include    <bldvariant.hrh>
-#include    <calslbs.h>
-#include    <eikclbd.h>
-#include    "GsContainerExt.h" //For CGsContainerExt
-
-//CONSTANTS
-const TInt KGSPluginArrayInitSize = 10;
-const TInt KGSCaptionBufSize = 256;
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::ConstructL(const TRect& aRect)
-// Symbian OS two phased constructor
-//
-// ---------------------------------------------------------------------------
-//
-void CGSParentContainer::ConstructL(
-    const TRect& aRect,
-    CAknViewAppUi* aAppUi,
-    CArrayPtrFlat<CGSPluginInterface>* aPluginArray,
-    TInt aTitleRscId,
-    CGSParentPlugin* aParentPlugin,
-    TGSListboxTypes aListBoxType )
-    {
-    iAppUi = aAppUi;
-    iPluginArray = aPluginArray;
-    iListBoxType = aListBoxType;
-    iParentPlugin = aParentPlugin;
-
-    CGSBaseDocument* doc = static_cast< CGSBaseDocument* >( iAppUi->Document() );
-    iExt = CGsContainerExt::NewL();
-    iExt->iGSWatchDog = doc->WatchDog();
-
-    // Initialize the array containing pointers to plugins that are actually
-    // displayed in lbx.
-    iVisiblePlugins = new (ELeave) CArrayPtrFlat<CGSPluginInterface>( KGSPluginArrayInitSize );
-
-    __GSLOGSTRING( "[CGSParentContainer] ConstructL" );
-
-    // Set view title from resource:
-    CEikStatusPane* sp = iAppUi->StatusPane();
-    CAknTitlePane* title = static_cast<CAknTitlePane*>
-        ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    TResourceReader rReader;
-    iCoeEnv->CreateResourceReaderLC( rReader, aTitleRscId );
-    title->SetFromResourceL( rReader );
-    CleanupStack::PopAndDestroy(); // rReader
-
-    CreateWindowL(); //makes this control a window-owning control
-
-    CreateListBoxL( iListBoxType );
-
-    SetRect( aRect );
-    ActivateL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::~CGSParentContainer()
-// Destructor
-//
-// ---------------------------------------------------------------------------
-//
-CGSParentContainer::~CGSParentContainer()
-    {
-    __GSLOGSTRING( "[CGSParentContainer] ~CGSParentContainer()|->" );
-    if  ( iVisiblePlugins )
-        {
-        iVisiblePlugins->Reset();
-        }
-    delete iVisiblePlugins;
-    if ( iListBox )
-        {
-        delete iListBox;
-        }
-    delete iExt;
-    __GSLOGSTRING( "[CGSParentContainer] ~CGSParentContainer()-|" );
-  }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::UpdateListboxL
-//
-// Updates listbox from iPluginArray. Uses switch statement to handle different
-// listbox types from TGSListboxTypes because the list item format
-// and icon numbers depend on the listbox type.
-// ---------------------------------------------------------------------------
-//
-void CGSParentContainer::UpdateListBoxL()
-    {
-    __GSLOGSTRING( "[CGSParentContainer::UpdateListBoxL]" );
-    iItemTextArray->Reset();
-
-    // Empty the array because it will be updated.
-    iVisiblePlugins->Reset();
-
-    // Array for icons in the listbox. Array owns the icons.
-    CAknIconArray* icons = NULL;
-
-    // Create icon array if required by the listbox type:
-    switch( iListBoxType )
-        {
-        case EGSListBoxTypeSingleLarge:
-        case EGSListBoxTypeDouble2Large:
-        case EGSListBoxTypeDoubleLarge:
-            icons = new (ELeave) CAknIconArray( KGSPluginArrayInitSize );
-            CleanupStack::PushL( icons );
-            break;
-
-        default:
-            break;
-        }
-
-    // Counter for created icons. This is used to maintain corrext indexing for
-    // each plugin's icons in case a plugin has multiple icons and icon indexes
-    // can not be mapped directly to plugin index.
-    TInt iconCounter = 0;
-
-    // 1) Add each plugin's data to listbox if the plugin is visible.
-    for( TInt i = 0; i < iPluginArray->Count(); i++ )
-        {
-        CGSPluginInterface* plugin = iPluginArray->operator[]( i );
-
-        // Adding plugin data to lbx has a lot of CGSPluginInterface API calls.
-        // -> A good place to use quarantine to catch panicking plugins in
-        // any of these calls.
-        #ifdef GS_ENABLE_WATCH_DOG
-            iExt->iGSWatchDog->QuarantineL( plugin->Id() );
-        #endif
-            
-        if( plugin->Visible() )
-            {
-            AddPluginDataToLbxL( plugin,
-                                 iItemTextArray,
-                                 icons,
-                                 iconCounter );
-            }
-        #ifdef GS_ENABLE_WATCH_DOG
-            iExt->iGSWatchDog->RemoveFromQuarantineL( plugin->Id() );
-        #endif
-        }
-
-    // 2) Replace old icon array if needed.
-    switch( iListBoxType )
-        {
-        case EGSListBoxTypeSingleLarge:
-            {
-            // Temporary variable needed to use casted lbx.
-            CAknSingleLargeStyleListBox* lbx =
-                STATIC_CAST( CAknSingleLargeStyleListBox*, iListBox );
-            // Destroy the old icons because SetIconArray() does not destroy them.
-            CArrayPtr<CGulIcon>* oldIcons
-                = lbx->ItemDrawer()->ColumnData()->IconArray();
-            if( oldIcons )
-                {
-                __GSLOGSTRING( "[CGSParentContainer] Destroying old icons." );
-                oldIcons->ResetAndDestroy();
-                delete oldIcons;
-                }
-            // Transfer ownership of icon array to the lbx.
-            // SetIconArray() does not delete the old icon array
-            lbx->ItemDrawer()->ColumnData()->SetIconArray( icons );
-            CleanupStack::Pop( icons );
-            }
-            break;
-        case EGSListBoxTypeDouble2Large:
-        case EGSListBoxTypeDoubleLarge:
-            {
-            // Temporary variable needed to use casted lbx.
-            CEikFormattedCellListBox* lbx =
-                STATIC_CAST( CEikFormattedCellListBox*, iListBox );
-            // Destroy the old icons because SetIconArray() does not destroy them.
-            CArrayPtr<CGulIcon>* oldIcons
-                = lbx->ItemDrawer()->ColumnData()->IconArray();
-            if( oldIcons )
-                {
-                __GSLOGSTRING( "[CGSParentContainer] Destroying old icons." );
-                oldIcons->ResetAndDestroy();
-                delete oldIcons;
-                }
-            // Transfer ownership of icon array to the lbx.
-            // SetIconArray() does not delete the old icon array
-            lbx->ItemDrawer()->ColumnData()->SetIconArray( icons );
-            CleanupStack::Pop( icons );
-            }
-            break;
-
-        case EGSListBoxTypeSettings:
-            break;
-
-        default:
-            break;
-        }
-
-#ifdef _GS_PARENTPLUGIN_LBX_FORMAT_TRACES
-#pragma message("_GS_PARENTPLUGIN_LBX_FORMAT_TRACES activated")
-        __GSLOGSTRING( "[CGSParentContainer::UpdateListBoxL] iItemTextArray:" );
-        for( TInt i = 0; i < iItemTextArray->Count(); i++ )
-            {
-            __GSLOGSTRING1( "%S", &iItemTextArray->operator[]( i ) );
-            }
-#endif // _GS_PARENTPLUGIN_LBX_FORMAT_TRACES
-
-    // 3) Draw listbox again
-    iListBox->HandleItemAdditionL();
-    __GSLOGSTRING( "[CGSParentContainer] UpdateListBoxL()-|" );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSParentContainer::AddPluginDataToLbxL()
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSParentContainer::AddPluginDataToLbxL( CGSPluginInterface* aPlugin,
-                                              CDesCArray* aItemTextArray,
-                                              CAknIconArray* aIconArray,
-                                              TInt& aIconCounter )
-    {
-    // Used to disable icon
-    const TInt KIconNotSupported = -1;
-
-    // Index of icon used in AB-column
-    TInt iconIndexAB = KIconNotSupported;
-
-    // Index of icon used in D-column
-    TInt iconIndexD = KIconNotSupported;
-
-#pragma message("TODO: The HBufC buffer sizes could be optimized if possible:")
-
-    // First line of lbx item text (plugin caption)
-    HBufC* firstLabelBuf = HBufC::NewLC( KGSCaptionBufSize );
-    TPtr firstLabel = firstLabelBuf->Des();
-
-    // Second line of lbx item text (optional)
-    HBufC* secondLabelBuf = HBufC::NewLC( KGSCaptionBufSize );
-    TPtr secondLabel = secondLabelBuf->Des();
-
-    // The complete formatted lbx item string which is added to lbx
-    HBufC* lbxItemStringBuf = HBufC::NewLC( KGSCaptionBufSize * 2 );
-    TPtr lbxItemString = lbxItemStringBuf->Des();
-
-    // Separates lbx item elements
-    _LIT( KTab, "\t" );
-
-    // Normal icon in AB-Column
-    CGulIcon* iconAB = NULL;
-
-    // Small icon used in D-column (optional)
-    CGulIcon* iconD = NULL;
-
-    // Add the plugin to visible plugins array:
-    iVisiblePlugins->AppendL( aPlugin );
-
-    // 1) Read item descriptor from plugin:
-    TRAPD( captionErr,
-           aPlugin->GetCaptionL( firstLabel );
-         )
-
-    // If plugin caption fails, set caption to error string.
-    if( captionErr != KErrNone )
-        {
-        _LIT( KGSParentPluginCaptionErrorTxt, "Error" );
-        firstLabel.Append( KGSParentPluginCaptionErrorTxt );
-        }
-       else
-        {
-        __GSLOGSTRING2( "[CGSParentContainer] 0x%X::GetCaptionL Error: %d",
-        aPlugin->Id().iUid, captionErr );
-        }
-
-    // 2) Add icons if listbox uses them:
-    //    - AB-column icon
-    //    - D-column icon
-    switch( iListBoxType )
-        {
-        case EGSListBoxTypeSingleLarge:
-        case EGSListBoxTypeDouble2Large:
-        case EGSListBoxTypeDoubleLarge:
-            {
-            // This might fail because plugin implementors might do funny stuff.
-            // GS Must still behave well...
-            TRAPD( iconErr,
-                   iconAB = aPlugin->CreateIconL( KGSIconTypeLbxItem );
-                 )
-            if( iconErr != KErrNone )
-                {
-                // Use default icon because plugin implementor's CreateIconL
-                // failed. If this fails, everything is lost anyway so might as
-                // well leave (abort GS).
-                iconAB = aPlugin->CGSPluginInterface::CreateIconL( KGSIconTypeLbxItem );
-                __GSLOGSTRING2( "[CGSParentContainer] CreateIconL for 0x%X failed:%d",
-                                aPlugin->Id().iUid,
-                                iconErr );
-                }
-            if( iconAB ) // Append only if not NULL (not supported)
-                {
-                CleanupStack::PushL( iconAB );
-                aIconArray->AppendL( iconAB );
-                CleanupStack::Pop( iconAB );
-                iconIndexAB = aIconCounter;
-                aIconCounter++;
-                }
-
-            TRAPD( iconDColErr,
-                   iconD = aPlugin->CreateIconL( KGSIconTypeDColumn );
-                 )
-            if( iconDColErr != KErrNone )
-                {
-                iconD = aPlugin->CGSPluginInterface::CreateIconL( KGSIconTypeDColumn );
-                __GSLOGSTRING2( "[CGSParentContainer] CreateIconL for 0x%X failed:%d",
-                                aPlugin->Id().iUid,
-                                iconErr );
-                }
-            if( iconD ) // Append only if not NULL (not supported)
-                {
-                CleanupStack::PushL( iconD );
-                aIconArray->AppendL( iconD );
-                CleanupStack::Pop( iconD );
-                iconIndexD = aIconCounter;
-                aIconCounter++;
-                }
-            break;
-            }
-        case EGSListBoxTypeSettings:
-            break;
-
-        default:
-            break;
-        }
-
-    /**
-    * 3) Create formatted item string. Lbx item's format string depends
-    *    on lbx type.
-    */
-    switch( iListBoxType )
-        {
-        /**
-        * list_single_large_pane:
-        * list item string format: "1\tTextLabel\t0\t0"
-        * where 0 is an index to icon array
-        */
-        case EGSListBoxTypeSingleLarge:
-            {
-            if( iconIndexAB != KIconNotSupported ) lbxItemString.AppendNum( iconIndexAB ); // AB-Column icon
-            lbxItemString.Append( KTab );
-            lbxItemString.Append( firstLabel );
-            break;
-            }
-        /**
-        * list_setting_pane and list_big_single_setting_pane:
-        * list item string format: "\tFirstLabel\t\tValueText"
-        * list item string format: "\tFirstLabel\t0\t"
-        * list item string format: "\tFirstLabel\t\tValueText\t*"
-        * list item string format: "\tFirstLabel\t\t\t\tSecondLabel"
-        * where 0 is an index to icon array
-        */
-        case EGSListBoxTypeSettings:
-            {
-            aPlugin->GetValue( EGSPluginKeySettingsItemValueString, secondLabel );
-
-            lbxItemString.Append( KTab );
-            lbxItemString.Append( firstLabel );
-            lbxItemString.Append( KTab );
-            lbxItemString.Append( KTab );
-            lbxItemString.Append( secondLabel );
-            break;
-            }
-        /**
-        * list_double2_large_graphic_pane:
-        * list item string format: "1\tFirstLabel\tSecondLabel\t0"
-        * where 0 is an index of small (13x13) icon in icon array
-        *   and 1 is an index of a thumbnail image
-        */
-        case EGSListBoxTypeDouble2Large:
-        case EGSListBoxTypeDoubleLarge:
-            {
-            aPlugin->GetValue( EGSPluginKeySettingsItemValueString, secondLabel );
-
-            if( iconIndexAB != KIconNotSupported ) lbxItemString.AppendNum( iconIndexAB ); // AB-Column icon
-            lbxItemString.Append( KTab );
-            lbxItemString.Append( firstLabel ); // FirstLabel
-            lbxItemString.Append( KTab );
-            lbxItemString.Append( secondLabel ); // SecondLabel
-            lbxItemString.Append( KTab );
-            if( iconIndexD != KIconNotSupported ) lbxItemString.AppendNum( iconIndexD ); // D-Column Icon
-            break;
-            }
-        }
-    aItemTextArray->AppendL( lbxItemString );
-
-    CleanupStack::PopAndDestroy( lbxItemStringBuf );
-    CleanupStack::PopAndDestroy( secondLabelBuf );
-    CleanupStack::PopAndDestroy( firstLabelBuf );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::ListBox()
-//
-//
-// ---------------------------------------------------------------------------
-//
-CEikListBox* CGSParentContainer::ListBox()
-    {
-    return iListBox;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::SizeChanged
-// called by framework when the view size is changed
-//
-// ---------------------------------------------------------------------------
-//
-void CGSParentContainer::SizeChanged()
-    {
-    if ( iListBox )
-        {
-        iListBox->SetRect( Rect() );
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::CountComponentControls
-//
-//
-// ---------------------------------------------------------------------------
-//
-TInt CGSParentContainer::CountComponentControls() const
-    {
-    return 1;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::ComponentControl
-//
-//
-// ---------------------------------------------------------------------------
-//
-CCoeControl* CGSParentContainer::ComponentControl(TInt /*aIndex*/) const
-    {
-    return iListBox;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::TKeyResponse OfferKeyEventL
-// Called when a key is pressed.
-//
-// ---------------------------------------------------------------------------
-//
-TKeyResponse  CGSParentContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent,
-                                                  TEventCode aType )
-    {
-    switch ( aKeyEvent.iCode )
-        {
-        case EKeyUpArrow:
-        case EKeyDownArrow:
-            {
-            TKeyResponse listboxResp =
-                iListBox->OfferKeyEventL( aKeyEvent, aType );
-            if ( iParentPlugin )
-                {
-                iParentPlugin->CheckMiddleSoftkeyLabelL();
-                }
-            return listboxResp;
-            }
-        case EKeyLeftArrow:
-        case EKeyRightArrow:
-            // Listbox takes all events even if it doesn't use them
-            return EKeyWasNotConsumed;
-        default:
-            break;
-        }
-    // now it's iListBox's job to process the key event
-    return iListBox->OfferKeyEventL( aKeyEvent, aType );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::HandleListBoxEventL
-//
-//
-// ---------------------------------------------------------------------------
-void CGSParentContainer::HandleListBoxEventL( CEikListBox* aListBox,
-                                              TListBoxEvent aEventType )
-    {
-    __GSLOGSTRING1(
-        "[CGSParentContainer] HandleListBoxEventL aEventType:%d",
-        aEventType);
-    switch (aEventType)
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemSingleClicked:
-            {
-            __GSLOGSTRING1(
-                "[CGSParentContainer] Activating view plugin in index[%d]",
-                aListBox->CurrentItemIndex() );
-            
-            if( aListBox->CurrentItemIndex() < 0 )
-                {
-                // Negative listbox value -> no item selected? 
-                break;
-                }
-            
-           if(iExt->iDblClickPreventer->IsActive())
-               {
-               break;
-               }
-           iExt->iDblClickPreventer->Start();
-            CGSPluginInterface* selectedPlugin = iVisiblePlugins->operator[](
-                aListBox->CurrentItemIndex() );
-
-            // Different command is used depending on the plugin type.
-            switch( selectedPlugin->ItemType() )
-                {
-                // In these cases the plugin is a view:
-                case EGSItemTypeSingleLarge:
-                case EGSItemTypeSetting:
-                case EGSItemTypeSettingIcon:
-                    iAppUi->ActivateLocalViewL( selectedPlugin->Id() );
-                    break;
-                // In these cases the plugin is a dialog:
-                case EGSItemTypeSettingDialog:
-                case EGSItemTypeSingleLargeDialog:
-                    selectedPlugin->HandleSelection(
-                        EGSSelectionBySelectionKey );
-                    UpdateListBoxL(); // Refrest the listbox if value changed.
-                    break;
-                }
-            }
-            break;
-
-        default:
-           break;
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::HandleResourceChange()
-//
-//
-// ---------------------------------------------------------------------------
-//
-void CGSParentContainer::HandleResourceChange( TInt aType )
-    {
-    CCoeControl::HandleResourceChange( aType );
-    //Handle layout orientation or skin change
-    if ( aType == KAknsMessageSkinChange ||
-         aType == KEikDynamicLayoutVariantSwitch )
-        {
-        TRect mainPaneRect;
-        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
-                                           mainPaneRect);
-        SetRect( mainPaneRect );
-        if ( aType == KAknsMessageSkinChange )
-            {
-            TRAP_IGNORE( UpdateListBoxL() );
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::CreateListBoxL()
-//
-//
-// ---------------------------------------------------------------------------
-//
-void CGSParentContainer::CreateListBoxL(
-    TGSListboxTypes aListBoxType )
-    {
-    switch( aListBoxType )
-        {
-        case EGSListBoxTypeSingleLarge:
-            {
-            CAknSingleLargeStyleListBox* lbx =
-                new( ELeave ) CAknSingleLargeStyleListBox;
-            iListBox = lbx;
-            lbx->ConstructL( this );
-            lbx->SetContainerWindowL( *this );
-            lbx->SetListBoxObserver( this );
-            lbx->CreateScrollBarFrameL( ETrue );
-            lbx->ScrollBarFrame()->SetScrollBarVisibilityL(
-                CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-            // Obtain reference to listbox model's item text array:
-            iItemTextArray = STATIC_CAST( CDesCArray*,
-                lbx->Model()->ItemTextArray() );
-            }
-            break;
-
-        case EGSListBoxTypeSettings:
-            {
-            CAknSettingStyleListBox* lbx = 
-                new( ELeave ) CAknSettingStyleListBox;
-            iListBox = lbx;
-            lbx->ConstructL( this, EAknListBoxSelectionList );
-            lbx->SetContainerWindowL( *this );
-            lbx->SetListBoxObserver( this );
-            lbx->CreateScrollBarFrameL( ETrue );
-            lbx->ScrollBarFrame()->SetScrollBarVisibilityL(
-                CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-            // Obtain reference to listbox model's item text array:
-            iItemTextArray = STATIC_CAST( CDesCArray*,
-                lbx->Model()->ItemTextArray() );
-            }
-            break;
-            
-        case EGSListBoxTypeDouble2Large:
-            {
-            TInt flags = 0;
-            CAknDouble2LargeStyleListBox* lbx = 
-                new( ELeave ) CAknDouble2LargeStyleListBox;
-            iListBox = lbx;
-            lbx->ConstructL( this, flags );
-            lbx->SetContainerWindowL( *this );
-            lbx->SetListBoxObserver( this );
-            lbx->CreateScrollBarFrameL( ETrue );
-            lbx->ScrollBarFrame()->SetScrollBarVisibilityL(
-                CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-            // Obtain reference to listbox model's item text array:
-            iItemTextArray = STATIC_CAST( CDesCArray*,
-                lbx->Model()->ItemTextArray() );
-            }
-            break;
-
-        case EGSListBoxTypeDoubleLarge:
-            {
-            TInt flags = 0;
-            CAknDoubleLargeStyleListBox* lbx = 
-                new( ELeave ) CAknDoubleLargeStyleListBox;
-            iListBox = lbx;
-            lbx->ConstructL( this, flags );
-            lbx->SetContainerWindowL( *this );
-            lbx->SetListBoxObserver( this );
-            lbx->CreateScrollBarFrameL( ETrue );
-            lbx->ScrollBarFrame()->SetScrollBarVisibilityL(
-                CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-            // Obtain reference to listbox model's item text array:
-            iItemTextArray = STATIC_CAST( CDesCArray*,
-                lbx->Model()->ItemTextArray() );
-            }
-            break;
-
-        default:
-            break;
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSParentContainer::SelectedPlugin()
-//
-//
-// -----------------------------------------------------------------------------
-//
-CGSPluginInterface* CGSParentContainer::SelectedPlugin()
-    {
-    CGSPluginInterface* plugin = NULL;
-    const TInt index = iListBox->CurrentItemIndex();
-    if ( index >= 0 && index < iVisiblePlugins->Count() )
-        {
-        plugin = iVisiblePlugins->operator[]( index );
-        __GSLOGSTRING2( "[CGSParentContainer] SelectedPlugin 0x%X in index %d",
-            plugin->Id().iUid, index );
-        }
-    return plugin;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSParentContainer::SetSelectedItem()
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSParentContainer::SetSelectedItem( TUid aSelectedItemUid )
-    {
-    __GSLOGSTRING1( "[CGSParentContainer] SetSelectedItem(0x%X)",
-        aSelectedItemUid.iUid );
-
-    if( aSelectedItemUid != KGSNoneSelected )
-        {
-        TInt selectedItemIndex  = 0;
-        for( TInt i = 0; i < iVisiblePlugins->Count(); i++ )
-            {
-            CGSPluginInterface* plugin = iVisiblePlugins->operator[]( i );
-            __GSLOGSTRING2( "[CGSParentContainer] Checking [%d] 0x%X)",
-                i, plugin->Id().iUid );
-            // If plugin is found, select it:
-            if( plugin->Id() == aSelectedItemUid )
-                {
-                __GSLOGSTRING2( "[CGSParentContainer] Match 0x%X in index %d",
-                    plugin->Id().iUid, i );
-                selectedItemIndex = i;
-                break;
-                }
-            }
-        iListBox->SetCurrentItemIndexAndDraw( selectedItemIndex );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSParentContainer::GetHelpContext()
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSParentContainer::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    // This is forwarded to the CGSParentPlugin type class that actually knows
-    // the help context but does not have its own CCoeControl class.
-    iParentPlugin->GetHelpContext( aContext );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::FocusChanged
-//
-// Set focus on the selected listbox. For animated skins feature.
-// ---------------------------------------------------------------------------
-EXPORT_C void CGSParentContainer::FocusChanged( TDrawNow /*aDrawNow*/ )
-    {
-    if( iListBox )
-        {
-        iListBox->SetFocus( IsFocused() );
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CGSParentContainer::HandleSelectionKeyL
-//
-// Behaves like a selection key.
-// ---------------------------------------------------------------------------
-void CGSParentContainer::HandleSelectionKeyL()
-    {
-    HandleListBoxEventL( iListBox,EEventEnterKeyPressed );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSParentContainer::TopPlugin()
-//
-//
-// -----------------------------------------------------------------------------
-//
-CGSPluginInterface* CGSParentContainer::TopPlugin()
-    {
-    CGSPluginInterface* plugin = NULL;
-    const TInt index = iListBox->TopItemIndex();
-    if ( index >= 0 && index < iVisiblePlugins->Count() )
-        {
-        plugin = iVisiblePlugins->operator[]( index );
-        __GSLOGSTRING2( "[CGSParentContainer] TopPlugin 0x%X in index %d",
-            plugin->Id().iUid, index );
-        }
-    return plugin;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CGSParentContainer::SetSelectedItem()
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSParentContainer::SetTopItem( TUid aTopItemUid )
-    {
-    __GSLOGSTRING1( "[CGSParentContainer] SetTopItem(0x%X)",
-        aTopItemUid.iUid );
-
-    if( aTopItemUid != KGSNoneSelected )
-        {
-        TInt topItemIndex  = 0;
-        for( TInt i = 0; i < iVisiblePlugins->Count(); i++ )
-            {
-            CGSPluginInterface* plugin = iVisiblePlugins->operator[]( i );
-            __GSLOGSTRING2( "[CGSParentContainer] Checking [%d] 0x%X)",
-                i, plugin->Id().iUid );
-            // If plugin is found, select it:
-            if( plugin->Id() == aTopItemUid )
-                {
-                __GSLOGSTRING2( "[CGSParentContainer] Match 0x%X in index %d",
-                    plugin->Id().iUid, i );
-                topItemIndex = i;
-                break;
-                }
-            }
-        iListBox->SetTopItemIndex( topItemIndex );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CGSParentContainer::SetListBoxEmptyTextL()
-//
-//Set the empty text of list box.
-// -----------------------------------------------------------------------------
-//
-void CGSParentContainer::SetListBoxEmptyTextL(const TDes& aEmpty )
-    {
-    if ( iListBox )
-        {
-        iListBox->View()->SetListEmptyTextL( aEmpty );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CGSParentContainer::StoreListBoxPositionL
-//
-//Store the exact position of listbox.
-// -----------------------------------------------------------------------------
-//
-void CGSParentContainer::StoreListBoxPositionL( CGSParentPlugin::TListBoxPosition& aPosition )
-	{
-    aPosition.iCurrentItemIndex = iListBox->CurrentItemIndex();
-    aPosition.iItemOffsetInPixels = iListBox->View()->ItemOffsetInPixels();
-    aPosition.iTopItemIndex = iListBox->View()->TopItemIndex();
-	}
-
-// -----------------------------------------------------------------------------
-// CGSParentContainer::RestoreListBoxPositionL
-//
-//Restore the exact position of listbox.
-// -----------------------------------------------------------------------------
-//
-void CGSParentContainer::RestoreListBoxPositionL( const CGSParentPlugin::TListBoxPosition& aPosition, TBool aScreenModeChanged )
-	{
-	if( iListBox->View()->BottomItemIndex()>= aPosition.iCurrentItemIndex )
-		
-		{
-		
- 		if ( aPosition.iCurrentItemIndex >= 0 )
-        {
-        iListBox->SetCurrentItemIndex( aPosition.iCurrentItemIndex );
-        }
-    
-    if ( aScreenModeChanged )
-        {
-        iListBox->View()->VerticalMoveToItemL( aPosition.iCurrentItemIndex,
-                CListBoxView::ESingleSelection );
-        }
-    else
-        {
-        iListBox->View()->SetItemOffsetInPixels( aPosition.iItemOffsetInPixels );
-        iListBox->View()->SetTopItemIndex( aPosition.iTopItemIndex );
-        }
-		}
-    }
-//End of File