/*
* 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: Camcorder sub-menu in General Settings.
*
*/
// INCLUDES
#include <aknlists.h> //for CAknSettingStyleListBox
#include <gscamerapluginrsc.rsg>
#include <camerasettingsplugin.mbg>
#include <gslistbox.h> //for listbox clases
#include <AknIconArray.h> // CAknIconArray
#include <eikclbd.h> // CColumnListBoxData
#include "CamAppUid.h"
#include "GSCamcorderPluginContainer.h"
#include "GSCamcorderPlugin.hrh"
#include "Cam.hrh"
#include "GSCamcorderPlugin.h"
#include <csxhelp/lcam.hlp.hrh>
const TInt KIconArrayGranularity = 2;
// ========================= MEMBER FUNCTIONS ================================
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::ConstructL
// Symbian OS default constructor
// ---------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::ConstructL( const TRect& aRect )
{
RDebug::Print( _L( "[CGSCamcorderPluginContainer]: ConstructL - Begin" ) );
// Construct iListBox
iListBox = new ( ELeave ) CAknSingleLargeStyleListBox;
BaseConstructL( aRect, R_GS_CAMCORDER_VIEW_TITLE, R_CAM_LBX );
LoadIconsL();
RDebug::Print( _L( "[CGSCamcorderPluginContainer]: ConstructL - End" ) );
}
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::~CGSTelPluginContainer
// Destructor
// ---------------------------------------------------------------------------
//
CGSCamcorderPluginContainer::~CGSCamcorderPluginContainer()
{
delete iListboxItemArray;
}
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::UpdateListBoxL
// Update listbox item
// ---------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::UpdateListBoxL( TInt aFeatureId )
{
RDebug::Print(
_L( "[CGSCamcorderPluginContainer]: UpdateListBoxL - Begin" ) );
switch ( aFeatureId )
{
case EVideoSettingsFolder:
MakeVideoSettingsFolderItemL();
break;
case EImageSettingsFolder:
MakeImageSettingsFolderItemL();
break;
default:
break;
}
// Update the listbox
iListBox->HandleItemAdditionL();
RDebug::Print(
_L( "[CGSCamcorderPluginContainer]: UpdateListBoxL - End" ) );
}
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::ConstructListBoxL
// Update listbox item
// ---------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::ConstructListBoxL( TInt aResLbxId )
{
RDebug::Print(
_L( "[CGSCamcorderPluginContainer]: ConstructListBoxL - Begin" ) );
iListBox->ConstructL( this, EAknListBoxSelectionList );
iListboxItemArray = CGSListBoxItemTextArray::NewL( aResLbxId,
*iListBox, *iCoeEnv );
iListBox->Model()->SetItemTextArray( iListboxItemArray );
iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
CreateListBoxItemsL();
RDebug::Print(
_L( "[CGSCamcorderPluginContainer]: ConstructListBoxL - End" ) );
}
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::CreateListBoxItemsL
// Update listbox item
// ---------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::CreateListBoxItemsL()
{
RDebug::Print(
_L( "[CGSCamcorderPluginContainer]: CreateListBoxItemsL - Begin" ) );
MakeVideoSettingsFolderItemL();
MakeImageSettingsFolderItemL();
RDebug::Print(
_L( "[CGSCamcorderPluginContainer]: CreateListBoxItemsL - End" ) );
}
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::CurrentFeatureId
// Get the currently selected feature
// ---------------------------------------------------------------------------
//
TInt CGSCamcorderPluginContainer::CurrentFeatureId() const
{
return iListboxItemArray->CurrentFeature();
}
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::MakeVideoSettingsFolderItemL
// Create Video Settings folder item
// ---------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::MakeVideoSettingsFolderItemL()
{
iListboxItemArray->SetItemVisibilityL( EVideoSettingsFolder,
CGSListBoxItemTextArray::EVisible );
}
// ---------------------------------------------------------------------------
// CGSTelPluginContainer::MakeImageSettingsFolderItemL
// Create Image Settings folder item
// ---------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::MakeImageSettingsFolderItemL()
{
iListboxItemArray->SetItemVisibilityL( EImageSettingsFolder,
CGSListBoxItemTextArray::EVisible );
}
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::GetHelpContext
// Get help for this view
// ---------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::GetHelpContext(
TCoeHelpContext& aContext ) const
{
#ifdef __SERIES60_HELP
aContext.iMajor = TUid::Uid( KCameraappUID );
aContext.iContext = KLCAM_HLP_SETTINGS;
#endif
}
// ----------------------------------------------------------------------------
// CGSCamcorderPluginContainer::LoadIconsL
// Load icon bitmaps.
// ----------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::LoadIconsL()
{
RDebug::Print( _L( "[CGSCamcorderPluginContainer]: LoadIconsL - Begin" ) );
CEikColumnListBox* listbox = static_cast<CEikColumnListBox*>( iListBox );
// Delete the old icon array, if any
delete listbox->ItemDrawer()->ColumnData()->IconArray();
listbox->ItemDrawer()->ColumnData()->SetIconArray( NULL );
// Construct a new CAknIconArray for iListBox
CAknIconArray* icons =
new ( ELeave ) CAknIconArray( KIconArrayGranularity );
CleanupStack::PushL( icons );
TParse* fp = new(ELeave) TParse();
CleanupStack::PushL( fp );
TInt err = fp->Set(KDirAndFile, &KDC_APP_BITMAP_DIR, NULL);
if (err != KErrNone)
{
User::Leave(err);
}
TBuf<KMaxFileName> fileName = fp->FullName();
CleanupStack::PopAndDestroy( fp ); //fp
AppendIconToArrayL(
icons,
KAknsIIDQgnPropSetCamsImageSub,
fileName,
EMbmCamerasettingspluginQgn_prop_set_cams_image_sub,
EMbmCamerasettingspluginQgn_prop_set_cams_image_sub_mask );
AppendIconToArrayL(
icons,
KAknsIIDQgnPropSetCamsVideoSub,
fileName,
EMbmCamerasettingspluginQgn_prop_set_cams_video_sub,
EMbmCamerasettingspluginQgn_prop_set_cams_video_sub_mask );
CleanupStack::Pop( icons ); // icons
listbox->ItemDrawer()->ColumnData()->SetIconArray( icons );
RDebug::Print( _L( "[CGSCamcorderPluginContainer]: LoadIconsL - End" ) );
}
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::SizeChanged
// Set the size and position of component controls.
// ---------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::SizeChanged()
{
if ( iListBox )
{
iListBox->SetRect( Rect() );
}
}
// ----------------------------------------------------------------------------
// CGSCamcorderPluginContainer::FocusChanged
//Focus changed for listbox item.
// ----------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::FocusChanged( TDrawNow aDrawNow )
{
CCoeControl::FocusChanged( aDrawNow );
if( iListBox )
{
iListBox->SetFocus( IsFocused(), aDrawNow );
}
}
// ---------------------------------------------------------------------------
// CGSCamcorderPluginContainer::AppendIconToArrayL
// Load a possibly skinned icon (with mask) and append it to an
// icon array.
// ---------------------------------------------------------------------------
//
void CGSCamcorderPluginContainer::AppendIconToArrayL( CAknIconArray* aArray,
const TAknsItemID& aID,
const TDesC& aMbmFile,
TInt aBitmapId,
TInt aMaskId )
{
CGulIcon* icon = AknsUtils::CreateGulIconL(
AknsUtils::SkinInstance(), aID, aMbmFile,
aBitmapId, aMaskId );
CleanupStack::PushL( icon );
aArray->AppendL( icon );
CleanupStack::Pop( icon ); // icon
}
// End of File